マルチプレーン オーバーレイのサポート
マルチプレーン オーバーレイ (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 が実装する必要がある関数が含まれています。
UMD は、アダプター固有の CreateDevice(D3D10) 関数が呼び出されたときに、DXGI1_3_DDI_BASE_FUNCTIONS構造体のメンバーを介して DXGI MPO 関数へのポインターを提供します。 詳細については、「DXGI DDI のサポート」を参照してください。
UMD は、ドライバーの CreateDevice 関数の呼び出しのD3DDDI_DEVICEFUNCS構造体のメンバーを介して Direct3D MPO 関数へのポインターを提供します。
次の表に、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_TYPEのD3DDDICAPS_GET_MULTIPLANE_OVERLAY_GROUP_CAPS値は、MPO の UMD サポートを示します。