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 结构,用于标识驱动程序可以支持的位字段标志中的伽玛渐变功能。

[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 开始支持。

如果驱动程序支持 Windows 7 或更高版本功能(DXGKDDI_INTERFACE_VERSION ≥ DXGKDDI_INTERFACE_VERSION_WIN7),则此成员将保留,应设置为零。

对于不支持 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

描述驱动程序支持的 GPU 图形请求抢占功能 D3DKMDT_PREEMPTION_CAPS 结构。

从 Windows 8 开始支持。

[out] SupportNonVGA

如果 TRUE,驱动程序支持使用 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数重置显示设备和释放当前开机自测试(POST)设备的所有权。

从 Windows 8 开始支持。

[out] SupportSmoothRotation

如果 TRUE,驱动程序支持使用 DxgkDdiUpdateActiveVidentPath 函数更新适配器上的路径轮换,同时不需要创建和设置新的 VidPN。

从 Windows 8 开始支持。

[out] SupportPerEngineTDR

如果 TRUE,驱动程序支持重置单个 GPU 引擎。

如果设置了此成员,则显示微型端口驱动程序必须实现 DxgkDdiQueryDependentEngineGroupDxgkDdiQueryEngineStatus,以及 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,则显示微型端口驱动程序支持运行时电源管理。

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

从 Windows 8 开始支持。

[out] SupportSurpriseRemovalInHibernation

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

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

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

从 Windows 8 开始支持。

[out] HybridDiscrete

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

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

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

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

从 Windows 8.1 开始支持。

[out] MaxOverlayPlanes

如果 SupportRuntimePowerManagementTRUE,则显示微型端口驱动程序应将 MaxOverlayPlanes 设置为单个输出(包括主图面)上可同时显示在单个输出(包括主图面)上的最大覆盖平面数。 如果在作模式发生更改时可用平面数将发生变化,驱动程序应使用反映最佳方案的数字。

从 Windows 8.1 开始支持。

HybridIntegrated

指示当前 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

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