マルチプレーン オーバーレイのサポート

マルチプレーン オーバーレイ (MPO) のサポートは、グラフィックス ハードウェアがコンテンツの複数のレイヤーを 1 つのイメージに作成し、画面に表示できるようにする WDDM 機能です。 これは基本的に、CPU を含めたり、他のシステム リソースを使用してソフトウェアのブレンドを行ったりすることなく、プレーンをビデオ、デスクトップ、アプリケーション ウィンドウなど、さまざまな "平面" のコンテンツを合成するハードウェアアクセラレータ方式です。

MPO 機能は、Windows 8.1 (WDDM 1.3) 以降で使用できます。 この記事では、ドライバーにこの機能を実装する方法について説明します。

ユーザー モード ディスプレイ ドライバーによって呼び出される MPO 関数

次の表に、オペレーティング システムが実装するユーザー モードの MPO 関数と、ユーザー モード ディスプレイ ドライバー (UMD) が呼び出すことができるユーザー モードの MPO 関数を示します。

関数 説明
pfnPresentMultiPlaneOverlayCb (D3D) ソース MPO 割り当てからコピー先の割り当てにコンテンツをコピーします。
pfnPresentMultiPlaneOverlayCb (DXGI) ソース MPO 割り当てからコピー先の割り当てにコンテンツをコピーします。

UMD によって実装される MPO 関数

このセクションには、MPO をサポートするために WDDM 1.3 以降の UMD が実装する必要がある関数が含まれています。

次の表に、MPO をサポートするために UMD が実装する必要がある関数の一覧を示します。

関数 説明
pfnCheckMultiPlaneOverlaySupport (D3D) Direct3D ランタイムによって呼び出され、MTO のハードウェア サポートの詳細を確認します。
pfnCheckMultiPlaneOverlaySupport (DXGI) DirectX グラフィックス インフラストラクチャ (DXGI) ランタイムによって呼び出され、MPO のハードウェア サポートの詳細を確認します。
pfnPresentMultiplaneOverlay (D3D) Direct3D ランタイムによって呼び出され、アプリケーションがレンダリングを完了したことを UMD に通知し、UMD にソース サーフェスを表示するよう要求します。 ドライバーは、コピー、反転、またはカラーフィル操作を実行して、この画面を表示する必要があります。
pfnPresentMultiplaneOverlay (DXGI) アプリケーションがレンダリングを完了したことを UMD に通知し、UMD にソース サーフェスを表示するよう要求するために、DXGI ランタイムによって呼び出されます。 ドライバーは、コピー、反転、またはカラーフィル操作を実行して、サーフェスを表示する必要があります。

次の表に、UMD が必要に応じて実装できる関数を示します。

関数 説明
pfnGetMultiPlaneOverlayCaps UMD が基本的なオーバーレイ プレーン機能を取得するように要求するために、DXGI ランタイムによって呼び出されます。
pfnGetMultiplaneOverlayGroupCaps DXGI ランタイムによって呼び出され、UMD がオーバーレイ プレーン機能のグループを取得するように要求します。

MPO ユーザー モードの構造体と列挙型

MPO デバイス ドライバー インターフェイス (DDI) で使用されるすべてのユーザー モード構造体と列挙体。

DDI 説明
D3DDDI_MULTIPLANE_ALLOCATION_INFO MPO 割り当てに関する情報を指定します。
D3DDDI_MULTIPLANE_OVERLAY_ATTRIBUTES オーバーレイ 平面属性を指定するために UMD によって使用されます。
D3DDDI_MULTIPLANE_OVERLAY_BLEND オーバーレイ プレーンで実行されるブレンド操作を特定します。
D3DDDI_MULTIPLANE_OVERLAY_CAPS オーバーレイ 平面の機能を指定するために UMD によって使用されます。
D3DDDI_MULTIPLANE_OVERLAY_FEATURE_CAPS オーバーレイ機能を特定します。
D3DDDI_MULTIPLANE_OVERLAY_FLAGS オーバーレイ プレーンで実行される反転操作を特定します。
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS オーバーレイ プレーン機能のグループを指定するために UMD によって使用されます。
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS_INPUT MPO 機能グループに関する情報を指定します。
D3DDDI_MULTIPLANE_OVERLAY_STRETCH_QUALITY MPO データを拡張または縮小するときにハードウェアが実行する必要があるフィルター処理プロセスを識別します。
D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT オーバーレイ プレーンのビデオ フレーム形式を特定します。 D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE 値のみがサポートされています。
D3DDDI_MULTIPLANE_OVERLAY_YCbCr_FLAGS MPO を記述する YUV 範囲と変換情報を識別します。
D3DDDI_PRESENT_MULTIPLANE_OVERLAY 表示するオーバーレイ プレーンを指定します。
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT pfnCheckMultiPlaneOverlaySupport (D3D) 関数の呼び出しで、MTO のハードウェア サポートの詳細を確認するために使用されます。
D3DDDIARG_PRESENTMULTIPLANEOVERLAY 表示する MPO リソースを指定します。
D3DDDICB_PRESENTMULTIPLANEOVERLAY コンテンツのコピーの送受信を行う MPO 割り当てについて説明します。

