DXGKARG_CREATEHWQUEUE结构(d3dkmddi.h)

DXGKARG_CREATEHWQUEUE 结构用于 DxgkDdiCreateHwQueue 来创建硬件队列。

语法

typedef struct _DXGKARG_CREATEHWQUEUE {
  HANDLE                    hHwQueue;
  D3DDDI_CREATEHWQUEUEFLAGS Flags;
  UINT                      PrivateDriverDataSize;
  VOID                      *pPrivateDriverData;
  D3DKMT_HANDLE             hHwQueueProgressFence;
  VOID                      *HwQueueProgressFenceCPUVirtualAddress;
  D3DGPU_VIRTUAL_ADDRESS    HwQueueProgressFenceGPUVirtualAddress;
} DXGKARG_CREATEHWQUEUE;

成员

hHwQueue

[in/out]输入时,Dxgkrnl硬件队列的句柄。 输出时,驱动程序对硬件队列的句柄。

Flags

[in]包含队列创建标志的 D3DDDI_CREATEHWQUEUEFLAGS 结构。

PrivateDriverDataSize

[in]pPrivateDriverData 指向的专用驱动程序数据的大小(以字节为单位)。

pPrivateDriverData

[in/out]指向用户模式驱动程序的 pfnCreateHwContextCb 函数传递的专用驱动程序数据的指针。 由于 pPrivateDriverData 是输出参数,KMD 还可以将专用数据返回给 UMD。

hHwQueueProgressFence

[in]此硬件队列的 OS 创建的 GPU 同步对象的句柄。 进度围栏用于在此硬件队列上同步 DMA 缓冲区完成。 请参阅“备注”。

HwQueueProgressFenceCPUVirtualAddress

[in]内核模式 CPU 虚拟地址,可用于读取硬件队列进度围栏的当前信号值。

HwQueueProgressFenceGPUVirtualAddress

[in]可用于读取或写入硬件队列进度围栏值的 GPU 虚拟地址。 队列进度围栏值必须单调增加,每个新提交到硬件队列。 更新队列进度围栏的 GPU 指令必须由跟踪的 DMA 缓冲区末尾的用户模式驱动程序插入。

言论

对于内核提交 HWQueues,OS 会将进度围栏分配为支持本机围栏的 GPU 上的本机围栏类型。 设置 NativeProgressFence 标志时,KMD 的 DxgkDdiCreateHwQueue 必须读取相应的 hHwQueueNativeProgressFence 字段,该字段指定以前在 DxgkDdiCreateNativeFence中创建的本机围栏对象的驱动程序句柄。 如果 NativeProgressFence 标志为 FALSE,则此 HWQueue 的进度围栏是常规监视的围栏对象,KMD 必须读取旧 hHwQueueProgressFence 字段,如下所示。

为 HWQueue 创建本机围栏后,OS 还将 D3DKMT_CREATEHWQUEUE::Flags.NativeProgressFence 设置为 TRUE,以便运行时还知道 HWQueue 的进度围栏已分配为本机围栏。

对于用户提交 HWQueues,OS 将按定义将进度围栏分配为 DxgkDdiCreateHwQueueForUserModeSubmission() 中的本机围栏。

有关驱动程序兼容性的说明:Dxgkrnl 将仅写入支持 NativeGpuFence cap 的驱动程序上的 hHwQueueNativeProgressFence 字段。 这可确保 OS 仅在开发中引用此字段,以及使用此更新标头编译的未来驱动程序。 KMD 仅在 DXGKARG_CREATEHWQUEUE 时读取此字段。Flags.NativeProgressFence 为 TRUE。 这可确保 KMD 仅引用支持本机进度围栏和此更新标头的最新 OS 版本上的此字段。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1703 (WDDM 2.2)
标头 d3dkmddi.h

另请参阅

DxgkDdiCreateHwQueue