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;
#if ...
      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 引擎。

如果设置了此成员,则显示微型端口驱动程序必须实现 DxgkDdiQueryDependentEngineGroupDxgkDdiQueryEngineStatusDxgkDdiResetEngine 函数。

支持从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,则显示微型端口驱动程序支持运行时电源管理。

如果设置了此成员,则显示微型端口驱动程序必须实现 DxgkDdiSetPowerComponentFStateDxgkDdiPowerRuntimeControlRequest 函数。

支持从Windows 8开始。

[out] SupportSurpriseRemovalInHibernation

如果 为 TRUE,则在处于休眠模式的外部显示设备与系统断开连接后,显示微型端口驱动程序支持清理软件资源。

如果设置了此成员,则显示微型端口驱动程序必须实现 DxgkDdiNotifySurpriseRemoval 函数,并将 RemoveType 参数设置为 DxgkRemovalHibernation

有关详细信息,请参阅 在混合系统中使用跨适配器资源

支持从Windows 8开始。

[out] HybridDiscrete

如果 为 TRUE,则显示微型端口驱动程序是 混合系统中的离散 GPU。

如果设置了此成员,则显示微型端口驱动程序应:

  • 支持 WDDM 1.3
  • 支持跨适配器资源
  • 没有显示输出

有关详细信息,请参阅 在混合系统中使用跨适配器资源

支持从Windows 8.1开始。

[out] MaxOverlayPlanes

如果 SupportRuntimePowerManagementTRUE,则显示微型端口驱动程序应将 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.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

DXGK_VIDSCHCAPS

DxgkDdiStopDeviceAndReleasePostDisplayOwnership

CheckDirectFlipSupport

DXGK_POINTERFLAGS

D3DKMDT_PREEMPTION_CAPS

DXGK_GAMMARAMPCAPS

DxgkDdiQueryAdapterInfo

DXGK_PRESENTATIONCAPS

DXGK_VIDMMCAPS

DXGK_GPUENGINETOPOLOGY

DxgkDdiQueryEngineStatus

DxgkDdiSetPowerComponentFState

DxgkDdiSetVidPnSourceAddress

DxgkDdiResetEngine

DxgkDdiPowerRuntimeControlRequest

DxgkCbNotifyInterrupt

DxgkDdiNotifySurpriseRemoval

DxgkDdiQueryDependentEngineGroup

DXGK_FLIPCAPS

DXGKARG_QUERYADAPTERINFO