MPO カーネル モード ドライバー実装関数

次の表に、カーネル モードディスプレイ ミニポート ドライバー (KMD) が実装する MPO 関数の一覧を示します。

関数 説明
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT DirectX グラフィックス カーネル サブシステムによって呼び出され、MTO のハードウェア サポートの詳細を確認します。
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 次の関数は、特定のマルチプレーン オーバーレイ構成がサポートされているかどうかを判断するために呼び出されます。
DXGKDDI_GETMULTIPLANEOVERLAYCAPS MPO 機能を取得するために呼び出されます。 複数のプレーンをサポートする WDDM 2.2 ドライバーでは、この DDI のサポートが必要です。
DXGKDDI_POSTMULTIPLANEOVERLAYPRESENT ドライバーがハードウェアの状態を最適化できるようにするために、新しいマルチプレーン オーバーレイ構成が有効になった後で呼び出されます。 マルチプレーン オーバーレイをサポートする WDDM 1.3 2.0 以降のドライバーの場合は省略可能です。
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 表示されているオーバーレイ構成を変更するために呼び出されます。
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT2 DxgkDdiCheckMultiPlaneOverlaySupport2 は、特定のマルチプレーン オーバーレイ構成がサポートされているかどうかを判断するために呼び出されます。
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY デスクトップ ウィンドウ マネージャー (DWM) のスワップチェーンなど、特定のビデオの存在のソースに関連付けられている複数のサーフェスのアドレスを設定します。 この関数は、複数のサーフェス (DWM のスワップチェーンなど) を画面に表示するために使用されます。
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 は、表示されているオーバーレイ構成を変更するために呼び出されます。

MPO カーネル モード構造体

次の表に、KMD で使用される構造を示します。

構造 説明
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_PLANE ハードウェアが MPO に提供するサポート属性を指定します。
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO MTO のハードウェア サポートに関する制限事項を指定します。
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES オーバーレイ 平面属性を指定するために KMD によって使用されます。
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2は、オーバーレイ 平面属性を指定するために KMD によって使用されます。
DXGK_MULTIPLANE_OVERLAY_BLEND オーバーレイ プレーンで実行されるブレンド操作を特定します。
DXGK_MULTIPLANE_OVERLAY_FLAGS オーバーレイ プレーンで実行される反転操作を特定します。
DXGK_MULTIPLANE_OVERLAY_PLANE DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay 関数の呼び出しで表示するオーバーレイ プレーンを指定します。
DXGK_MULTIPLANE_OVERLAY_PLANE2 DXGK_MULTIPLANE_OVERLAY_PLANE2 は、表示するオーバーレイ プレーンを指定するために、DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 関数と組み合わせて使用します。
DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE は、マルチプレーン オーバーレイ プレーンの属性、割り当て、Video Present Network のソース識別番号を記述します。
DXGK_MULTIPLANE_OVERLAY_VSYNC_INFO VSync 間隔中に表示するオーバーレイ プレーンを指定します。
DXGK_MULTIPLANE_OVERLAY_YCbCr_FLAGS MPO を記述する YUV 範囲と変換情報を識別します。
DXGK_PRESENTMULTIPLANEOVERLAYINFO VidPN 入力と表示するオーバーレイ プレーンに関する情報を指定します。
DXGK_PRESENTMULTIPLANEOVERLAYLIST DxgkDdiPresent 関数の呼び出しで表示するオーバーレイ プレーンを指定します。
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT DxgkDdiCheckMultiPlaneOverlaySupport 関数の呼び出しで使用され、MTO のハードウェア サポートの詳細を確認します。
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 は、特定のマルチプレーン オーバーレイ構成がサポートされているかどうかを判断するために、DxgkDdiCheckMultiPlaneOverlaySupport2 関数に渡されます。
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay 関数の引数を格納します。
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 は、表示されているオーバーレイ構成を変更するために、DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 関数に渡されます。

MPO カーネル モード列挙型

次の表に、KMD で使用される列挙体を示します。

列挙 説明
DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE オーバーレイ プレーンのステレオ フリップ モードを特定します。 DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE 値のみがサポートされています。
DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT オーバーレイ プレーンのステレオ表示形式を特定します。 DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO 値のみがサポートされています。
DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY MPO データを拡張または縮小するときにハードウェアが実行する必要があるフィルター処理プロセスを識別します。
DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT オーバーレイ プレーンのビデオ フレーム形式を特定します。 DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE 値のみがサポートされています。

D3DDDICAPS_TYPED3DDDICAPS_GET_MULTIPLANE_OVERLAY_GROUP_CAPS値は、MPO の UMD サポートを示します。