// d3dkmddi.h
typedef struct _DXGKARG_SUBMITCOMMANDTOHWQUEUE {
[in] HANDLE hHwQueue;
UINT64 HwQueueProgressFenceId;
D3DGPU_VIRTUAL_ADDRESS DmaBufferVirtualAddress;
UINT DmaBufferSize;
UINT DmaBufferPrivateDataSize;
VOID *pDmaBufferPrivateData;
DXGK_SUBMITCOMMANDFLAGS Flags;
D3DGPU_VIRTUAL_ADDRESS HwQueueProgressFenceGpuVa;
VOID *HwQueueProgressFenceCpuVa;
} DXGKARG_SUBMITCOMMANDTOHWQUEUE;
View the official Windows Driver Kit DDI referenceNo description available.
Arguments used to submit a command to the hardware queue.
hHwQueue [in]Hardware queue being submitted to.
HwQueueProgressFenceIdHardware queue progress fence ID that will be signaled when the Present Blt is done on the GPU.
DmaBufferVirtualAddressThe virtual address of the DMA buffer to be executed on the GPU.
DmaBufferSizeThe size of the DMA buffer to be executed on the GPU.
DmaBufferPrivateDataSizeThe buffer's private data size.
pDmaBufferPrivateDataBinary data that is passed by the user mode DDI callback pfnSubmitToHwQueueCb, for command submissions from user mode, or for kernel mode submissions such as Present Blt, private driver data buffer filled out by DdiPresent.
[!Important] The private driver data buffer will be freed upon the return from DxgkDdiSubmitCommandToHwQueue. This is different from WDDM 2.0-2.3, where the private driver data lifetime is extended until the command buffer completion on the GPU.
FlagsThese will be set to zero for user mode driver generated command buffers. Kernel mode driver DdiPresentToHwQueue generated command buffers will have Present flag set to 1.
HwQueueProgressFenceGpuVaGPU VA (video acceleration) of the fence that will be signaled upon this DMA buffer completion.
HwQueueProgressFenceCpuVaKernel mode CPU VA of the fence that will be signaled upon this DMA buffer completion.
If the node being submitted to has RingBufferFenceRelease cap set to 0, the fence update is inserted by the user mode driver as the last instruction at the end of the DMA buffer, or for kernel submissions, by the kernel mode driver in response to DdiSignalMonitoredFence call.
If the node being submitted to has RingBufferFenceRelease cap set to 1, the fence update is performed after the DMA buffer is no longer in use by either GPU or CPU. Exact mechanics of the fence update are up to the KMD/GPU. As an example, it can be done by the context management processor hardware when retiring the DMA buffer, or by the KMD.