Compartilhar via


Suporte a sobreposição multiplano

O suporte a MPO (Multiplane Overlay) é um recurso WDDM que 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 de compor diferentes "planos" de conteúdo - onde um plano pode ser um vídeo, a área de trabalho, uma janela de aplicativo, etc. - sem ter que envolver a CPU ou usar outros recursos do sistema para fazer a mistura em software.

O recurso MPO está disponível a partir do Windows 8.1 (WDDM 1.3). Este artigo descreve como implementar esse recurso em seu driver.

Funções MPO chamadas por drivers de exibição de modo de usuário

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
pfnPresentMultiPlaneOverlayCb (D3D) Copia o conteúdo de uma alocação de MPO de origem para uma alocação de destino.
pfnPresentMultiPlaneOverlayCb (DXGI) Copia o conteúdo de uma alocação de MPO de origem para uma alocação de destino.

Funções MPO implementadas pelo UMD

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

  • O UMD fornece ponteiros para funções MPO DXGI por meio de membros da estrutura DXGI1_3_DDI_BASE_FUNCTIONS quando sua função CreateDevice(D3D10) específica do adaptador é chamada. Para obter mais informações, consulte Dando suporte ao DDI DXGI.

  • O UMD fornece ponteiros para funções MPO Direct3D por meio de membros da estrutura D3DDDI_DEVICEFUNCS em uma chamada para a função CreateDevice do driver.

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 Direct3D para verificar os detalhes sobre o suporte de hardware para MPOs.
pfnCheckMultiPlaneOverlaySupport (DXGI) Chamado pelo tempo de execução DXGI (DirectX Graphics Infrastructure) para verificar os detalhes sobre o suporte de hardware para MPOs.
pfnPresentMultiplaneOverlay (D3D) Chamado pelo tempo de execução do Direct3D para notificar o UMD de que um aplicativo concluiu a renderização e solicitar que o UMD exiba a superfície de origem. O driver deve exibir essa superfície copiando, invertendo ou executando uma operação de preenchimento de cores.
pfnPresentMultiplaneOverlay (DXGI) Chamado pelo tempo de execução DXGI para notificar o UMD de que um aplicativo concluiu a renderização e solicita que o UMD exiba a superfície de origem. O driver deve exibir a superfície copiando, invertendo ou executando uma operação de preenchimento de cores.

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

Função Descrição
pfnGetMultiPlaneOverlayCaps Chamado pelo tempo de execução DXGI para solicitar que o UMD obtenha recursos básicos de plano de sobreposição.
pfnGetMultiplaneOverlayGroupCaps Chamado pelo tempo de execução DXGI para solicitar que o UMD obtenha um grupo de recursos de plano de sobreposição.

Enumerações e estruturas de modo de usuário MPO

Todas as estruturas de modo de usuário e enumerações que são usadas com interfaces de driver de dispositivo MPO (DDIs).

DDI Descrição
D3DDDI_MULTIPLANE_ALLOCATION_INFO Especifica informações sobre uma alocação de 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 mesclagem a ser executada em um plano de sobreposição.
D3DDDI_MULTIPLANE_OVERLAY_CAPS Usado pelo UMD para especificar recursos de plano de sobreposição.
D3DDDI_MULTIPLANE_OVERLAY_FEATURE_CAPS Identifica recursos 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 recursos de MPO.
D3DDDI_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifica os processos de filtragem que o hardware deve executar quando ele 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. Somente 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 Usado em uma 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 de e para onde.

Funções implementadas pelo driver do modo kernel MPO

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

Função Descrição
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT Chamado pelo subsistema de 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 recursos de MPO. O suporte para este DDI é necessário para qualquer driver WDDM 2.2 que deseja oferecer suporte a vários planos.
DXGKDDI_POSTMULTIPLANEOVERLAYPRESENT Chamado depois que uma nova configuração de sobreposição de vários planos entrou em vigor, permitindo que o driver otimize o estado do hardware. Opcional para drivers WDDM 1.3, 2.0 ou posteriores que oferecem suporte a sobreposições de vários planos.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 Chamado para alterar a configuração de sobreposição que está sendo exibida.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT2 DxgkDdiCheckMultiPlaneOverlaySupport2 é chamado para determinar se uma configuração específica de sobreposição de vários planos é suportada.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Define os endereços de várias superfícies, incluindo a cadeia de permuta do Desktop Window Manager (DWM), que estão associados a uma fonte de vídeo presente. Esta função é usada para apresentar várias superfícies (incluindo a cadeia de permuta do DWM) para a tela.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 é chamado para alterar a configuração de sobreposição que está sendo 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 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 mesclagem a ser executada em um plano de sobreposição.
DXGK_MULTIPLANE_OVERLAY_FLAGS Identifica uma operação de inversão a ser executada em um plano de sobreposição.
DXGK_MULTIPLANE_OVERLAY_PLANE Especifica um plano de sobreposição a ser exibido em uma 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, a alocação e o número de identificação da fonte de rede presente 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 em uma chamada para a função DxgkDdiCheckMultiPlaneOverlaySupport para verificar detalhes sobre o suporte de hardware para MPOs.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 é passada 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. Somente o valor DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE é suportado.
DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT Identifica o formato de apresentação estéreo do plano de sobreposição. Somente 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 ele estica ou reduz os dados MPO.
DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifica o formato de quadro de vídeo do plano de sobreposição. Somente 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.