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 |