Compatibilidad con superposición multiplano

La compatibilidad con superposición multiplano (MPO) es una característica WDDM que permite al hardware gráfico componer varias capas de contenido en una sola imagen que luego puede mostrar en una pantalla. Básicamente, es un método acelerado por hardware para componer diferentes "planos" de contenido , donde un plano puede ser un vídeo, el escritorio, una ventana de aplicación, etc., sin tener que implicar la CPU ni usar otros recursos del sistema para realizar la combinación en software.

La característica MPO está disponible a partir de Windows 8.1 (WDDM 1.3). En este artículo se describe cómo implementar esta funcionalidad en el controlador.

Funciones mpo llamadas por controladores de pantalla en modo de usuario

En la tabla siguiente se enumeran las funciones mpO en modo de usuario que el sistema operativo implementa y que los controladores de pantalla en modo de usuario (UMD) pueden llamar.

Función Descripción
pfnPresentMultiPlaneOverlayCb (D3D) Copia el contenido de una asignación de MPO de origen a una asignación de destino.
pfnPresentMultiPlaneOverlayCb (DXGI) Copia el contenido de una asignación de MPO de origen a una asignación de destino.

Funciones de MPO implementadas por el UMD

Esta sección contiene funciones que un UMDM 1.3 y versiones posteriores deben implementar para admitir MPO.

En la tabla siguiente se enumeran las funciones que un UMD debe implementar para admitir MPO.

Función Descripción
pfnCheckMultiPlaneOverlaySupport (D3D) Llamado por el entorno de ejecución de Direct3D para comprobar los detalles sobre la compatibilidad de hardware con MPOs.
pfnCheckMultiPlaneOverlaySupport (DXGI) Llamado por el entorno de ejecución de DirectX Graphics Infrastructure (DXGI) para comprobar los detalles sobre la compatibilidad de hardware con MPOs.
pfnPresentMultiplaneOverlay (D3D) Llamado por el tiempo de ejecución de Direct3D para notificar al UMD que una aplicación terminó de representar y solicitar que el UMD muestre la superficie de origen. El controlador debe mostrar esta superficie copiando, volteando o realizando una operación de relleno de color.
pfnPresentMultiplaneOverlay (DXGI) Llamado por el tiempo de ejecución de DXGI para notificar al UMD que una aplicación finalizó la representación y solicita que el UMD muestre la superficie de origen. El controlador debe mostrar la superficie copiando, volteando o realizando una operación de relleno de color.

En la tabla siguiente se enumeran las funciones que un UMD puede implementar opcionalmente.

Función Descripción
pfnGetMultiPlaneOverlayCaps Lo llama el tiempo de ejecución de DXGI para solicitar que umD obtenga funcionalidades básicas del plano de superposición.
pfnGetMultiplaneOverlayGroupCaps Lo llama el tiempo de ejecución de DXGI para solicitar que el UMD obtenga un grupo de funcionalidades del plano de superposición.

Estructuras y enumeraciones en modo de usuario de MPO

Todas las estructuras y enumeraciones en modo de usuario que se usan con interfaces de controlador de dispositivo MPO (DDIs).

DDI Descripción
D3DDDI_MULTIPLANE_ALLOCATION_INFO Especifica información sobre una asignación de MPO.
D3DDDI_MULTIPLANE_OVERLAY_ATTRIBUTES Usado por el UMD para especificar los atributos del plano de superposición.
D3DDDI_MULTIPLANE_OVERLAY_BLEND Identifica una operación de combinación que se va a realizar en un plano de superposición.
D3DDDI_MULTIPLANE_OVERLAY_CAPS Usado por el UMD para especificar las funcionalidades del plano de superposición.
D3DDDI_MULTIPLANE_OVERLAY_FEATURE_CAPS Identifica las funcionalidades de superposición.
D3DDDI_MULTIPLANE_OVERLAY_FLAGS Identifica una operación de volteo que se va a realizar en un plano de superposición.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS Usado por el UMD para especificar un grupo de funcionalidades del plano de superposición.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS_INPUT Especifica información sobre un grupo de funcionalidades de MPO.
D3DDDI_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifica los procesos de filtrado que el hardware debe realizar cuando se amplían o reducen los datos de MPO.
D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifica el formato de fotograma de vídeo del plano de superposición. Solo se admite el valor de D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE.
D3DDDI_MULTIPLANE_OVERLAY_YCbCr_FLAGS Identifica el intervalo y la información de conversión de YUV que describe un MPO.
D3DDDI_PRESENT_MULTIPLANE_OVERLAY Especifica un plano de superposición que se va a mostrar.
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT Se usa en una llamada a la función pfnCheckMultiPlaneOverlaySupport (D3D) para comprobar los detalles de la compatibilidad de hardware con mpOs.
D3DDDIARG_PRESENTMULTIPLANEOVERLAY Especifica un recurso mpO que se va a mostrar.
D3DDDICB_PRESENTMULTIPLANEOVERLAY Describe las asignaciones de MPO de las que se copia el contenido en y desde.

