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


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

Структура DXGK_VIDMMCAPS определяет возможности управления видеопамятью, поддерживаемые драйвером мини-порта дисплея.

Синтаксис

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 должен заблокировать буфер вершин, который поток приложения ранее блокировал и отбрасывал. Задание этого элемента эквивалентно установке первого бита 32-разрядного элемента Value (0x00000001).

DedicatedPagingEngine

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

PagingEngineCanSwizzle

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

SectionBackedPrimary

Указывает, поддерживает ли драйвер первичные выделения на основе разделов. Поддерживается начиная с Windows 8.

CrossAdapterResource

Указывает, обеспечивает ли драйвер поддержку 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 и GpuMmuSupported или IoMmuSupported . GpuMmuSupported и IoMmuSupported нельзя задать одновременно. Поддерживается начиная с Windows 10.

GpuMmuSupported

Указывает, поддерживает ли адаптер модель GpuMmu . Адаптер не может одновременно поддерживать модели GpuMmu и IoMmu на разных подсистемах. Дополнительные сведения см. в разделе Модель GpuMmu . Поддерживается начиная с Windows 10.

IoMmuSupported

Указывает, поддерживает ли адаптер модель IoMmu . Адаптер не может одновременно поддерживать модели GpuMmu и IoMmu на разных подсистемах. Дополнительные сведения см. в разделе Модель IoMmu . Поддерживается начиная с Windows 10 (WDDM 2.0).

ReplicateGdiContent

Указывает, поддерживает ли адаптер репликацию содержимого GDI. Поддерживается начиная с Windows 10.

NonCpuVisiblePrimary

Указывает, что выделения GDI не обязательно должны быть видимыми для ЦП. Поддерживается начиная с Windows 10.

ParavirtualizationSupported

KmD узла должен установить ограничение, если реализованы все DIS. Поддерживается начиная с Windows 10 версии 1703 (WDDM 2.2).

IoMmuSecureModeSupported

Указывает, что драйвер поддерживает изоляцию GPU на основе IOMMU. Поддерживается начиная с Windows 10 версии 1803 (WDDM 2.4).

DisableSelfRefreshVRAMInS3

Отключите поддержку самостоятельного обновления виртуальной памяти в 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 для сканирования ресурсов перекрестных адаптеров. Драйвер, указывающий на поддержку 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.
  • Поддержка всех соответствующих DDI, связанных с презентацией, для первичных перекрестных адаптеров с указанными выше минимальными спецификациями. Несколько примеров: pfnCreateResource, pfnCheckMultiplaneOverlaySupport и pfnPresentMultiplaneOverlay/pfnPresent1. Дополнительные сведения см. в существующих спецификациях, таких как спецификация MPO и гибридная спецификация. Дополнительные сведения о выходе из CASO см. в разделе ниже.

AlwaysPoweredVRAM

Reserved

Этот элемент зарезервирован и должен иметь нулевое значение. Установка для этого элемента нулевого значения эквивалентна установке оставшихся 31 бита (после установки OutOfOrderLock) элемента Value равными нулям. Обратите внимание, что зарезервировано доступно, только если 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
Верхняя часть d3dkmddi.h (включая D3dkmddi.h)

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

DXGK_DRIVERCAPS

DXGK_PHYSICALADAPTERCAPS