структура DXGK_FLIPCAPS (d3dkmddi.h)
Структура DXGK_FLIPCAPS определяет возможности перелистывания драйвера мини-порта дисплея, которые драйвер предоставляет через вызов функции DxgkDdiQueryAdapterInfo .
Синтаксис
typedef struct _DXGK_FLIPCAPS {
union {
struct {
UINT FlipOnVSyncWithNoWait : 1;
UINT FlipOnVSyncMmIo : 1;
UINT FlipInterval : 1;
UINT FlipImmediateMmIo : 1;
UINT FlipIndependent : 1;
UINT DdiPresentForIFlip : 1;
UINT FlipImmediateOnHSync : 1;
#if ...
UINT Reserved : 25;
#elif
UINT Reserved : 27;
#else
UINT Reserved : 28;
#endif
};
UINT Value;
};
} DXGK_FLIPCAPS;
Члены
FlipOnVSyncWithNoWait
Значение UINT , указывающее, поддерживает ли драйвер планирование команды flip, которая будет действовать в течение следующего периода вертикального отката (вертикальная синхронизация) без остановки графического конвейера до тех пор, пока не произойдет эта вертикальная синхронизация. Это значит, что графический конвейер должен выполняться сразу после того, как драйвер записывает физический адрес переворачиваемой поверхности в отвертываемые регистры на оборудовании. Хотя большинство оборудования использует глубину одного регистра, ожидающего отвертывания, если на оборудовании используется несколько регистров, ожидающих отвертывания, драйвер должен указать номер в элементе MaxQueuedFlipOnVSyncструктуры DXGK_DRIVERCAPS .
Если параметр FlipOnVSyncWithNoWait имеет значение 1 (TRUE), драйвер поддерживает этот механизм. Если параметр FlipOnVSyncWithNoWait имеет значение 0 (FALSE), драйвер не поддерживает этот механизм. То есть графический конвейер должен дождаться следующей вертикальной синхронизации после планирования команды flip, чтобы ввести в силу следующую вертикальную синхронизацию.
Задание этого элемента эквивалентно установке первого бита 32-разрядного элемента Value (0x00000001).
FlipOnVSyncMmIo
Значение UINT , указывающее, поддерживает ли драйвер переворачивание на основе операций ввода-вывода в памяти (MMIO), которое вступает в силу при следующей вертикальной синхронизации. Для поддержки этого типа переворачивания драйвер мини-порта дисплея должен поддерживать следующие операции:
- Создание буфера DMA для передачи вызова его функции DxgkDdiPresent (то есть null передается в члене pDmaBufferструктуры DXGKARG_PRESENT ).
- Пролистывание вызова функции DxgkDdiSetVidPnSourceAddress на уровне запроса прерывания устройства (DIRQL). При вызове DxgkDdiSetVidPnSourceAddress драйвер должен запрограммировать цифровой аналоговый преобразователь (DAC) и использовать значение элемента PrimaryAddress структуры DXGKARG_SETVIDPNSOURCEADDRESS , чтобы начать сканирование. После вертикальной синхронизации драйвер должен уведомить планировщик GPU, чтобы сообщить об эффективном адресе сканирования, вызвав функцию DxgkCbNotifyInterrupt со значениемDXGK_INTERRUPT_CRTC_VSYNC , заданным в элементе InterruptType структуры DXGKARGCB_NOTIFY_INTERRUPT_DATA . Затем драйвер должен вызвать функцию DxgkCbNotifyDpc , чтобы выполнить большую часть обработки сканирования.
FlipInterval
Значение UINT , указывающее, поддерживает ли драйвер планирование выполнения команды flip после двух, трех или четырех вертикальных синхронизаций. Независимо от того, поддерживает ли драйвер интервал переворачивания в два или больше, драйвер должен поддерживать немедленное пролистывание и интервал переворачивания один.
Задание этого элемента эквивалентно установке третьего бита 32-разрядного элемента Value (0x00000004).
FlipImmediateMmIo
Значение UINT , указывающее, поддерживает ли драйвер немедленное переворачивание на основе операций ввода-вывода в памяти (MMIO). Этот тип переключения вступает в силу сразу после вызова функции DxgkDdiSetVidPnSourceAddress драйвера, не дожидаясь следующей вертикальной синхронизации.
Задание этого элемента эквивалентно установке четвертого бита 32-разрядного элемента Value (0x00000008).
Поддерживается начиная с Windows 7.
FlipIndependent
Значение UINT , указывающее, поддерживает ли драйвер независимое отражение. Драйверы WDDM 1.3 и более поздних версий должны установить для этого элемента значение 1.
При независимом переключлении операционная система пытается обойти вызов в пользовательском режиме в диспетчере окон рабочего стола (DWM) и переключается на обратный буфер приложения, вызывая DxgkDdiPresent и DxgkDdiSetVidPnSourceAddress в моделях представления с прямым переворачиванием и многоплановой наложением.
Обратите внимание, что в некоторых случаях вызов в режиме пользовательский dwm выполняется, даже если задан параметр FlipIndependent . Ваш драйвер по-прежнему должен обрабатывать такие случаи.
Задание этого элемента эквивалентно установке пятого бита 32-разрядного элемента Value (0x00000010).
Поддерживается начиная с Windows 8.1.
DdiPresentForIFlip
FlipImmediateOnHSync
Reserved
Этот элемент зарезервирован и должен иметь нулевое значение. Установка для этого элемента нулевого значения эквивалентна установке оставшихся 27 бит (0xFFFFFFE0) 32-разрядного элемента Value равными нулям.
Этот элемент зарезервирован и должен иметь нулевое значение. Присвоение этому элементу нулевого значения эквивалентно установке нулей для оставшихся 28 бит (0xFFFFFFF0) 32-разрядного элемента Value .
Value
Член объединения, который DXGK_FLIPCAPS содержит, который может содержать 32-разрядное значение, определяющее возможности переворачивания.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Верхняя часть | d3dkmddi.h (включая D3dkmddi.h) |