Funciones implementadas por el controlador en modo kernel de MPO

En la tabla siguiente se enumeran las funciones de MPO que implementa el controlador de miniporte (KMD) en modo kernel.

Función Descripción
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT Llamado por el subsistema del kernel de gráficos de DirectX para comprobar los detalles de la compatibilidad de hardware con MPOs.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 Se llama a la siguiente función para determinar si se admite una configuración específica de superposición de varios planos.
DXGKDDI_GETMULTIPLANEOVERLAYCAPS Se llama para recuperar las funcionalidades de MPO. Se requiere compatibilidad con este DDI para cualquier controlador WDDM 2.2 que quiera admitir varios planos.
DXGKDDI_POSTMULTIPLANEOVERLAYPRESENT Se llama después de que se aplique una nueva configuración de superposición de varios planos, lo que permite al controlador optimizar el estado de hardware. Opcional para los controladores WDDM 1.3 2.0 o posteriores que admiten superposiciones de varios planos.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 Se llama para cambiar la configuración de superposición que se muestra.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT2 Se llama a DxgkDdiCheckMultiPlaneOverlaySupport2 para determinar si se admite una configuración específica de superposición de varios planos.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Establece las direcciones de varias superficies, incluida la cadena de intercambio del Administrador de ventanas de escritorio (DWM), que están asociadas a un origen de vídeo presente en particular. Esta función se usa para presentar varias superficies (incluida la cadena de intercambio de DWM) a la pantalla.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 Se llama a DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 para cambiar la configuración de superposición que se muestra.

Estructuras en modo kernel de MPO

En la tabla siguiente se enumeran las estructuras que usa KMD.

Estructura Descripción
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_PLANE Especifica los atributos de compatibilidad que proporciona el hardware para los MPO.
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO Especifica limitaciones en la compatibilidad de hardware con MPOs.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES Usado por el KMD para especificar atributos del plano de superposición.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 el KMD usa DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 para especificar atributos del plano de superposición.
DXGK_MULTIPLANE_OVERLAY_BLEND Identifica una operación de combinación que se va a realizar en un plano de superposición.
DXGK_MULTIPLANE_OVERLAY_FLAGS Identifica una operación de volteo que se va a realizar en un plano de superposición.
DXGK_MULTIPLANE_OVERLAY_PLANE Especifica un plano de superposición que se va a mostrar en una llamada a la función DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay.
DXGK_MULTIPLANE_OVERLAY_PLANE2 DXGK_MULTIPLANE_OVERLAY_PLANE2 se usa con la función DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 para especificar un plano de superposición que se va a mostrar.
DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE describe los atributos del plano de superposición de varios planos, la asignación y el vídeo que presentan el número de identificación del origen de red.
DXGK_MULTIPLANE_OVERLAY_VSYNC_INFO Especifica un plano de superposición que se va a mostrar durante un intervalo de VSync.
DXGK_MULTIPLANE_OVERLAY_YCbCr_FLAGS Identifica el intervalo y la información de conversión de YUV que describe un MPO.
DXGK_PRESENTMULTIPLANEOVERLAYINFO Especifica información sobre una entrada VidPN y un plano de superposición que se va a mostrar.
DXGK_PRESENTMULTIPLANEOVERLAYLIST Especifica un plano de superposición que se va a mostrar en una llamada a la función DxgkDdiPresent.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT Se usa en una llamada a la función DxgkDdiCheckMultiPlaneOverlaySupport para comprobar los detalles de la compatibilidad de hardware con mpOs.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 se pasa a la función DxgkDdiCheckMultiPlaneOverlaySupport2 para determinar si se admite una configuración específica de superposición de varios planos.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Contiene argumentos para la función DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 se pasa a la función DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 para cambiar la configuración de superposición que se muestra.

Enumeraciones en modo kernel de MPO

En la tabla siguiente se enumeran las enumeraciones usadas por KMD.

Enumeración Descripción
DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE Identifica el modo de volteo estéreo del plano de superposición. Solo se admite el valor de DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE.
DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT Identifica el formato de presentación estéreo del plano de superposición. Solo se admite el valor de DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO.
DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifica los procesos de filtrado que el hardware debe realizar cuando se amplían o reducen los datos de MPO.
DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifica el formato de fotograma de vídeo del plano de superposición. Solo se admite el valor de DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE.

El valor de D3DDDICAPS_GET_MULTIPLANE_OVERLAY_GROUP_CAPS de D3DDDICAPS_TYPE indica la compatibilidad de UMD con los MPO.