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


структура 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 структур). Это начальная цифра выделения, которую драйвер запрашивает в pAllocationList членов DXGKARG_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 (include D3dkmddi.h)

См. также

D3DDDI_PATCHLOCATIONLIST

DXGKARG_CREATECONTEXT

DXGKARG_PRESENT

DXGKARG_RENDER

DXGK_ALLOCATIONLIST

DXGK_CREATECONTEXTFLAGS

DxgkDdiPresent

DxgkDdiRender

RECT