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


Поддержка поворота в драйвере дисплейного минипорта

Функция драйвера минипорта DxgkDdiEnumVidPnCofuncModality вызывает функцию pfnUpdatePathSupportInfo, чтобы сообщить о поддержке поворота для каждого пути в топологии VidPN. Дополнительные сведения о поддержке ротации отчетов см. в разделе Перечисление сопутствующих режимов источника и целевых VidPN.

Подсистема ядра графики Microsoft DirectX использует невернутые размеры поверхности для создания общей первичной поверхности. Чтобы уведомить минипорт-драйвер отображения о повороте поверхности, подсистема графического ядра DirectX указывает значения типа D3DKMDT_VIDPN_PRESENT_PATH_ROTATION в элементе Rotation структуры D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION, которая указывается в элементе ContentTransformation структуры D3DKMDT_VIDPN_PRESENT_PATH в вызовах функций минипорт-драйвера DxgkDdiCommitVidPn и DxgkDdiUpdateActiveVidPnPresentPath.

Заметка Все градусы поворота определяются в направлении по часовой стрелке, что соответствует тому, как GDI определяет поворот.

Когда подсистема DirectX уведомляет драйвер минипорта дисплея о необходимости повернуть поверхность, драйвер должен повернуть данные поверхности только в том случае, если битовое поле Rotate было установлено во флагах Flags структуры DXGKARG_PRESENT, на которую указывает параметр pPresent в вызове функции драйвера DxgkDdiPresent. Даже если драйвер определяет, что текущая ориентация экрана поворачивается из данных презентации и поворот не задана, драйвер не должен поворачивать данные.

Поведение в режиме клонирования

Клонированный режим — это режим, в котором источник видео представляет подключение к нескольким целевым объектам представления видео через несколько путей в сети представления видео. (Дополнительные сведения о сетях представления видео см. в разделе "Несколько мониторов" и "Видео-презентации".)

Драйвер мини-порта дисплея обрабатывает поворот по-разному, если он работает в режиме клонирования, так как для каждого целевого объекта может потребоваться другой поворот. Операционная система, различные версии сред выполнения Microsoft DirectX и клиенты пользовательского режима определяют только ориентацию основного целевого объекта видео. Поэтому содержимое в источнике видео всегда будет соответствовать ориентации основного целевого объекта видео.

В следующей таблице показано, как работает драйвер мини-порта дисплея в режиме клонирования для всех соответствующих ситуаций. Параметр флага "Поворот " — это параметр битового поля " Поворот " в элементе "Флаги " структуры DXGKARG_PRESENT .

Основной целевой объект Вторичный целевой объект Поворот флага Поведение драйвера

Не поворачивается

Не поворачивается

Не установлено

Драйвер не выполняет поворот.

Не поворачивается

Повернутый

Не установлено

Драйвер поворачивает вторичный целевой объект, даже если флаг поворота не задан.

Повернутый

Не вращалось

Установить

Драйвер поворачивает основной целевой объект, но не вторичный целевой объект.

Повернутый

Не поворачивается

Не установлено

Так как поворот не задан, драйвер не поворачивает основной целевой объект. Так как вторичный целевой объект не соответствует ориентации содержимого в источнике, драйвер должен повернуть вторичный целевой объект.

Эта ситуация возникает, когда клиент учитывает поворот, и он уже правильно ориентировал содержимое источника. Поэтому операционная система не устанавливает Rotate.

Повернутый

Повернутый

Установить

Драйвер поворачивает как первичные, так и вторичные целевые объекты.

Повернутый

Повернутый

Не установлено

Клиент, поддерживающий ориентацию, уже правильно сориентировал содержимое источника. Таким образом, дополнительная смена не требуется.

Требования для режима клонирования начиная с обновления Windows 8.1

Начиная с обновления Windows 8.1 драйверы должны соответствовать этим требованиям. Если включена тестовая подпись, произойдет сбой системы, если драйвер не соответствует этим требованиям.

Основной путь клонирования
Определение: Путь, содержащий целевой монитор, дублирующий исходный дисплей, например внешний монитор, дублирующий дисплей на ноутбуке.

Требование: В основном пути клонирования драйвер должен установить Offset0 в TRUE, а остальные 3 значения в D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT в FALSE.

В случае, если исходное отображение в портретной ориентации, основной путь клонирования не поворачивается. Это означает, что основной клонированный путь всегда имеет смещение нуля (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset0 имеет значение TRUE, а диспетчер окон рабочего стола (DWM) поворачивает его содержимое заранее, чтобы соответствовать правильной ориентации.

Основной путь клонирования определяет частоту обновления монитора для всех основных и вторичных целевых объектов клонирования.

Вторичный путь клонирования
Определение: Путь, включающий любой дополнительный целевой монитор, а не часть основного клонирующего пути, который также дублирует исходное отображение.

Требование: В дополнительном пути клонирования драйвер должен установить по крайней мере одно из 4 значений смещения в D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT в TRUE. Если драйвер не поддерживает поворот, не зависящий от пути, он должен задать Offset0 на TRUE во всех вторичных клонированных путях.

Ниже приведены два примера параметров, которые должен настроить драйвер, если он поддерживает независимый от пути поворот.

Пример в альбомной ориентации
Если исходный дисплей и целевой дисплей в дополнительном клонированном пути оба являются мониторами с альбомной ориентацией, драйвер установит для D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset0 значение TRUE, а для остальных трёх значений смещения в D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT - значение FALSE. В качестве альтернативы, в этом случае, во вторичном пути клонирования драйвер установит как Offset0, так и Offset180 в TRUE, а другие значения смещения в FALSE.

Портретный первый пример
Если исходное отображение находится в книжной ориентации и подключается к внешнему монитору с основной альбомной ориентацией, в сценарии дополнительного клонирования драйвер установит либо Offset270, либо Offset90 в TRUE.

Для получения дополнительной информации см. Поддержка независимого от пути поворота.