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


структура D3DKMT_RENDER (d3dkmthk.h)

Структура D3DKMT_RENDER описывает текущий буфер команд для отрисовки.

Синтаксис

typedef struct _D3DKMT_RENDER {
  union {
    [in]     D3DKMT_HANDLE hDevice;
    [in]     D3DKMT_HANDLE hContext;
  };
  [in]     UINT                                  CommandOffset;
  [in]     UINT                                  CommandLength;
  [in]     UINT                                  AllocationCount;
  [in]     UINT                                  PatchLocationCount;
  [out]    VOID                                  *pNewCommandBuffer;
  [in/out] UINT                                  NewCommandBufferSize;
  [out]    D3DDDI_ALLOCATIONLIST                 *pNewAllocationList;
  [in/out] UINT                                  NewAllocationListSize;
  [out]    D3DDDI_PATCHLOCATIONLIST              *pNewPatchLocationList;
  [in/out] UINT                                  NewPatchLocationListSize;
  [in]     D3DKMT_RENDERFLAGS                    Flags;
  [in]     D3DKMT_ALIGN64 ULONGLONG              PresentHistoryToken;
  [in]     ULONG                                 BroadcastContextCount;
           D3DKMT_HANDLE                         BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
  [out]    ULONG                                 QueuedBufferCount;
  [out]    D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS NewCommandBuffer;
           VOID                                  *pPrivateDriverData;
           UINT                                  PrivateDriverDataSize;
} D3DKMT_RENDER;

Члены

[in] hDevice

Тип данных D3DKMT_HANDLE, представляющий дескриптор режима ядра для устройства, в который отображается буфер команд. Дескриптор устройства предоставляется функции D3DKMTRender в союзе, которая D3DKMT_RENDER содержит для совместимости с Microsoft Direct3D версии 10.

[in] hContext

Тип данных D3DKMT_HANDLE, представляющий дескриптор режима ядра для контекста устройства, в который отображается буфер команд.

[in] CommandOffset

Смещение (в байтах) к первой команде в буфере команд.

[in] CommandLength

Размер буфера команд в байтах, начиная с нуля смещения.

[in] AllocationCount

Количество элементов в отправленном списке выделения.

[in] PatchLocationCount

Количество элементов в списке отправленных исправлений.

[out] pNewCommandBuffer

Указатель на буфер команд, который openGL ICD получает для использования в следующем вызове функции D3DKMTRender. Драйвер всегда должен обновлять указатель на буфер команд после любого вызова D3DKMTRender независимо от того, выполнен ли вызов успешно.

Поддерживается в Windows 7 и более поздних версиях:

[in] Указатель на буфер команд для отрисовки, если флаг RenderKm установлен в элементе Flags.

[in/out] NewCommandBufferSize

Размер в байтах, запрашиваемый OpenGL ICD для следующего буфера команд, если флаг ResizeCommandBuffer битового поля указан в элементе Flags. Если ResizeCommandBuffer не указано, значение в NewCommandBufferSize игнорируется. В выходных данных драйвер получает размер в байтах следующего буфера команд для использования.

В зависимости от текущих условий памяти размер выходных данных может не соответствовать входному размеру.

[out] pNewAllocationList

Массив структур D3DDDI_ALLOCATIONLIST, которые OpenGL ICD получает для использования в качестве списка выделения в следующем вызове функции D3DKMTRender. Драйвер должен всегда обновлять указатель на список выделения после любого вызова D3DKMTRender независимо от того, выполнен ли вызов успешно.

Поддерживается в Windows 7 и более поздних версиях:

[in] Указатель на список выделения, который будет отображаться, если флаг RenderKm установлен в элементе Flags.

[in/out] NewAllocationListSize

Количество элементов, запрашиваемых OpenGL ICD для следующего списка выделения, если флаг ResizeAllocationList битовое поле указывается в элементе Flags. Если ResizeAllocationList не задано, значение в NewAllocationListSize игнорируется. В выходных данных драйвер получает количество элементов, которые будут доступны в массиве выделений при отправке следующего буфера команд.

В зависимости от текущих условий памяти размер выходных данных может не соответствовать входному размеру.

[out] pNewPatchLocationList

Массив структур D3DDDI_PATCHLOCATIONLIST, которые OpenGL ICD получает для использования в качестве списка расположений исправлений в следующем вызове функции D3DKMTRender. Драйвер всегда должен обновлять указатель на список расположений исправлений после любого вызова D3DKMTRender независимо от того, выполнен ли вызов успешно.

[in/out] NewPatchLocationListSize

Количество элементов, запрашиваемых OpenGL ICD для следующего списка расположений исправлений, если флаг ResizePatchLocationList битовое поле указывается в элементе Flags. Если ResizePatchLocationList не указано, значение в NewPatchLocationListSize игнорируется. В выходных данных драйвер получает количество элементов, которые будут доступны в массиве расположений исправлений при отправке следующего буфера команд.

В зависимости от текущих условий памяти размер выходных данных может не соответствовать входному размеру.

[in] Flags

Структура D3DKMT_RENDERFLAGS, указывающая тип буфера команд в флагах битового поля для отрисовки.

[in] PresentHistoryToken

Этот маркер журнала для перенаправленных вызовов для функции драйвера минипорта для отображения dxgkDdiPresent.

текущего маркера журнала — это пакет данных, который приложение отрисовки отправляет, чтобы сообщить диспетчеру окон рабочего стола (DWM), что отрисовка завершена, а буфер обратной цепочки буферов готов к отображению.

[in] BroadcastContextCount

Число дополнительных контекстов в массиве, который broadcastContext указывает.

[in] BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT]

Массив D3DKMT_HANDLE типов данных, представляющих обработчики режима ядра, к дополнительным контекстам для трансляции текущего буфера команд. Константа D3DDDI_MAX_BROADCAST_CONTEXT, определяемая как 64, определяет максимальное количество контекстов, в которые openGL ICD может передавать текущий буфер команд.

Исходный контекст, указывающий элемент hContext, и который владеет буфером команд, не является элементом в массиве BroadcastContext. Например, если массив BroadcastContext содержит один элемент, openGL ICD отправляет буфер команд в собственный контекст (hContext) и передает в этот дополнительный контекст.

[out] QueuedBufferCount

Число буферов DMA, которые помещаются в очередь в контекст, который указывает элемент hContext после отправки.

[out] NewCommandBuffer

Указатель на буфер команд, который openGL ICD получает для использования в следующем вызове функции D3DKMTRender. Драйвер всегда должен обновлять указатель на буфер команд после любого вызова D3DKMTRender независимо от того, выполнен ли вызов успешно.

Поддерживается в Windows 7 и более поздних версиях:

[in] Указатель на буфер команд для отрисовки, если флаг RenderKm установлен в элементе Flags.

pPrivateDriverData

Этот элемент зарезервирован и должен иметь значение нулю.

Этот член доступен начиная с Windows 7.

PrivateDriverDataSize

Этот элемент зарезервирован и должен иметь значение нулю.

Этот член доступен начиная с Windows 7.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista
заголовка d3dkmthk.h (include D3dkmthk.h)

См. также

D3DKMTRender

D3DKMT_RENDERFLAGS

DxgkDdiPresent