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


структура 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)

См. также

DXGK_DRIVERCAPS

DXGK_PHYSICALADAPTERCAPS