структура 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
Указатель на начало буфера команд.
[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 .
[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) |