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

Структура DXGKARG_PRESENT описывает операцию копирования из источника в основной.

Синтаксис

typedef struct _DXGKARG_PRESENT {
  [out]    VOID                     *pDmaBuffer;
  [in]     UINT                     DmaSize;
  [in]     VOID                     *pDmaBufferPrivateData;
  [in]     UINT                     DmaBufferPrivateDataSize;
  union {
    [in]     DXGK_ALLOCATIONLIST               *pAllocationList;
    [in]     DXGK_PRESENTALLOCATIONINFO        *pAllocationInfo;
    [in]     DXGK_PRESENTMULTIPLANEOVERLAYINFO *pPresentMultiPlaneOverlayInfo;
  };
#if ...
  [in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#if ...
  [in]     UINT                     PatchLocationListOutSize;
  [in]     DXGK_ALLOCATIONLIST      *pAllocationList;
#else
  [in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#endif
#else
  [in]     UINT                     PatchLocationListOutSize;
#endif
  [in/out] UINT                     MultipassOffset;
  [in]     UINT                     Color;
  [in]     RECT                     DstRect;
  [in]     RECT                     SrcRect;
  [in]     UINT                     SubRectCnt;
  [in]     const RECT               *pDstSubRects;
  [in]     D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
  [in]     DXGK_PRESENTFLAGS        Flags;
  [in]     UINT                     DmaBufferSegmentId;
  [in]     PHYSICAL_ADDRESS         DmaBufferPhysicalAddress;
  [in]     UINT                     Reserved;
           D3DGPU_VIRTUAL_ADDRESS   DmaBufferGpuVirtualAddress;
           UINT                     NumSrcAllocations;
           UINT                     NumDstAllocations;
           UINT                     PrivateDriverDataSize;
           PVOID                    pPrivateDriverData;
} DXGKARG_PRESENT;

Члены

[out] pDmaBuffer

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

[in] DmaSize

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

[in] pDmaBufferPrivateData

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

[in] DmaBufferPrivateDataSize

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

[in] pAllocationList

Массив DXGK_ALLOCATIONLIST структур, описывающих источник, назначение или обе для операции копирования. Драйвер обращается к дескрипторе выделения источника через элемент hDeviceSpecificAllocation элемента pAllocationList[DXGK_PRESENT_SOURCE_INDEX] (т. е. элемент 1). Драйвер обращается к дескриптору выделения назначения через элемент hDeviceSpecificAllocation элемента pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] (т. е. элемент 2).

Дескрипторами, указанными в элементах списка выделения, являются дескрипторами для конкретного устройства, возвращаемыми функцией DxgkDdiOpenAllocation драйвера при открытии выделений. Если источник или назначение отсутствуют для операции, элемент hDeviceSpecificAllocation соответствующего элемента имеет значение NULL. Этот элемент доступен начиная с Windows 7.

Примечание

Элемент hDeviceSpecificAllocation первого элемента в списке выделения (элемент 0) всегда имеет значение NULL.

[in] pAllocationInfo

Зарезервировано для системного использования. Драйвер мини-порта дисплея должен игнорировать этот элемент. Этот элемент доступен начиная с Windows 7.

[in] pPresentMultiPlaneOverlayInfo

Указатель на структуру типа DXGK_PRESENTMULTIPLANEOVERLAYINFO , которая указывает сведения о входных данных VidPN и плоскости наложения для отображения.

Поддерживается начиная с Windows 8.

[in/out] pPatchLocationListOut

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

[in] PatchLocationListOutSize

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

[in/out] MultipassOffset

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

[in] Color

Цвет A8R8G8B8 в операции заливки цвета, которая задается флагом битового поля ColorFill , установленным в элементе Flags , или операцией с ключом цвета, которая задается флагом битового поля SrcColorKey или DstColorKey . Обратите внимание, что в любое время устанавливается только один из флагов битовых полей ColorFill, SrcColorKey и DstColorKey .

Если основным форматом является палеттизированный RGB, color содержит индекс палитры, а не значение D3DDDIFMT_A8R8G8B8 из типа перечисления D3DDDIFORMAT .

[in] DstRect

Структура RECT для прямоугольника назначения, используемого для вычисления коэффициента растяжения.

[in] SrcRect

Структура RECT для исходного прямоугольника, который используется для вычисления коэффициента растяжения.

[in] SubRectCnt

Количество вложенных прямоугольников назначения в массиве, который указывает pDstSubRects .

[in] pDstSubRects

Массив структур RECT для списка вложенных прямоугольников назначения, в которые копируется функция DxgkDdiPresent .

[in] FlipInterval

D3DDDI_FLIPINTERVAL_TYPE типизированное значение, указывающее интервал пролистывания (т. е., если пролистывание происходит после нуля, один, два, три или четыре вертикальные синхронизации).

[in] Flags

Структура DXGK_PRESENTFLAGS , определяющая в флагах битового поля тип выполняемой операции. Обратите внимание, что флаги битовых полей ColorFill, SrcColorKey и DstColorKey в flags являются взаимоисключающими.

[in] DmaBufferSegmentId

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

[in] DmaBufferPhysicalAddress

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

[in] Reserved

Зарезервировано для системного использования. Драйвер должен игнорировать этот элемент.

DmaBufferGpuVirtualAddress

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

NumSrcAllocations

Количество выделений контекста в источнике.

NumDstAllocations

Количество выделений контекста в назначении.

PrivateDriverDataSize

Размер pPrivateDriverData.

pPrivateDriverData

Указатель на буфер, содержащий необязательные данные частного драйвера.

Комментарии

Соотношение прямоугольных областей источника и назначения, указанных членами SrcRect и DstRect, используется для вычисления коэффициента растяжения. Драйвер может учитывать вычисление растяжения при выполнении операции копирования.

Драйвер не требуется выполнять какие-либо обрезки. Подсистема ядра графики Microsoft DirectX предварительно подкрепивает список подкаталогов назначения, указанных элементом pDstSubRects , к координатам целевого прямоугольника, заданного элементом DstRect, и к экрану (основному). Обратите внимание, что если список вложенных прямоугольников назначения предоставляется в pDstSubRects, драйвер должен использовать только SrcRect и DstRect для вычисления коэффициента растяжения и использовать координаты подкаталогов назначения для фактической операции копирования.

Требования

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

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

D3DDDI_FLIPINTERVAL_TYPE

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DXGK_PRESENTFLAGS

DXGK_PRESENTMULTIPLANEOVERLAYINFO

DxgkDdiPresent

RECT