структура 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 (включая D3dkmthk.h)

См. также раздел

D3DKMTRender

D3DKMT_RENDERFLAGS

DxgkDdiPresent