Multiplane overlay support

Multiplane overlays can be supported by Windows Display Driver Model (WDDM) 1.3 and later drivers. This capability is new starting with Windows 8.1.

These sections describe how to implement this capability in your driver.

Multiplane overlay functions called by user-mode display drivers

All user-mode multiplane overlay functions that the operating system implements.

Function Description
pfnPresentMultiPlaneOverlayCb (D3D) Copies content from a source multiplane overlay allocation to a destination allocation. Can be called by Windows Display Driver Model (WDDM) 1.3 or later user-mode display drivers.
pfnPresentMultiPlaneOverlayCb (DXGI) Copies content from a source multiplane overlay allocation to a destination allocation. Can be called by WDDM 1.3 or later user-mode display drivers.

Multiplane overlay functions implemented by the user-mode driver

This section contains functions that a Windows Display Driver Model (WDDM) 1.3 and later user-mode display driver must implement in order to support multiplane overlays.

The driver supplies pointers to DXGI multiplane overlay functions through members of the DXGI1_3_DDI_BASE_FUNCTIONS structure in a call to the user-mode display driver's adapter-specific CreateDevice(D3D10) function. For more info, see Supporting the DXGI DDI.

The driver supplies pointers to Microsoft Direct3D multiplane overlay functions through members of the D3DDDI_DEVICEFUNCS structure in a call to the driver's CreateDevice function.

All functions that a user-mode driver must implement in order to support multiplane overlays.

Function Description
pfnCheckMultiPlaneOverlaySupport (D3D) Called by the Direct3D runtime to check the details on hardware support for multiplane overlays.
pfnCheckMultiPlaneOverlaySupport (DXGI) Called by the Microsoft DirectX Graphics Infrastructure (DXGI) runtime to check the details on hardware support for multiplane overlays.
pfnGetMultiPlaneOverlayCaps Called by the DXGI runtime to request that the user-mode display driver get basic overlay plane capabilities. Optionally implemented by WDDM 1.3 and later user-mode display drivers.
pfnGetMultiplaneOverlayGroupCaps Called by the DXGI runtime to request that the user-mode display driver get a group of overlay plane capabilities. Optionally implemented by WDDM 1.3 and later user-mode display drivers.
pfnPresentMultiplaneOverlay (D3D) Called by the Direct3D runtime to notify the user-mode display driver that an application finished rendering and requests that the driver display the source surface by either copying or flipping or that the driver perform a color-fill operation. Must be implemented by WDDM 1.3 or later drivers that support multiplane overlays.
pfnPresentMultiplaneOverlay (DXGI) Called by the DXGI runtime to notify the user-mode display driver that an application finished rendering and requests that the driver display the source surface by either copying or flipping or that the driver perform a color-fill operation. Must be implemented by WDDM 1.3 or later drivers that support multiplane overlays.

Multiplane overlay user-mode structures and enumerations

All user-mode structures and enumerations that are used with multiplane overlay device driver interfaces (DDIs).

DDI Description
D3DDDI_MULTIPLANE_ALLOCATION_INFO Specifies info about a multiplane overlay allocation.
D3DDDI_MULTIPLANE_OVERLAY_ATTRIBUTES Used by the user-mode display driver to specify overlay plane attributes.
D3DDDI_MULTIPLANE_OVERLAY_BLEND Identifies a blend operation to be performed on an overlay plane.
D3DDDI_MULTIPLANE_OVERLAY_CAPS Used by the user-mode display driver to specify overlay plane capabilities.
D3DDDI_MULTIPLANE_OVERLAY_FEATURE_CAPS Identifies overlay capabilities.
D3DDDI_MULTIPLANE_OVERLAY_FLAGS Identifies a flip operation to be performed on an overlay plane.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS Used by the user-mode display driver to specify a group of overlay plane capabilities.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS_INPUT Specifies info on a multiplane overlay capability group.
D3DDDI_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifies filtering processes that the hardware should perform when it stretches or shrinks multiplane overlay data.
D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifies the overlay plane's video frame format. Only the D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE value is supported.
D3DDDI_MULTIPLANE_OVERLAY_YCbCr_FLAGS Identifies YUV range and conversion info that describes a multiplane overlay.
D3DDDI_PRESENT_MULTIPLANE_OVERLAY Specifies an overlay plane to display.
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT Used in a call to the pfnCheckMultiPlaneOverlaySupport (D3D) function to check details on hardware support for multiplane overlays.
D3DDDIARG_PRESENTMULTIPLANEOVERLAY Specifies a multiplane overlay resource to display.
D3DDDICB_PRESENTMULTIPLANEOVERLAY Describes multiplane overlay allocations that content is copied to and from.

