パスに依存しない回転のサポート
Windows 8.1 Update 以降、オペレーティング システムでは、可能な限り最大の解像度で横向き優先ディスプレイでの縦優先ディスプレイの複製がサポートされています。 ディスプレイ ミニポート ドライバーは、「ディスプレイ ミニポート ドライバーでの回転のサポート」の説明に従って、プライマリ 複製パスとセカンダリ 複製パスのD3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT 構造に適切なオフセット値を設定する必要があります。
以下のデバイス ドライバー インターフェイス (DDI) は、Windows 8.1 Update では新規に追加されました。
- D3DKMDT_VPPR_GET_CONTENT_ROTATION
- D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART
- D3DKMDT_VPPR_GET_OFFSET_ROTATION
これらの DDI は、Windows 8.1 Update で更新されます。
縦向き優先デバイスの複製
縦向き優先デバイスのドライバーが横向き優先モニターに複製するように要求された場合、プライマリ クローン パスの解像度に一致するソース モード (x,y) の解像度を報告する必要があります。 セカンダリ 複製パスでは、90 度と 270 度のオフセット値をサポートできます (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT、Offset90 または Offset270 は TRUE です)。 したがって、VidPN が 90 度または 270 度のオフセットを示すD3DKMDT_VIDPN_PRESENT_PATH_ROTATION 列挙値でコミットされると、この特定のパスで (x,y) 解像度が反転されることを意味します。
既定では、オペレーティング システムはセカンダリ クローン パスを内部表示パネルとして選択します。 内部パネルが縦優先の場合、オペレーティング システムはD3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT、内部表示パネルに横モードで表示するために、このパスに設定される Offset270 を想定しています。 セカンダリ クローン パスの横向き優先外部モニターの場合、オペレーティング システムはドライバーがD3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT、Offset90 をサポートすることを想定しています。ただし、これはまれなシナリオである可能性があります。
複製シナリオの例
ネイティブ解像度 800 (幅) x 1280 ピクセル (高さ) の縦向き優先デバイスが、高さ 1080 ピクセルの横向き優先テレビに複製モードで接続される一般的なシナリオを次に示します。 ドライバーは、オペレーティング システムにこの情報を報告します。
ソース モード
1280 x 800
TV ターゲット モード
1920 x 1080 (縦横比保持スケーリング)
デバイス ターゲット モード
800 x 1280 (ID スケーリング)
プライマリ 複製パス (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 度を回転する必要があります。 コンテンツを回転させるには、ドライバーが DXGK_PRESENTFLAGS 構造体の回転 メンバーを設定する必要があります。