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.
El UMD proporciona punteros a funciones MPO DXGI a través de miembros de la estructura DXGI1_3_DDI_BASE_FUNCTIONS cuando se llama a su función CreateDevice(D3D10) específica del adaptador. Para obtener más información, consulta Compatibilidad con el DDI DXGI.
UmD proporciona punteros a las funciones MPO de Direct3D a través de los miembros de la estructura de D3DDDI_DEVICEFUNCS en una llamada a la función CreateDevice del controlador.
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.