Поделиться через


структура 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] Обработка объекта синхронизации GPU, созданного ОС для этой очереди оборудования. Забор хода выполнения используется для синхронизации завершения буфера DMA в этой очереди оборудования. См. примечания.

HwQueueProgressFenceCPUVirtualAddress

[in] Виртуальный адрес ЦП в режиме ядра, который можно использовать для чтения текущего сигнального значения забора хода выполнения очереди оборудования.

HwQueueProgressFenceGPUVirtualAddress

[in] Виртуальный адрес GPU, который можно использовать для чтения или записи значения забора хода выполнения аппаратной очереди. Значение забора хода выполнения очереди должно монотонно увеличиваться при каждой новой отправке в очередь оборудования. Инструкции GPU по обновлению ограждения хода выполнения очереди должны быть вставлены драйвером пользовательского режима в конце отслеживаемого буфера DMA.

Замечания

Для отправки ядра HWQueues ОС будет выделять забор хода выполнения в качестве собственного типа забора на gpu, поддерживающих собственные ограждения. При установке флага NativeProgressFence KMD DxgkDdiCreateHwQueue должен прочитать соответствующее hHwQueueNativeProgresSFence, указывающее дескриптор драйвера для объекта собственного ограждения, ранее созданного в DxgkDdiCreateNativeFence. Если флаг NativeProgressFence имеет значение FALSE, то этот забор хода выполнения HWQueue является обычным отслеживаемым объектом забора, и KMD должен прочитать устаревшую hHwQueueProgressFence поле, как и раньше.

При создании собственного забора для HWQueue ОС также задается D3DKMT_CREATEHWQUEUE::Flags.NativeProgressFence значение TRUE, чтобы среда выполнения также знала, что забор хода выполнения HWQueue был выделен в качестве собственного забора.

Для отправки пользователем HWQueues ОС выделяет свой забор хода выполнения в качестве собственного забора в DxgkDdiCreateHwQueueForUserModeSubmission() по определению.

Примечание о совместимости драйверов: Dxgkrnl будет записываться только в поле hHwQueueNativeProgressFence на драйверах, поддерживающих NativeGpuFence. Это гарантирует, что ОС будет ссылаться только на это поле при разработке и будущих драйверах, скомпилированных с этим обновленным заголовком. KMD будет читать это поле только в том случае, если DXGKARG_CREATEHWQUEUE. Flags.NativeProgressFence имеет значение TRUE. Это гарантирует, что KMD ссылается только на это поле на последние сборки ОС, поддерживающие собственный забор хода выполнения и обновленный заголовок.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 1703 (WDDM 2.2)
заголовка d3dkmddi.h

См. также

DxgkDdiCreateHwQueue