DXGK_DRIVERCAPS 结构 (d3dkmddi.h)
DXGK_DRIVERCAPS 结构描述显示微型端口驱动程序的功能,该驱动程序通过调用其 DxgkDdiQueryAdapterInfo 函数提供。
语法
typedef struct _DXGK_DRIVERCAPS {
[out] PHYSICAL_ADDRESS HighestAcceptableAddress;
[out] UINT MaxAllocationListSlotId;
[out] SIZE_T ApertureSegmentCommitLimit;
[out] UINT MaxPointerWidth;
[out] UINT MaxPointerHeight;
[out] DXGK_POINTERFLAGS PointerCaps;
[out] UINT InterruptMessageNumber;
[out] UINT NumberOfSwizzlingRanges;
[out] UINT MaxOverlays;
union {
[out] DXGK_GAMMARAMPCAPS GammaRampCaps;
[out] DXGK_COLORTRANSFORMCAPS ColorTransformCaps;
};
[out] DXGK_PRESENTATIONCAPS PresentationCaps;
[out] UINT MaxQueuedFlipOnVSync;
[out] DXGK_FLIPCAPS FlipCaps;
[out] DXGK_VIDSCHCAPS SchedulingCaps;
[out] DXGK_VIDMMCAPS MemoryManagementCaps;
[out] DXGK_GPUENGINETOPOLOGY GpuEngineTopology;
[out] DXGK_WDDMVERSION WDDMVersion;
DXGK_VIRTUALADDRESSCAPS_DEPRECATED Reserved;
DXGK_DMABUFFERCAPS_DEPRECATED Reserved1;
[out] D3DKMDT_PREEMPTION_CAPS PreemptionCaps;
[out] BOOLEAN SupportNonVGA;
[out] BOOLEAN SupportSmoothRotation;
[out] BOOLEAN SupportPerEngineTDR;
[out] BOOLEAN SupportDirectFlip;
[out] BOOLEAN SupportMultiPlaneOverlay;
[out] BOOLEAN SupportRuntimePowerManagement;
[out] BOOLEAN SupportSurpriseRemovalInHibernation;
[out] BOOLEAN HybridDiscrete;
[out] UINT MaxOverlayPlanes;
BOOLEAN HybridIntegrated;
D3DGPU_VIRTUAL_ADDRESS InternalGpuVirtualAddressRangeStart;
D3DGPU_VIRTUAL_ADDRESS InternalGpuVirtualAddressRangeEnd;
BOOLEAN SupportSurpriseRemoval;
[out] BOOLEAN SupportMultiPlaneOverlayImmediateFlip;
[out] BOOLEAN CursorScaledWithMultiPlaneOverlayPlane0;
BOOLEAN HybridAcpiChainingRequired;
[out] UINT MaxQueuedMultiPlaneOverlayFlipVSync;
union {
struct {
UINT SupportContextlessPresent : 1;
UINT Detachable : 1;
UINT VirtualGpuOnly : 1;
UINT ComputeOnly : 1;
UINT IndependentVidPnVSyncControl : 1;
UINT NoHybridDiscreteDListDllSupport : 1;
UINT DisplayableSupport : 1;
UINT NoHybridDiscreteDListDllMuxSupport : 1;
UINT CursorDoesNotSupportXorBlendWithMultiPlaneOverlay : 1;
#if ...
UINT Reserved : 23;
#elif
UINT Reserved : 25;
#elif
UINT Reserved : 26;
#elif
UINT Reserved : 27;
#elif
UINT Reserved : 28;
#elif
UINT Reserved : 29;
#else
UINT Reserved : 30;
#endif
};
UINT Value;
} MiscCaps;
UINT MaxHwQueuedFlips;
DXGK_HWQUEUEDFLIP_CAPS HwQueuedFlipCaps;
} DXGK_DRIVERCAPS;
成员
[out] HighestAcceptableAddress
PHYSICAL_ADDRESS数据类型 (定义为LARGE_INTEGER) ,指示要使用的系统内存 (RAM) 可接受的最高物理地址。
[out] MaxAllocationListSlotId
分配列表槽标识符的最大数目。 分配列表槽表示分配在直接内存访问 (DMA) 缓冲中定向的位置。
[out] ApertureSegmentCommitLimit
显示微型端口驱动程序支持映射到光圈段的物理内存的最大字节数。 视频内存管理器不会将比 ApertureSegmentCommitLimit 指定的限制更多的物理内存映射到光圈段。
[out] MaxPointerWidth
鼠标指针的最大宽度(以像素为单位)。
[out] MaxPointerHeight
鼠标指针的最大高度(以扫描行为单位)。
[out] PointerCaps
一个DXGK_POINTERFLAGS结构,用于标识驱动程序可以支持的位字段标志中的鼠标指针功能。
[out] InterruptMessageNumber
如果使用消息信号中断,并且驱动程序从对应于固定消息号的中断处理程序调用 DxgkCbNotifyInterrupt 函数,则使用的消息号。
[out] NumberOfSwizzlingRanges
驱动程序可以支持的重排范围数。
[out] MaxOverlays
驱动程序可以支持的最大覆盖数。
[out] GammaRampCaps
一种DXGK_GAMMARAMPCAPS结构,用于标识驱动程序可以支持的位字段标志中的 gamma-ramp 功能。
[out] ColorTransformCaps
用于描述显示管道的伽玛和颜色空间转换功能的标志。 注意:此字段替换此结构的 WDDM 2.2 前版本中的 GammaRampCaps。
[out] PresentationCaps
一个DXGK_PRESENTATIONCAPS结构,用于标识驱动程序可以支持的位字段标志中的表示功能。
[out] MaxQueuedFlipOnVSync
在图形硬件上可以排队和挂起的翻转数。 每次 VSync 中断时,每次翻转都会锁定到数模转换器 (DAC) ,因为图形硬件排入翻转队列。
[out] FlipCaps
一个DXGK_FLIPCAPS结构,用于标识驱动程序可以支持的位字段标志中的翻转功能。
[out] SchedulingCaps
一种 DXGK_VIDSCHCAPS 结构,用于标识驱动程序可以支持的图形处理单元 (GPU) 计划功能(位字段标志)。
[out] MemoryManagementCaps
一个DXGK_VIDMMCAPS结构,用于标识驱动程序可以支持的视频内存管理功能。
[out] GpuEngineTopology
描述驱动程序可以支持的 GPU 引擎拓扑的 DXGK_GPUENGINETOPOLOGY 结构。
[out] WDDMVersion
标识 WDDM 版本的 DXGK_WDDMVERSION 值。 从 Windows 7 开始受支持。
如果驱动程序 (DXGKDDI_INTERFACE_VERSION ≥ DXGKDDI_INTERFACE_VERSION_WIN7) 支持 Windows 7 或更高版本的功能,则此成员是保留的,应设置为零。
对于不支持 Windows 7 或更高版本功能的较旧驱动程序, (DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WIN7) :
- 若要使用 Windows 7 WDK (版本 7600) 编译驱动程序,请将此成员设置为 DXGKDDI_WDDMv1。
- 若要使用 Windows 8 WDK 编译驱动程序,请将此成员设置为 DXGKDDI_WDDMv1_2。
Reserved
保留。
Reserved1
保留。
[out] PreemptionCaps
一个D3DKMDT_PREEMPTION_CAPS结构,描述用于抢占驱动程序支持的 GPU 图形请求的功能。
支持从Windows 8开始。
[out] SupportNonVGA
如果 为 TRUE,则驱动程序支持使用 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数重置显示设备并释放当前开机自测试 (POST) 设备的所有权。
支持从Windows 8开始。
[out] SupportSmoothRotation
如果 为 TRUE,则驱动程序支持使用 DxgkDdiUpdateActiveVidPnPresentPath 函数更新适配器上的路径旋转,而不需要创建新的 VidPN 和设置。
支持从Windows 8开始。
[out] SupportPerEngineTDR
如果 为 TRUE,则驱动程序支持重置单个 GPU 引擎。
如果设置了此成员,则显示微型端口驱动程序必须实现 DxgkDdiQueryDependentEngineGroup、 DxgkDdiQueryEngineStatus 和 DxgkDdiResetEngine 函数。
支持从Windows 8开始。
[out] SupportDirectFlip
如果 为 TRUE,则驱动程序支持创建和打开共享托管主分配。 值为 TRUE 还表示以下情况:
- 显示微型端口驱动程序保证在调用 DxgkDdiSetVidPnSourceAddress 函数时,驱动程序不允许将视频内存翻转为不兼容的分配。
- 用户模式驱动程序先验证直接翻转资源,然后桌面 Windows 管理器 (DWM) 使用这些资源。
只有 DWM 才能将视频内存翻转到直接翻转资源。 DWM 使用用户模式 CheckDirectFlipSupport 函数验证这些资源。
支持从Windows 8开始。
[out] SupportMultiPlaneOverlay
如果 为 TRUE,则显示微型端口驱动程序支持多平面覆盖,并且驱动程序还应为 MaxOverlayPlanes 成员设置值。 如果 为 FALSE,则 DirectX 图形内核子系统不会调用多平面覆盖函数。
支持从Windows 8.1开始。
[out] SupportRuntimePowerManagement
如果 为 TRUE,则显示微型端口驱动程序支持运行时电源管理。
如果设置了此成员,则显示微型端口驱动程序必须实现 DxgkDdiSetPowerComponentFState 和 DxgkDdiPowerRuntimeControlRequest 函数。
支持从Windows 8开始。
[out] SupportSurpriseRemovalInHibernation
如果 为 TRUE,则在处于休眠模式的外部显示设备与系统断开连接后,显示微型端口驱动程序支持清理软件资源。
如果设置了此成员,则显示微型端口驱动程序必须实现 DxgkDdiNotifySurpriseRemoval 函数,并将 RemoveType 参数设置为 DxgkRemovalHibernation。
有关详细信息,请参阅 在混合系统中使用跨适配器资源。
支持从Windows 8开始。
[out] HybridDiscrete
如果 为 TRUE,则显示微型端口驱动程序是 混合系统中的离散 GPU。
如果设置了此成员,则显示微型端口驱动程序应:
- 支持 WDDM 1.3
- 支持跨适配器资源
- 没有显示输出
有关详细信息,请参阅 在混合系统中使用跨适配器资源。
支持从Windows 8.1开始。
[out] MaxOverlayPlanes
如果 SupportRuntimePowerManagement 为 TRUE,则显示微型端口驱动程序应将 MaxOverlayPlanes 设置为可同时显示在单个输出(包括主图面)上可支持的最大覆盖平面数。 如果在运行模式更改时可用平面的数量会更改,则驱动程序应使用反映最佳方案的数字。
支持从Windows 8.1开始。
HybridIntegrated
指示当前 GPU 是否为混合 GPU。
InternalGpuVirtualAddressRangeStart
内部 GPU 虚拟地址范围开始。
InternalGpuVirtualAddressRangeEnd
内部 GPU 虚拟地址范围结束。
SupportSurpriseRemoval
如果为 TRUE,则显示微型端口驱动程序支持意外删除。
[out] SupportMultiPlaneOverlayImmediateFlip
如果为 TRUE,则显示微型端口驱动程序支持立即翻转到多平面覆盖平面,只要更改的唯一值是要显示的物理地址。
[out] CursorScaledWithMultiPlaneOverlayPlane0
如果为 TRUE,则显示硬件将始终对硬件光标应用与应用每个平面多平面覆盖拉伸时应用于平面 0 相同的比例系数。
HybridAcpiChainingRequired
指示此混合离散驱动程序需要链接集成适配器上触发的 ACPI 事件。
[out] MaxQueuedMultiPlaneOverlayFlipVSync
指示在单个 Vsync 时间段内可以对单个平面进行更新的最大数目,其中最新的更新将替代以前的更新。 如果驱动程序支持 硬件翻转队列,OS 将忽略此值。
MiscCaps
其他功能。
MiscCaps.SupportContextlessPresent
支持 DDI 调用中的 null 上下文。 设置此值后,OS 将在现有相关 DDI 中传递 NULL 上下文。 从 WDDM 2.4 开始支持。
MiscCaps.Detachable
可分离,即热插拔。 如果适配器可热插拔,驱动程序将在适配器初始化期间设置此位。 从 WDDM 2.4 开始支持。
MiscCaps.VirtualGpuOnly
主机上的 Direct3D 应用程序不应使用该适配器。 从 WDDM 2.5 开始支持。
MiscCaps.ComputeOnly
通过呈现 WDDM 的仅限呈现的设备功能,支持 Compute-Only 设备。 从 Windows 10 版本 1901 开始支持 (WDDM 2.6)
MiscCaps.IndependentVidPnVSyncControl
设置此功能的驱动程序应读取 DdiControlInterrupt3 中的指定 VidPnSourceId,并在上述 VidPnSourceId 上控制 VSync。 从 Windows 10 版本 2004 开始支持 (WDDM 2.7) 。
MiscCaps.NoHybridDiscreteDListDllSupport
指示驱动程序是否支持 d-List。 从 Windows 10 版本 2004 开始支持 (WDDM 2.8) 。
MiscCaps.DisplayableSupport
指示驱动程序是否支持可显示功能。 从 Windows 11 (WDDM 3.0) 开始支持。
MiscCaps.NoHybridDiscreteDListDllMuxSupport
MiscCaps.CursorDoesNotSupportXorBlendWithMultiPlaneOverlay
MiscCaps.Reserved
保留。
MiscCaps.Value
访问 MiscCaps 位的替代方法。
MaxHwQueuedFlips
驱动程序支持的最大硬件翻转队列数。 如果 OS 允许硬件翻转队列支持,驱动程序可以将 MaxHwQueuedFlips 设置为大于 1 的值。 在 Windows Server 2022 中添加 (WDDM 2.9) ;从 Windows 11 (WDDM 3.0) 开始受支持。
HwQueuedFlipCaps
描述硬件翻转队列功能的 DXGK_HWQUEUEDFLIP_CAPS 值。 在 Windows Server 2022 中添加 (WDDM 2.9) ;从 Windows 11 (WDDM 3.0) 开始受支持。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |
另请参阅
DxgkDdiUpdateActiveVidPnPresentPath
DxgkDdiStopDeviceAndReleasePostDisplayOwnership
DxgkDdiSetPowerComponentFState
DxgkDdiPowerRuntimeControlRequest