Multiplane overlay kernel-mode driver-implemented functions

All multiplane overlay functions that the display miniport driver implements.

Function Description
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT Called by the Microsoft DirectX graphics kernel subsystem to check the details of hardware support for multiplane overlays.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 The following new function is called to determine whether a specific multi-plane overlay configuration is supported.
DXGKDDI_GETMULTIPLANEOVERLAYCAPS Called to retrieve multiplane overlay capabilities. Support for this DDI is required for any WDDM 2.2 driver that wants to support multiple planes.
DXGKDDI_POSTMULTIPLANEOVERLAYPRESENT Called after a new multi-plane overlay configuration has taken effect, allowing the driver to optimize hardware state. Optional for Windows Display Driver Model (WDDM) 2.0 or later drivers that support multi-plane overlays.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 Called to change the overlay configuration being displayed.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT2 DxgkDdiCheckMultiPlaneOverlaySupport2 is called to determine whether a specific multi-plane overlay configuration is supported.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Sets the addresses of multiple surfaces, including the Desktop Window Manager (DWM)'s swapchain, that are associated with a particular video present source. This function is used to present multiple surfaces (including the DWM’s swapchain) to the screen.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 is called to change the overlay configuration being displayed.

Multiplane overlay kernel-mode structures

All structures that are used by the display miniport driver.

Structure Description
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_PLANE Specifies the support attributes that the hardware provides for multiplane overlays.
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO Specifies limitations on hardware support of multiplane overlays.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES Used by the display miniport driver to specify overlay plane attributes.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 is used by the display miniport driver to specify overlay plane attributes.
DXGK_MULTIPLANE_OVERLAY_BLEND Identifies a blend operation to be performed on an overlay plane.
DXGK_MULTIPLANE_OVERLAY_FLAGS Identifies a flip operation to be performed on an overlay plane.
DXGK_MULTIPLANE_OVERLAY_PLANE Specifies an overlay plane to display in a call to the DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay function.
DXGK_MULTIPLANE_OVERLAY_PLANE2 DXGK_MULTIPLANE_OVERLAY_PLANE2 is used with the DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 function to specify an overlay plane to display.
DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE describes the multi-plane overlay plane attributes, allocation, and video present network source identification number.
DXGK_MULTIPLANE_OVERLAY_VSYNC_INFO Specifies an overlay plane to display during a VSync interval.
DXGK_MULTIPLANE_OVERLAY_YCbCr_FLAGS Identifies YUV range and conversion info that describes a multiplane overlay.
DXGK_PRESENTMULTIPLANEOVERLAYINFO Specifies info on a VidPN input and an overlay plane to display.
DXGK_PRESENTMULTIPLANEOVERLAYLIST Specifies an overlay plane to display in a call to the DxgkDdiPresent function.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT Used in a call to the DxgkDdiCheckMultiPlaneOverlaySupport function to check details on hardware support for multiplane overlays.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 is passed to the DxgkDdiCheckMultiPlaneOverlaySupport2 function to determine whether a specific multi-plane overlay configuration is supported.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Contains arguments for the DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay function.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 is passed to the DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 function to change the overlay configuration being displayed.

Multiplane overlay kernel-mode enumerations

All enumerations that are used by the display miniport driver.

Enumeration Description
DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE Identifies the overlay plane's stereo flip mode. Only the DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE value is supported.
DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT Identifies the overlay plane's stereo presentation format. Only the DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO value is supported.
DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifies filtering processes that the hardware should perform when it stretches or shrinks multiplane overlay data.
DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifies the overlay plane's video frame format. Only the DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE value is supported.

This user-mode enumeration constant value supports multiplane overlays and is new for Windows 8.1:

  • D3DDDICAPS_TYPE (D3DDDICAPS_GET_MULTIPLANE_OVERLAY_GROUP_CAPS constant value)