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


Поддержка поворота Path-Independent

Начиная с Windows 8.1 с обновлением операционная система поддерживает клонирование книжных дисплеев на дисплеях с максимальным разрешением. Драйвер мини-порта дисплея должен задать правильные значения смещения в структуре D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT для основного пути клонирования и вторичного пути клонирования, как описано в разделе Поддержка поворота в драйвере минипорта дисплея.

Эти интерфейсы драйверов устройств (DDIs) являются новыми в Windows 8.1 с обновлением:

  • D3DKMDT_VPPR_GET_CONTENT_ROTATION
  • D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART
  • D3DKMDT_VPPR_GET_OFFSET_ROTATION

Эти DIS обновляются в Windows 8.1 с обновлением:

Клонирование устройства с книжной ориентацией

Когда драйвер устройства с книжной ориентацией запрашивается для клонирования на монитор с альбомной ориентацией, он должен сообщать о разрешениях в режиме источника (x,y), которые соответствуют разрешениям в основном пути клонирования. Вторичный путь клона может поддерживать значения смещения 90 и 270 градусов (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset90 или . Offset270 имеет значение TRUE). Таким образом, если VidPN фиксируется с D3DKMDT_VIDPN_PRESENT_PATH_ROTATION значение перечисления, указывающее смещение в 90 или 270 градусов, это означает, что разрешения (x,y) будут перевернуты в этом конкретном пути.

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

Примеры сценариев клонирования

Вот типичный сценарий, когда устройство с книжной ориентацией с собственным разрешением 800 (ширина) x 1280 пикселей (высота) подключается в режиме клонирования к альбомному телевизору высотой 1080 пикселей. Драйвер сообщит эти сведения операционной системе:

Исходный режим
1280 x 800

Целевой режим телевизора
1920 x 1080 (масштабирование с сохранением пропорций)

целевой режим устройства
800 x 1280 (масштабирование удостоверений)

основной путь клонирования (TV)
Драйвер поддерживает только D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset0, а также поддержка нормального поворота

вторичный путь клонирования (устройство)
Драйвер поддерживает только D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset270, а также поддержка нормального поворота

Затем вызов функции DxgkDdiCommitVidPn возвращает следующие параметры пути из перечисления D3DKMDT_VIDPN_PRESENT_PATH_ROTATION :

основной путь клонирования (TV)
D3DKMDT_VPPR_IDENTITY

вторичный путь клонирования (устройство)
D3DKMDT_VPPR_IDENTITY_OFFSET270

Операционная система ожидает, что драйвер поворачивает предоставленное содержимое на 270 градусов.

Если в раскрывающемся списке Ориентация панели управления Отображением пользователь выбирает параметр Альбомная (перевернутая), вызов функции DxgkDdiCommitVidPn возвращает следующие параметры пути из перечисления D3DKMDT_VIDPN_PRESENT_PATH_ROTATION:

основной путь клонирования (TV)
D3DKMDT_VPPR_ROTATE180

вторичный путь клонирования (устройство)
D3DKMDT_VPPR_ROTATE180_OFFSET270

Если диспетчер окон рабочего стола (DWM) уже повернул содержимое на 180 градусов, драйвер по-прежнему должен повернуть его еще на 270 градусов в пути дополнительного клонирования. В противном случае драйвер должен повернуть содержимое на 180 градусов для телевизора и на 90 градусов для устройства. Обратите внимание, что для смены содержимого драйвер должен задать элемент Rotateструктуры DXGK_PRESENTFLAGS .