feat: expand Intel GPU display management
This commit is contained in:
@@ -193,6 +193,10 @@ namespace montauk::abi {
|
||||
static constexpr uint64_t SYS_SDR_SETPARAM = 147; // (handle, param, value)
|
||||
static constexpr uint64_t SYS_SDR_GETPARAM = 148; // (handle, param) -> value
|
||||
static constexpr uint64_t SYS_SETUNIXTIME = 153;
|
||||
static constexpr uint64_t SYS_DISPLAYINFO = 154;
|
||||
static constexpr uint64_t SYS_DISPLAYMODES = 155;
|
||||
static constexpr uint64_t SYS_DISPLAYSETMODE = 156;
|
||||
static constexpr uint64_t SYS_DISPLAYBRIGHTNESS = 157;
|
||||
|
||||
// Tunable parameters (for SYS_SDR_SETPARAM / SYS_SDR_GETPARAM).
|
||||
static constexpr int SDR_PARAM_FREQ = 0; // center frequency, Hz
|
||||
@@ -282,6 +286,51 @@ namespace montauk::abi {
|
||||
uint64_t userAddr; // filled by SYS_FBMAP (0 until mapped)
|
||||
};
|
||||
|
||||
enum DisplayConnectorType : uint8_t {
|
||||
DISPLAY_CONNECTOR_UNKNOWN = 0,
|
||||
DISPLAY_CONNECTOR_EDP = 1,
|
||||
DISPLAY_CONNECTOR_DP = 2,
|
||||
DISPLAY_CONNECTOR_HDMI = 3,
|
||||
DISPLAY_CONNECTOR_DVI = 4,
|
||||
DISPLAY_CONNECTOR_VGA = 5,
|
||||
DISPLAY_CONNECTOR_LVDS = 6,
|
||||
};
|
||||
|
||||
static constexpr uint32_t DISPLAY_CAP_MODESET = 1u << 0;
|
||||
static constexpr uint32_t DISPLAY_CAP_EDID = 1u << 1;
|
||||
static constexpr uint32_t DISPLAY_CAP_BRIGHTNESS = 1u << 2;
|
||||
static constexpr uint32_t DISPLAY_CAP_PAGE_FLIP = 1u << 3;
|
||||
static constexpr uint32_t DISPLAY_CAP_VBLANK_IRQ = 1u << 4;
|
||||
static constexpr uint32_t DISPLAY_CAP_SAFE_SWITCH = 1u << 5;
|
||||
|
||||
static constexpr uint32_t DISPLAY_MODE_PREFERRED = 1u << 0;
|
||||
static constexpr uint32_t DISPLAY_MODE_CURRENT = 1u << 1;
|
||||
static constexpr uint32_t DISPLAY_MODE_DRIVER_VALID = 1u << 2;
|
||||
|
||||
struct DisplayModeInfo {
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t refreshMilliHz;
|
||||
uint32_t pixelClockKHz;
|
||||
uint32_t flags;
|
||||
uint32_t _pad;
|
||||
};
|
||||
|
||||
struct DisplayInfo {
|
||||
uint32_t capabilities;
|
||||
uint32_t modeCount;
|
||||
int32_t currentMode;
|
||||
int32_t brightness;
|
||||
uint16_t deviceId;
|
||||
uint8_t generation;
|
||||
uint8_t connectorType;
|
||||
uint8_t connected;
|
||||
uint8_t _pad0[3];
|
||||
char gpuName[64];
|
||||
char connectorName[32];
|
||||
char monitorName[64];
|
||||
};
|
||||
|
||||
struct SysInfo {
|
||||
char osName[32];
|
||||
char osVersion[32];
|
||||
|
||||
@@ -326,6 +326,21 @@ namespace montauk {
|
||||
// Framebuffer
|
||||
inline void fb_info(montauk::abi::FbInfo* info) { syscall1(montauk::abi::SYS_FBINFO, (uint64_t)info); }
|
||||
inline void* fb_map() { return (void*)syscall0(montauk::abi::SYS_FBMAP); }
|
||||
inline int display_info(montauk::abi::DisplayInfo* out) {
|
||||
return (int)syscall1(montauk::abi::SYS_DISPLAYINFO, (uint64_t)out);
|
||||
}
|
||||
inline int display_modes(montauk::abi::DisplayModeInfo* out, int maxCount) {
|
||||
return (int)syscall2(montauk::abi::SYS_DISPLAYMODES,
|
||||
(uint64_t)out, (uint64_t)maxCount);
|
||||
}
|
||||
inline int display_set_mode(int modeIndex) {
|
||||
return (int)syscall1(montauk::abi::SYS_DISPLAYSETMODE,
|
||||
(uint64_t)modeIndex);
|
||||
}
|
||||
inline int display_brightness(int percent = -1) {
|
||||
return (int)syscall1(montauk::abi::SYS_DISPLAYBRIGHTNESS,
|
||||
(uint64_t)(int64_t)percent);
|
||||
}
|
||||
|
||||
// Arguments
|
||||
inline int getargs(char* buf, uint64_t maxLen) {
|
||||
|
||||
Reference in New Issue
Block a user