структура DXGK_VIDMMCAPS (d3dkmddi.h)
Структура DXGK_VIDMMCAPS определяет возможности управления памятью видео, поддерживаемые драйвером минипорта (KMD) в режиме ядра.
Синтаксис
typedef struct _DXGK_VIDMMCAPS {
union {
struct {
UINT OutOfOrderLock : 1;
UINT DedicatedPagingEngine : 1;
UINT PagingEngineCanSwizzle : 1;
UINT SectionBackedPrimary : 1;
UINT CrossAdapterResource : 1;
UINT VirtualAddressingSupported : 1;
UINT GpuMmuSupported : 1;
UINT IoMmuSupported : 1;
UINT ReplicateGdiContent : 1;
UINT NonCpuVisiblePrimary : 1;
UINT ParavirtualizationSupported : 1;
UINT IoMmuSecureModeSupported : 1;
UINT DisableSelfRefreshVRAMInS3 : 1;
UINT IoMmuSecureModeRequired : 1;
UINT MapAperture2Supported : 1;
UINT CrossAdapterResourceTexture : 1;
UINT CrossAdapterResourceScanout : 1;
UINT AlwaysPoweredVRAM : 1;
#if ...
UINT Reserved : 14;
#elif
UINT Reserved : 15;
#elif
UINT Reserved : 18;
#elif
UINT Reserved : 19;
#elif
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#elif
UINT Reserved : 27;
#elif
UINT Reserved : 28;
#else
UINT Reserved : 31;
#endif
};
UINT Value;
};
UINT PagingNode;
} DXGK_VIDMMCAPS;
Члены
OutOfOrderLock
Указывает, может ли драйвер заблокировать экземпляры выделения, отличные от последнего экземпляра. Драйвер обычно задает это значение для потоков DDI и балансировки нагрузки, если поток DDI должен заблокировать буфер вершин, который ранее заблокирован и удален поток приложения.
DedicatedPagingEngine
Этот элемент зарезервирован и должен иметь значение нулю.
PagingEngineCanSwizzle
Этот элемент зарезервирован и должен иметь значение нулю.
SectionBackedPrimary
Указывает, поддерживает ли драйвер выделенные разделами основные выделения. Поддерживается начиная с Windows 8.
CrossAdapterResource
Указывает, предоставляет ли драйвер 1 уровень 1 поддержку копирования в ресурсы между адаптерами и из гибридной системы. Поддерживается начиная с Windows 8.1.
Начиная с WDDM 2.4, DXGI обеспечивает текущую оптимизацию гибридной презентации для более широкого сценария, где бы отрисовка была на одном GPU и представлена на мониторе другого GPU. Это возможно только в том случае, если оба GPU поддерживают ресурсы между адаптерами.
Ниже перечислены свойства ресурсов кроссплатформенного адаптера.
- Ресурс можно использовать только для сегмента памяти GPU с диафрагмой
- Ресурс выделяется как общий.
- Ресурс должен быть помечен как "Видимый ЦП".
- Выделение будет создано ОПЕРАЦИОННОй системой в сочетании с записью.
- Ресурс имеет только одно выделение и имеет линейный формат.
- Ресурс имеет стандартное выравнивание шага (128 байт). Для выравнивания шага добавляется определение D3DKMT_CROSS_ADAPTER_RESOURCE_PITCH_ALIGNMENT. Ресурс должен быть создан с наименьшим числом из этого выравнивания, который будет содержать содержимое ресурса.
- Ресурс имеет стандартное выравнивание высоты (4 строки). Добавляется D3DKMT_CROSS_ADAPTER_RESOURCE_HEIGHT_ALIGNMENT. Ресурс должен быть создан с наименьшим числом из этого выравнивания, который будет содержать содержимое ресурса.
#define D3DKMT_CROSS_ADAPTER_RESOURCE_PITCH_ALIGNMENT 128
#define D3DKMT_CROSS_ADAPTER_RESOURCE_HEIGHT_ALIGNMENT 4
- Начальный адрес памяти ресурса выравнивается на одну границу страницы.
- Ресурс может быть создан как стандартное выделение из режима ядра и более поздних версий, открытых UMD.
- Ресурс может быть создан с помощью UMD.
Распределение между адаптерами может использоваться в качестве основного, но драйвер не получит информацию, которая обычно предоставляется при создании основного.
VirtualAddressingSupported
Указывает, поддерживает ли драйвер адресацию виртуальной памяти. Чтобы выразить поддержку адресации виртуальной памяти GPU, драйвер должен задать virtualAddressingSupported cap and GpuMmuSupported или ioMmuSupported. GpuMmuSupported и IoMmuSupported нельзя задать одновременно. Поддерживается начиная с Windows 10 (WDDM 2.0).
GpuMmuSupported
Указывает, поддерживает ли адаптер модель GpuMmu. Адаптер не может поддерживать GpuMmu и модели IoMmu на разных модулях одновременно. Дополнительные сведения см. в модели GpuMmu. Поддерживается начиная с Windows 10 (WDDM 2.0).
IoMmuSupported
Указывает, поддерживает ли адаптер модель IoMmu. Адаптер не может поддерживать GpuMmu и модели IoMmu на разных модулях одновременно. Дополнительные сведения см. в модели IoMmu. Поддерживается начиная с Windows 10 (WDDM 2.0).
ReplicateGdiContent
Указывает, поддерживает ли адаптер репликацию содержимого GDI. Поддерживается начиная с Windows 10 (WDDM 2.0).
NonCpuVisiblePrimary
Указывает, что выделения GDI не требуются для отображения ЦП. Поддерживается начиная с Windows 10 (WDDM 2.0).
ParavirtualizationSupported
Указывает, что KMD поддерживает паравиртуализации GPU. KmD узла должен задать ограничение, если реализованы все DDIs. Представлено в Windows 10 версии 1703 (WDDM 2.2).
IoMmuSecureModeSupported
Указывает, что драйвер поддерживает изоляции GPU на основе IOMMU. Поддерживается начиная с Windows 10 версии 1803 (WDDM 2.4).
DisableSelfRefreshVRAMInS3
Отключите поддержку самостоятельного обновления VRAM в S3. Поддерживается начиная с Windows 10 версии 1803.
IoMmuSecureModeRequired
Указывает, что требуется поддержка оборудования и изоляции IOMMU (упоминаемая флагом IommuSecureModeSupported), или ос в противном случае не запустит адаптер. Поддерживается начиная с Windows 10 версии 2004 (WDDM 2.7).
MapAperture2Supported
Указывает, что драйвер поддерживает операцию буфера DXGK_OPERATION_MAP_APERTURE_SEGMENT2 разбиения по страницам, которая требуется для перемечкиIOMMU DMA. Поддерживается начиная с версии WDDM версии 2.9.
CrossAdapterResourceTexture
Указывает, предоставляет ли драйвер 2-й уровень поддержки текстовых ресурсов между адаптерами. Драйвер, указывающий на поддержку CrossAdapterResourceTexture, также должен указывать поддержку CrossAdapterResource. Поддерживается начиная с версии WDDM версии 2.9.
CrossAdapterResourceScanout
Указывает, предоставляет ли драйвер 3 уровень 3 поддержки сканирования ресурсов перекрестного адаптера. Драйвер, указывающий на поддержку CrossAdapterResourceScanout, также должен указывать поддержку CrossAdapterResource и CrossAdapterResourceTexture. Поддерживается начиная с версии WDDM версии 2.9.
Поддержка уровня 3 требует, чтобы драйвер мог выполнять поддерживаемые возможности переверки, объявленные драйвером в DXGK_FLIPCAPS, для ресурсов перекрестного адаптера следующих минимальных спецификаций:
- Размер основного буфера между адаптерами 1920 x 1080 или меньше
- Формат пикселя буфера любого из следующих поддерживаемых форматов DisplayScanOut:
- DXGI_FORMAT_R16G16B16A16_FLOAT
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
- DXGI_FORMAT_B8G8R8A8_UNORM
- DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
Среда выполнения DXGI запрашивает поддержку драйвера CrossAdapterResourceScanout и, если поддерживается, стек презентаций должен перейти к пути копирования 1. Таким образом, драйверы, объявляющие поддержку CrossAdapterResourceScanout, также необходимы:
- Поддержка DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3.
- Поддержка всех соответствующих DD, связанных с презентацией, для межадаптерных первичных объектов из указанных выше минимальных спецификаций. Ниже приведены несколько примеров pfnCreateResource, pfnCheckMultiplaneOverlaySupport и pfnPresentMultiplaneOverlay/pfnPresent1. Дополнительные сведения см. в существующих спецификациях, таких как спецификация MPO и гибридная спецификация. Дополнительные сведения о выходе из CASO см. в разделе ниже.
AlwaysPoweredVRAM
Reserved
Этот элемент зарезервирован и должен иметь значение нулю. Установка этого элемента равно нулю эквивалентна настройке оставшихся 31 битов (после установки OutOfOrderLock) элемента значение равным нулю. Обратите внимание, что зарезервированные доступны только в том случае, если DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WIN7.
Value
Это значение используется для коллективной работы над элементами.
PagingNode
Отсчитываемый от нуля индекс узла, используемый для операций разбиения по страницам. Если драйвер не задает элемент MultiEngineAware битовое поле члена SchedulingCaps структуры DXGK_DRIVERCAPS, подсистема ядра графики DirectX игнорирует параметр PagingNode. Этот член применяется только к WDDM 1.x. В WDDM 2.x PagingNode был перемещен в DXGK_PHYSICALADAPTERCAPS.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista (WDDM 1.0) |
заголовка | d3dkmddi.h (include D3dkmddi.h) |