Partilhar via


Suporte de sobreposição multiplano

Este artigo descreve o recurso de sobreposição de vários planos (MPO) introduzido no Windows 8.1 (WDDM 1.3). Ele lista as funções fornecidas pelo sistema e implementadas pelo driver usadas para suportar esse recurso em um driver de exibição de modo de usuário (UMD) e um driver de miniporta de exibição de modo kernel (KMD) no WDDM 1.3 e posterior. Ele também lista as estruturas e enumerações que são usadas com MPOs.

O suporte a MPO permite que o hardware gráfico componha várias camadas de conteúdo em uma única imagem que pode ser exibida em uma tela. É essencialmente um método acelerado por hardware para compor diferentes planos de conteúdo sem ter que envolver a CPU ou usar outros recursos do sistema para fazer a mistura em software. Um avião pode ser um vídeo, a área de trabalho, uma janela de aplicativo e assim por diante. O hardware pode então pegar esses aviões e combiná-los em uma única imagem que é enviada para o display.

Funções MPO chamadas por controladores de exibição em modo utilizador

A tabela a seguir lista as funções MPO de modo de usuário que o sistema operacional implementa e que os drivers de exibição de modo de usuário (UMDs) podem chamar.

Função Descrição
D3D: pfnPresentMultiPlaneOverlayCb Copia o conteúdo de uma alocação MPO de origem para uma alocação de destino.
DXGI: pfnPresentMultiPlaneOverlayCb Copia o conteúdo de uma alocação MPO de origem para uma alocação de destino.

Funções MPO implementadas pela UMD

Esta seção contém funções que um WDDM 1.3 e UMD posterior deve implementar para oferecer suporte a MPOs.

A tabela a seguir lista as funções que um UMD deve implementar para oferecer suporte a MPOs.

Função Descrição
pfnCheckMultiPlaneOverlaySupport (D3D) Chamado pelo tempo de execução do D3D para verificar os detalhes sobre o suporte de hardware para MPOs.
pfnCheckMultiPlaneOverlaySupport (DXGI) Chamado pelo tempo de execução do DirectX Graphics Infrastructure (DXGI) para verificar os detalhes sobre o suporte de hardware para MPOs.
pfnPresentMultiplaneOverlay (D3D) Chamado pelo runtime D3D para notificar o UMD que uma aplicação concluiu a renderização e solicitar que o UMD exiba a superfície fonte. O driver deve exibir essa superfície copiando, invertendo ou executando uma operação de preenchimento de cores.
pfnPresentMultiplaneOverlay (DXGI) Chamado pelo runtime DXGI para notificar o UMD de que uma aplicação terminou a renderização e solicita que o UMD mostre a superfície de origem. O UMD deve exibir a superfície copiando, invertendo ou executando uma operação de preenchimento de cores.

A tabela a seguir lista as funções DDI DXGI que um UMD pode implementar opcionalmente.

Função Descrição
pfnGetMultiPlaneOverlayCaps Chamado pelo runtime DXGI para que o UMD solicite capacidades básicas de plano de sobreposição.
pfnGetMultiplaneOverlayGroupCaps Chamado pelo runtime DXGI para solicitar que o UMD obtenha um grupo de capacidades de plano de sobreposição.

Estruturas e enumerações de modo de usuário MPO

Esta seção lista as estruturas de modo de usuário e enumerações que são usadas com DDIs MPO.

Estrutura/Enum Descrição
D3DDDI_MULTIPLANE_ALLOCATION_INFO Especifica informações sobre uma alocação MPO.
D3DDDI_MULTIPLANE_OVERLAY_ATTRIBUTES Usado pelo UMD para especificar atributos de plano de sobreposição.
D3DDDI_MULTIPLANE_OVERLAY_BLEND Identifica uma operação de mistura a ser executada em um plano de sobreposição.
D3DDDI_MULTIPLANE_OVERLAY_CAPS Usado pelo UMD para especificar as capacidades do plano de sobreposição.
D3DDDI_MULTIPLANE_OVERLAY_FEATURE_CAPS Identifica as capacidades de sobreposição.
D3DDDI_MULTIPLANE_OVERLAY_FLAGS Identifica uma operação de inversão a ser executada em um plano de sobreposição.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS Usado pelo UMD para especificar um grupo de recursos de plano de sobreposição.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS_INPUT Especifica informações sobre um grupo de capacidades MPO.
D3DDDI_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifica os processos de filtragem que o hardware deve executar quando estica ou reduz os dados MPO.
D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifica o formato de quadro de vídeo do plano de sobreposição. Apenas o valor D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE é suportado.
D3DDDI_MULTIPLANE_OVERLAY_YCbCr_FLAGS Identifica o intervalo YUV e as informações de conversão que descrevem um MPO.
D3DDDI_PRESENT_MULTIPLANE_OVERLAY Especifica um plano de sobreposição a ser exibido.
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT Utilizado numa chamada para a função pfnCheckMultiPlaneOverlaySupport (D3D) para verificar detalhes sobre o suporte de hardware para MPOs.
D3DDDIARG_PRESENTMULTIPLANEOVERLAY Especifica um recurso MPO a ser exibido.
D3DDDICB_PRESENTMULTIPLANEOVERLAY Descreve as alocações de MPO para as quais o conteúdo é copiado e de onde é copiado.

