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.