多平面重迭支援
多平面重疊 (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 的函式。
當呼叫其配接器特定的 CreateDevice(D3D10) 函式時,UMD 會透過DXGI1_3_DDI_BASE_FUNCTIONS結構的成員提供 DXGI MPO 函式的指標。 如需詳細資訊,請參閱 支援 DXGI DDI。
UMD 會透過呼叫驅動程式 CreateDevice 函式中的D3DDDI_DEVICEFUNCS結構成員,提供 Direct3D 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 支援。