Funções implementadas pelo driver no modo kernel MPO

A tabela a seguir lista as funções MPO que o driver de miniporta de exibição (KMD) do modo kernel implementa.

Função Descrição
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT Chamado pelo subsistema do kernel de gráficos DirectX para verificar os detalhes do suporte de hardware para MPOs.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 A função a seguir é chamada para determinar se uma configuração específica de sobreposição de vários planos é suportada.
DXGKDDI_GETMULTIPLANEOVERLAYCAPS Chamado para recuperar capacidades de MPO. O suporte para este DDI é obrigatório para qualquer KMD WDDM 2.2 que pretenda suportar múltiplos planos.
DXGKDDI_POSTMULTIPLANEOVERLAYPRESENT É chamada após uma nova configuração de sobreposição multipla ser aplicada, permitindo que o KMD otimize o estado do hardware. Opcional para KMDs WDDM 1.3 ou posteriores que suportam sobreposições de vários planos.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 Chamado para alterar a configuração de sobreposição que está a ser exibida.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT2 DxgkDdiCheckMultiPlaneOverlaySupport2 é chamado para determinar se uma determinada configuração de sobreposição de múltiplos planos é suportada.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Define os endereços de várias superfícies associadas a uma determinada fonte de vídeo presente. Essas superfícies incluem o swapchain do Desktop Window Manager (DWM). Esta função é usada para apresentar várias superfícies (incluindo o swapchain do DWM) no ecrã.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 é chamado para alterar a configuração de sobreposição atualmente exibida.

Estruturas de modo kernel MPO

A tabela a seguir lista as estruturas que o KMD usa.

Estrutura Descrição
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_PLANE Especifica os atributos de suporte que o hardware fornece para MPOs.
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO Especifica as limitações no suporte de hardware de MPOs.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES Usado pelo KMD para especificar atributos de plano de sobreposição.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 é usado pelo KMD para especificar atributos de plano de sobreposição.
DXGK_MULTIPLANE_OVERLAY_BLEND Identifica uma operação de mistura a ser executada em um plano de sobreposição.
DXGK_MULTIPLANE_OVERLAY_FLAGS Identifica uma operação de inversão a ser executada num plano de sobreposição.
DXGK_MULTIPLANE_OVERLAY_PLANE Especifica um plano de sobreposição a ser exibido numa chamada para a função DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay.
DXGK_MULTIPLANE_OVERLAY_PLANE2 DXGK_MULTIPLANE_OVERLAY_PLANE2 é usado com a função DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 para especificar um plano de sobreposição a ser exibido.
DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE descreve os atributos do plano de sobreposição de vários planos, alocação e número de identificação da fonte de rede de apresentação de vídeo.
DXGK_MULTIPLANE_OVERLAY_VSYNC_INFO Especifica um plano de sobreposição a ser exibido durante um intervalo VSync.
DXGK_MULTIPLANE_OVERLAY_YCbCr_FLAGS Identifica o intervalo YUV e as informações de conversão que descrevem um MPO.
DXGK_PRESENTMULTIPLANEOVERLAYINFO Especifica informações sobre uma entrada VidPN e um plano de sobreposição a ser exibido.
DXGK_PRESENTMULTIPLANEOVERLAYLIST Especifica um plano de sobreposição a ser exibido em uma chamada para a função DxgkDdiPresent.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT Usado numa chamada para a função DxgkDdiCheckMultiPlaneOverlaySupport para verificar detalhes sobre o suporte de hardware para MPOs.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 é passado para a função DxgkDdiCheckMultiPlaneOverlaySupport2 para determinar se uma configuração específica de sobreposição de vários planos é suportada.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Contém argumentos para a função DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 é passado para a função DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 para alterar a configuração de sobreposição que está sendo exibida.

Enumerações de modo kernel MPO

A tabela a seguir lista as enumerações usadas pelo KMD.

Enumeração Descrição
DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE Identifica o modo de inversão estéreo do plano de sobreposição. Apenas o valor DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE é suportado.
DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT Identifica o formato de apresentação estéreo da camada de sobreposição. Apenas o valor DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO é suportado.
DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifica os processos de filtragem que o hardware deve executar quando estica ou reduz os dados MPO.
DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifica o formato de imagem de vídeo do plano de sobreposição. Apenas o valor DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE é suportado.

O valor D3DDDICAPS_GET_MULTIPLANE_OVERLAY_GROUP_CAPS em D3DDDICAPS_TYPE indica suporte UMD para MPOs.