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

Структура DXGK_CONTEXTINFO описывает контекст устройства.

Синтаксис

typedef struct _DXGK_CONTEXTINFO {
  UINT                  DmaBufferSize;
  UINT                  DmaBufferSegmentSet;
  UINT                  DmaBufferPrivateDataSize;
  UINT                  AllocationListSize;
  UINT                  PatchLocationListSize;
  UINT                  Reserved;
  DXGK_CONTEXTINFO_CAPS Caps;
  ULONG                 PagingCompanionNodeId;
} DXGK_CONTEXTINFO;

Члены

DmaBufferSize

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

Буфер DMA может увеличиваться и уменьшаться после создания контекста; однако буфер DMA никогда не может уменьшаться меньше начального размера, указанного DmaBufferSize .

DmaBufferSegmentSet

Идентификаторы сегментов, в которых буфер DMA должен быть доступен для GPU.

DmaBufferPrivateDataSize

Размер (в байтах) структуры частных данных, резидентной драйвером, связанной с каждым буфером DMA. Память для этой частной структуры данных выделяется из непагрегированного пула. Если драйвер указывает ноль в DmaBufferPrivateDataSize, для структуры частных данных не выделяется память.

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

AllocationListSize

Начальное число элементов в массиве выделений (т. е. массив DXGK_ALLOCATIONLIST структур ). Это число является начальным числом выделений, запрашиваемых драйвером в элементах pAllocationListDXGKARG_PRESENT и DXGKARG_RENDER структур в вызовах функций DxgkDdiPresent и DxgkDdiRender драйвера соответственно.

Список выделения может увеличиваться и уменьшаться после создания контекста; однако список выделения никогда не может уменьшиться меньше начального размера, указанного AllocationListSize .

Примечание Если DXGK_CREATECONTEXTFLAGS. Для GdiContext задано значение 1. Это означает, что контекст создается как контекст, зависящий от GDI, а для AllocationListSize должно быть задано значение 256.
 

PatchLocationListSize

Начальное число элементов в массиве расположений исправлений (то есть массиве D3DDDI_PATCHLOCATIONLIST структур) для устройства в пользовательском режиме и режиме ядра. Это число является начальным числом расположений исправлений, которые драйвер запрашивает в элементах pPatchLocationListInструктур DXGKARG_RENDER в вызовах функции DxgkDdiRender .

Список расположений исправлений может увеличиваться и уменьшаться после создания контекста; Однако список расположений исправлений никогда не может уменьшаться меньше начального размера, указанного PatchLocationListSize .

Reserved

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

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

Caps

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

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

PagingCompanionNodeId

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

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

Комментарии

Драйвер мини-порта отображения задает значения для элементов DmaBufferSize и AllocationListSize , чтобы гарантировать следующее:

  • Графическая подсистема Microsoft DirectX может использовать только один буфер прямого доступа к памяти (DMA) для отображения (с помощью функции DxgkDdiPresent драйвера мини-порта дисплея) по крайней мере одну структуру RECT для всех сценариев.
  • Размеры буферов DMA и буферов списка выделения достаточно велики, чтобы вместить по крайней мере одну команду, которая не может быть разделена на несколько буферов.
  • Размеры буферов DMA и буферов списка выделения достаточно велики, чтобы избежать накладных расходов на установку и DMA.
Драйвер мини-порта дисплея может указывать только сегменты диафрагмы в элементе DmaBufferSegmentSet ; Если драйвер указывает сегмент памяти, происходит сбой создания контекста.

Если драйвер устанавливает для DmaBufferSegmentSet значение 0, диспетчер видеопаметь выделяет для буферов DMA непрерывную память, заблокированную на страницах, которая сопоставляется с объединенной памятью записи. Таким образом, GPU должен получать доступ к буферам DMA с помощью циклов PCI на компьютерах, где передача AGP, которая происходит за пределами диафрагмы AGP, не разрешена.

Требования

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

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

D3DDDI_PATCHLOCATIONLIST

DXGKARG_CREATECONTEXT

DXGKARG_PRESENT

DXGKARG_RENDER

DXGK_ALLOCATIONLIST

DXGK_CREATECONTEXTFLAGS

DxgkDdiPresent

DxgkDdiRender

RECT