структура DXGKARG_SUBMITCOMMANDTOHWQUEUE (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;

Члены

[in] hHwQueue

Очередь оборудования, в которой отправляется.

HwQueueProgressFenceId

Идентификатор ограждения хода выполнения аппаратной очереди, который будет сигнализировать при выполнении запроса Present Blt на GPU.

DmaBufferVirtualAddress

Виртуальный адрес буфера DMA, который будет выполняться в GPU.

DmaBufferSize

Размер буфера DMA, выполняемого на GPU.

DmaBufferPrivateDataSize

Размер частных данных буфера.

pDmaBufferPrivateData

Двоичные данные, передаваемые обратным вызовом DDI пользовательского режима pfnSubmitToHwQueueCb, для отправки команд из пользовательского режима или для отправки в режиме ядра, например Present Blt, буфер данных частного драйвера, заполненный DdiPresent.

Важно!

Буфер данных частного драйвера будет освобожден после возврата из DxgkDdiSubmitCommandToHwQueue. Это отличается от WDDM 2.0-2.3, где время существования данных частного драйвера продлевается до завершения буфера команд на GPU.

Flags

Для буферов команд, созданных драйвером пользовательского режима, они будут равны нулю. Для буферов команд, созданных драйвером режима ядра DdiPresentToHwQueue, флаг Present будет иметь значение 1.

HwQueueProgressFenceGpuVa

GPU VA (ускорение видео) ограждения, которое будет сигнализировать о завершении буфера DMA.

HwQueueProgressFenceCpuVa

ЦП в режиме ядра для забора, который будет сигнализировать о завершении буфера DMA.

Если для узла, отправляемого в , установлено ограничение RingBufferFenceRelease равным 0, обновление ограждения вставляется драйвером пользовательского режима в качестве последней инструкции в конце буфера DMA или драйвером режима ядра в ответ на вызов DdiSignalMonitoredFence.

Если для узла, отправляемого в , установлено ограничение RingBufferFenceRelease равным 1, обновление ограждения выполняется после того, как буфер DMA больше не будет использоваться gpu или ЦП. Точная механика обновления ограждения — до KMD/GPU. Например, это можно сделать с помощью оборудования процессора управления контекстом при снятии с учета буфера DMA или KMD.

Требования

Требование Значение
Заголовок d3dkmddi.h