Поддержка поворота 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 .