IDontWantAName
Commander
- Registriert
- Dez. 2011
- Beiträge
- 2.421
Ab Windows 11 23H2 gibt es eine API mit WDDM 3.2 um MUX zu Erkennen und die Stabilität der MUX Erkennung zu ermitteln:
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_2) //RC
typedef enum _DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL
{
// Indicates driver has no support for MDM
DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL_NONE = 0,
// Indicates the driver has development support for MDM,
// quality not considered good enough for development purposes only
DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL_DEVELOPMENT = 1,
// Indicates the driver has experimental support for MDM,
// quality not considered good enough for general customer rollout
DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL_EXPERIMENTAL = 2,
// Indicates the driver has full support for MDM,
// quality considered good enough for general customer rollout
DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL_FULL = 3,
} DXGK_DISPLAYMUX_SUPPORT_LEVEL, *PDXGK_DISPLAYMUX_SUPPORT_LEVEL;
typedef enum _DXGK_DISPLAYMUX_RUNTIME_STATUS
{
// Indicates the GPU supports MDM and any driver obtained any
// required information from the system
DXGK_DISPLAYMUX_RUNTIME_STATUS_OK = 0,
// Indicates the GPU does not support MDM
DXGK_DISPLAYMUX_RUNTIME_STATUS_NO_GPU_SUPPORT = 1,
// Indicates the driver could not obtain some non-critical information
// from the system, MDM can still function but user experience may be impacted
DXGK_DISPLAYMUX_RUNTIME_STATUS_NON_CRITICAL_SYSTEM_INFO_MISSING = 2,
// Indicates the driver could not obtain some critical information
// from the system, MDM can function without this
DXGK_DISPLAYMUX_RUNTIME_STATUS_CRITICAL_SYSTEM_INFO_MISSING = 3,
} DXGK_DISPLAYMUX_RUNTIME_STATUS, *PDXGK_DISPLAYMUX_RUNTIME_STATUS;
Dann kann man den MUX Statusänderung erkennen:
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
typedef struct _DXGK_CONNECTION_MONITOR_CONNECT_FLAGS
{
union
{
struct
{
UINT Usb4DisplayPortMonitor : 1;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_2)
UINT DisplayMuxConnectionChange : 1;
UINT Reserved :30;
#else
UINT Reserved :31;
#endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_2)
};
UINT Value;
};
} DXGK_CONNECTION_MONITOR_CONNECT_FLAGS;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_2) //RC
typedef enum _DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL
{
// Indicates driver has no support for MDM
DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL_NONE = 0,
// Indicates the driver has development support for MDM,
// quality not considered good enough for development purposes only
DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL_DEVELOPMENT = 1,
// Indicates the driver has experimental support for MDM,
// quality not considered good enough for general customer rollout
DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL_EXPERIMENTAL = 2,
// Indicates the driver has full support for MDM,
// quality considered good enough for general customer rollout
DXGK_DISPLAYMUX_DRIVER_SUPPORT_LEVEL_FULL = 3,
} DXGK_DISPLAYMUX_SUPPORT_LEVEL, *PDXGK_DISPLAYMUX_SUPPORT_LEVEL;
typedef enum _DXGK_DISPLAYMUX_RUNTIME_STATUS
{
// Indicates the GPU supports MDM and any driver obtained any
// required information from the system
DXGK_DISPLAYMUX_RUNTIME_STATUS_OK = 0,
// Indicates the GPU does not support MDM
DXGK_DISPLAYMUX_RUNTIME_STATUS_NO_GPU_SUPPORT = 1,
// Indicates the driver could not obtain some non-critical information
// from the system, MDM can still function but user experience may be impacted
DXGK_DISPLAYMUX_RUNTIME_STATUS_NON_CRITICAL_SYSTEM_INFO_MISSING = 2,
// Indicates the driver could not obtain some critical information
// from the system, MDM can function without this
DXGK_DISPLAYMUX_RUNTIME_STATUS_CRITICAL_SYSTEM_INFO_MISSING = 3,
} DXGK_DISPLAYMUX_RUNTIME_STATUS, *PDXGK_DISPLAYMUX_RUNTIME_STATUS;
Dann kann man den MUX Statusänderung erkennen:
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
typedef struct _DXGK_CONNECTION_MONITOR_CONNECT_FLAGS
{
union
{
struct
{
UINT Usb4DisplayPortMonitor : 1;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_2)
UINT DisplayMuxConnectionChange : 1;
UINT Reserved :30;
#else
UINT Reserved :31;
#endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_2)
};
UINT Value;
};
} DXGK_CONNECTION_MONITOR_CONNECT_FLAGS;