多平面重迭支援

多平面重疊 (MPO) 支援是一項 WDDM 功能,可讓圖形硬體將多層內容撰寫成單一影像,然後可在螢幕上顯示。 它基本上是一種硬體加速的方法,可組合不同的內容「平面」,其中平面可以是視訊、桌面、應用程式視窗等,而不需要牽涉到 CPU,或使用其他系統資源來執行軟體的混合。

MPO 功能可從 Windows 8.1 (WDDM 1.3) 開始提供。 本文說明如何在驅動程序中實作這項功能。

由使用者模式顯示驅動程式呼叫的 MPO 函式

下表列出作業系統所實作的使用者模式 MPO 函式,以及使用者模式顯示驅動程式 (UMD) 可以呼叫。

函式 描述
pfnPresentMultiPlaneOverlayCb (D3D) 將來源 MPO 設定的內容複製到目的地配置。
pfnPresentMultiPlaneOverlayCb (DXGI) 將來源 MPO 設定的內容複製到目的地配置。

UMD 所實作的 MPO 函式

本節包含 WDDM 1.3 和更新版本的 UMD 必須實作才能支援 MPO 的函式。

下表列出 UMD 必須實作才能支援 MPO 的函式。

函式 描述
pfnCheckMultiPlaneOverlaySupport (D3D) Direct3D 執行時間呼叫以檢查 MPO 硬體支援的詳細數據。
pfnCheckMultiPlaneOverlaySupport (DXGI) DirectX Graphics Infrastructure (DXGI) 運行時間呼叫,以檢查 MPO 硬體支援的詳細數據。
pfnPresentMultiplaneOverlay (D3D) Direct3D 執行時間呼叫以通知 UMD 應用程式完成轉譯,並要求 UMD 顯示來源介面。 驅動程式應該藉由複製、翻轉或執行色彩填滿作業來顯示此表面。
pfnPresentMultiplaneOverlay (DXGI) DXGI 運行時間呼叫,通知 UMD 應用程式完成轉譯,並要求 UMD 顯示來源介面。 驅動程式應該藉由複製、翻轉或執行色彩填滿作業來顯示表面。

下表列出 UMD 可以選擇性地實作的函式。

函式 描述
pfnGetMultiPlaneOverlayCaps 由 DXGI 執行時間呼叫,要求 UMD 取得基本重疊平面功能。
pfnGetMultiplaneOverlayGroupCaps 由 DXGI 執行時間呼叫,要求 UMD 取得一組重疊平面功能。

MPO 使用者模式結構和列舉

與 MPO 裝置驅動器介面 (DIS) 搭配使用的所有使用者模式結構和列舉。

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) 函式,以檢查 MPO 硬體支援的詳細數據。
D3DDDIARG_PRESENTMULTIPLANEOVERLAY 指定要顯示的 MPO 資源。
D3DDDICB_PRESENTMULTIPLANEOVERLAY 描述內容複製到和複製來源的 MPO 配置。

MPO 內核模式驅動程序實作的函式

下表列出核心模式顯示迷你埠驅動程式 (KMD) 實作的 MPO 函式。

函式 描述
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT DirectX 圖形核心子系統呼叫,以檢查 MPO 的硬體支援詳細數據。
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 指定 MPO 硬體支援的限制。
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES KMD 用來指定重疊平面屬性。
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 KMD 會使用DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2來指定重疊平面屬性。
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描述多平面重疊平面屬性、配置和視訊呈現網路來源標識碼。
DXGK_MULTIPLANE_OVERLAY_VSYNC_INFO 指定要在 VSync 間隔期間顯示的重疊平面。
DXGK_MULTIPLANE_OVERLAY_YCbCr_FLAGS 識別描述 MPO 的 YUV 範圍和轉換資訊。
DXGK_PRESENTMULTIPLANEOVERLAYINFO 指定要顯示之 VidPN 輸入和重疊平面的資訊。
DXGK_PRESENTMULTIPLANEOVERLAYLIST 指定要在 DxgkDdiPresent 函式呼叫中顯示的重疊平面。
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT 用於呼叫 DxgkDdiCheckMultiPlaneOverlaySupport 函式,以檢查 MPO 硬體支援的詳細數據。
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 支援。