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


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

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

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

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

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

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

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

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

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

Основной целевой объект Дополнительный целевой объект Флаг поворота Поведение драйвера

Не повернуто

Не повернуто

Не задано

Вращение драйвера не выполняется.

Не повернуто

Поворачивать

Не задано

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

Поворачивать

Не повернуто

Присвойте параметру

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

Поворачивать

Не повернуто

Не задано

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

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

Поворачивать

Поворачивать

Присвойте параметру

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

Поворачивать

Поворачивать

Не задано

Клиент с поддержкой ротации уже правильно сориентировал содержимое источника. Поэтому дополнительная ротация не требуется.

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

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

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

Требование: В основном пути клонирования драйвер должен задать для offset0 значение TRUE , а для остальных трех значений смещения в 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 , а остальные 3 значения смещения в D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT на FALSE. Кроме того, в этом случае в дополнительном пути клонирования драйвер устанавливает для offset0 и Offset180значение TRUE , а для других значений смещения — FALSE.

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

Дополнительные сведения см. в разделе Поддержка поворота Path-Independent.