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


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

Структура DXGK_VIDSCHCAPS имеет флаги битового поля, определяющие возможности планирования GPU, которые может поддерживать драйвер мини-порта (KMD) в режиме ядра.

Синтаксис

typedef struct _DXGK_VIDSCHCAPS {
  union {
    struct {
      UINT MultiEngineAware : 1;
      UINT VSyncPowerSaveAware : 1;
      UINT PreemptionAware : 1;
      UINT NoDmaPatching : 1;
      UINT CancelCommandAware : 1;
      UINT No64BitAtomics : 1;
      UINT LowIrqlPreemptCommand : 1;
      UINT HwQueuePacketCap : 4;
      UINT NativeGpuFence : 1;
      UINT OptimizedNativeFenceSignaledInterrupt : 1;
#if ...
      UINT Reserved : 19;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 25;
#elif
      UINT Reserved : 27;
#else
      UINT Reserved : 30;
#endif
    };
    UINT Value;
  };
} DXGK_VIDSCHCAPS;

Члены

MultiEngineAware

Значение UINT, указывающее, поддерживает ли драйвер создание и уничтожение контекста устройства (через DxgkDdiCreateContext и DxgkDdiDetext) и использование контекста устройства (через функции DxgkDdiPresent и DxgkDdiRender). Если драйвер не поддерживает создание контекста, для каждого вызова драйвера, который будет передавать дескриптор контексту, подсистема ядра графики Microsoft DirectX заменяет дескриптор контекстом дескриптором на устройство.

VSyncPowerSaveAware

Значение UINT, указывающее, поддерживает ли драйвер функцию вертикальной синхронизации питания.

Если VSyncPowerSaveAware установлено значение 1 (TRUE), ОС может сохранить питание, отключив и включив прерывание вертикальной синхронизации, возникающее из использования некоторых приложений. Если VSyncPowerSaveAware равно нулю (FALSE), ОС никогда не отключает прерывание вертикальной синхронизации для приложений, которые могут вызвать прерывание вертикальной синхронизации. Поддерживается начиная с Windows Server 2008 и Windows Vista с пакетом обновления 1 (SP1).

PreemptionAware

Значение UINT, указывающее, поддерживает ли драйвер политику предварительного прерывания GPU Windows 8 и более поздних версий Windows. В этой политике ОС всегда выдает запросы на предварительную версию gpu, прежде чем инициировать **Время ожидания обнаружения и восстановления (TDR) процесса. Поддерживается начиная с Windows 8.

Если preemptionAware имеет значение 1 (TRUE), драйвер поддерживает политику предварительного использования Windows 8 и более поздних версий Windows. Обратите внимание, что если для PreemptionAware задано значение 1, элемент multiEngineAware должен иметь значение 1. Если preemptionAware имеет значение 1, но MultiEngineAware установлено равным нулю, ОС остановит процесс инициализации драйвера и возвращает код сбоя.

Если preemptionAware равно нулю (FALSE), драйвер поддерживает политику предварительного прерывания Windows 7. В этой политике ОС может не выдавать запросы на предварительную загрузку, хотя потенциально длительные операции выполняются на GPU. В результате эти запросы GPU не преумножены до запуска процесса TDR. Это может привести к повторному сбросу GPU процесса TDR, что может привести к ошибке остановки системы.

NoDmaPatching

Значение UINT, указывающее, отключает ли драйвер обнаружение утечки для буферов DMA, разделенных на несколько частей. Это обнаружение выполняется после вызова функции драйвера DxgkDdiPatch, чтобы назначить или исправления, физические адреса для каждой части буфера DMA. Поддерживается начиная с Windows 8.

Отображение устройств, поддерживающих виртуальные адреса, может перепрограммировать виртуальный адрес в новое расположение памяти видео без необходимости исправления значения буфера DMA. Для этих типов устройств отображения драйвер должен задать NoDmaPatching 1.

Если NoDmaPatching имеет значение 1 (TRUE), драйвер отключает обнаружение утечки, а поведение разбиения буфера DMA совпадает с поведением в Windows 7. Обратите внимание, что при NoDmaPatching задано значение 1, PreemptionAware и MultiEngineAware элементов также должно иметь значение 1. Если noDmaPatching имеет значение 1, но PreemptionAware или MultiEngineAware задано равно нулю, ОС остановит процесс инициализации драйвера и возвращает код сбоя.

Если noDmaPatching имеет значение 0 (FALSE), драйвер включает обнаружение утечек для исправленных адресов буфера DMA. ОС выполняет обнаружение утечки перед вызовом функции драйвера DxgkDdiPatch.

CancelCommandAware

Значение UINT, указывающее, поддерживает ли драйвер очистку внутренних ресурсов (через функцию dxgkDdiCancelCommand) после удаления команды из очереди оборудования. Поддерживается начиная с Windows 8.

Если CancelCommandAware установлено значение 1 (TRUE), драйвер поддерживает очистку ресурсов, связанных с отмененным пакетом DMA. Обратите внимание, что если для CancelCommandAware установлено значение 1, элемент MultiEngineAware также должен иметь значение 1. Если CancelCommandAware имеет значение 1, но MultiEngineAware равно нулю, ОС возвращает код сбоя.

Если CancelCommandAware равно нулю (FALSE), драйвер не поддерживает очистку ресурсов.

No64BitAtomics

Если No64BitAtomics имеет значение 1 (TRUE), драйвер указывает, что GPU может обновлять только 32-разрядные значения атомарно. В этом случае ОС будет автоматически обрабатывать случай обхода забора, однако оно будет размещать ограничение, что выдающиеся значения ожидания и сигнала обора не могут быть больше, чем UINT_MAX/2, кроме последнего сигнального значения ограждения. Поддерживается начиная с Windows 10.

Если No64BitAtomics равно нулю (FALSE), драйвер указывает, что GPU может обновлять 64-разрядные значения атомарно, как видно ЦП.

LowIrqlPreemptCommand

HwQueuePacketCap

Максимальное количество пакетов DMA, разрешенных для очереди на узел.

NativeGpuFence

Если ОС включила функцию DXGK_FEATURE_NATIVE_FENCE, драйвер может объявить поддержку функций забора собственного GPU во время инициализации адаптера, установив для NativeGpuFence бит 1. Эта возможность предоставляется в пользовательском режиме с помощью соответствующего D3DKMT_WDDM_3_1_CAPS::NativeGpuFenceSupported бита. Дополнительные сведения см. в разделе Объекты забора собственного GPU. Доступно начиная с Windows 11 версии 22H2 (WDDM 3.1).

OptimizedNativeFenceSignaledInterrupt

Драйвер задает это значение TRUE, если в сигнальном прерывании GPU может указать в DXGKARGCB_NOTIFY_INTERRUPT_DATA::NativeFenceSignaled только дескриптор KMD запущенного HWQueue. Дополнительные сведения см. в разделе Объекты забора собственного GPU. Доступно начиная с Windows 11 версии 22H2 (WDDM 3.1).

Reserved

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

Value

Альтернативный способ доступа к флагам битового поля в союзе.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista
заголовка d3dkmddi.h (include D3dkmddi.h)

См. также

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDetextContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender