структура 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 .
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 значение 0, диспетчер видеопаметь выделяет для буферов DMA непрерывную память, заблокированную на страницах, которая сопоставляется с объединенной памятью записи. Таким образом, GPU должен получать доступ к буферам DMA с помощью циклов PCI на компьютерах, где передача AGP, которая происходит за пределами диафрагмы AGP, не разрешена.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Верхняя часть | d3dkmddi.h (включая D3dkmddi.h) |