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


структура DXGKARG_RENDER (d3dkmddi.h)

Структура DXGKARG_RENDER описывает элементы для создания буфера прямого доступа к памяти (DMA) из буфера команд.

Синтаксис

typedef struct _DXGKARG_RENDER {
  [in]     const VOID               *pCommand;
  [in]     UINT                     CommandLength;
  [out]    VOID                     *pDmaBuffer;
  [in]     UINT                     DmaSize;
  [in]     VOID                     *pDmaBufferPrivateData;
  [in]     UINT                     DmaBufferPrivateDataSize;
  [in]     DXGK_ALLOCATIONLIST      *pAllocationList;
  [in]     UINT                     AllocationListSize;
  [in]     D3DDDI_PATCHLOCATIONLIST *pPatchLocationListIn;
  [in]     UINT                     PatchLocationListInSize;
  [in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
  [in]     UINT                     PatchLocationListOutSize;
  [in/out] UINT                     MultipassOffset;
  [in]     UINT                     DmaBufferSegmentId;
  [in]     PHYSICAL_ADDRESS         DmaBufferPhysicalAddress;
} DXGKARG_RENDER;

Члены

[in] pCommand

Указатель на начало буфера команд.

Примечание При вызове DxgkDdiRender драйвер мини-порта дисплея должен проверить буфер. Сведения о том, как драйвер должен получить доступ к этому члену, см. в разделе Примечания в DxgkDdiRender .
 

[in] CommandLength

Размер (в байтах) буфера команд, на который указывает pCommand .

[out] pDmaBuffer

Указатель на начало буфера DMA, который выравнивается по 4 КБ. Этот буфер может быть отправлен через DMA графическому оборудованию. Прежде чем драйвер мини-порта дисплея возвращается из функций DxgkDdiRender или DxgkDdiRenderKm , драйвер должен задать pDmaBuffer следующий пустой байт, следующий за последним байтом, в который записан драйвер, или драйвер должен указать расположение (один байт за пределами буферного пространства), если больше места нет. Это расположение было бы правильным, если бы буфер был достаточно большим.

[in] DmaSize

Размер (в байтах) буфера DMA, на который указывает pDmaBuffer .

[in] pDmaBufferPrivateData

Указатель на структуру частных данных, расположенную в драйвере, которая используется для создания буфера DMA, на который указывает pDmaBuffer .

[in] DmaBufferPrivateDataSize

Количество байтов, оставшихся в структуре частных данных, на которые указывает pDmaBufferPrivateData для текущей операции.

[in] pAllocationList

Массив структур DXGK_ALLOCATIONLIST для списка выделений, на которые ссылается буфер DMA. Каждое выделение, на которое ссылается ссылка, должно отображаться один раз для оптимальной производительности.

[in] AllocationListSize

Доступное количество элементов в массиве, указанное в pAllocationList , которое представляет количество спецификаций выделения, отправляемых через DMA графическому оборудованию.

[in] pPatchLocationListIn

Массив D3DDDI_PATCHLOCATIONLIST структур для списка расположений исправлений, который драйвер отображения пользовательского режима предоставляет при вызове функции pfnRenderCb .

Примечание При вызове DxgkDdiRender драйвер мини-порта дисплея должен проверить буфер. Сведения о том, как драйвер должен получить доступ к этому члену, см. в разделе Примечания в DxgkDdiRender .
 

[in] PatchLocationListInSize

Количество элементов в списке расположений исправлений, которое указывает pPatchLocationListIn .

[in/out] pPatchLocationListOut

Массив D3DDDI_PATCHLOCATIONLIST структур для списка расположения исправлений, который заполняется драйвером мини-порта дисплея. Прежде чем драйвер возвратит из вызова своих функций DxgkDdiRender или DxgkDdiRenderKm , драйвер должен задать pPatchLocationListOut для следующего элемента D3DDDI_PATCHLOCATIONLIST , который следует за последним элементом D3DDDI_PATCHLOCATIONLIST , обновленным драйвером.

[in] PatchLocationListOutSize

Количество элементов в списке расположений исправлений, которое указывает pPatchLocationListOut . Драйвер мини-порта дисплея не требуется для заполнения всех элементов во всем списке; Драйвер должен использовать только элементы, необходимые для описания расположения исправления в буфере DMA.

[in/out] MultipassOffset

Значение UINT, указывающее ход выполнения операции отрисовки, если функции DxgkDdiRender или DxgkDdiRenderKm драйвера минипорта должны возвращать STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER для получения нового буфера DMA. При первом вызове функции DxgkDdiRender или DxgkDdiRenderKm драйвера с новым буфером команд MultipassOffset инициализируется нулевым значением. Прежде чем драйвер возвращается из вызовов DxgkDdiRender или DxgkDdiRenderKm , драйвер задает этот член для отображения хода перевода для последующего вызова DxgkDdiRender или DxgkDdiRenderKm с тем же буфером команд. Подсистема ядра графики DirectX больше не изменяет значение.

[in] DmaBufferSegmentId

Идентификатор сегмента памяти, в который был помещен буфер DMA. Если идентификатор равен нулю, буфер DMA неправильно разгружается.

[in] DmaBufferPhysicalAddress

Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий физический адрес, по которому был помещен буфер DMA. Если физический адрес равен нулю, буфер DMA неправильно разгружается.

Комментарии

Поддержка функции DxgkDdiRenderKm добавлена начиная с Windows 7 для видеоадаптеров, поддерживающих аппаратное ускорение GDI.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Верхняя часть d3dkmddi.h (включая D3dkmddi.h)

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

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DxgkDdiRender

DxgkDdiRenderKm

pfnRenderCb