Prise en charge des superpositions multiplanes
La prise en charge de superposition multiplane (MPO) est une fonctionnalité WDDM qui permet au matériel graphique de composer plusieurs couches de contenu en une seule image qu’il peut ensuite afficher sur un écran. Il s’agit essentiellement d’une méthode d’accélération matérielle de composition de différents « plans » de contenu , où un plan peut être une vidéo, le bureau, une fenêtre d’application, etc. - sans avoir à impliquer l’UC ou à utiliser d’autres ressources système pour effectuer la fusion dans les logiciels.
La fonctionnalité MPO est disponible à partir de Windows 8.1 (WDDM 1.3). Cet article explique comment implémenter cette fonctionnalité dans votre pilote.
Fonctions MPO appelées par les pilotes d’affichage en mode utilisateur
Le tableau suivant répertorie les fonctions MPO en mode utilisateur que le système d’exploitation implémente et que les pilotes d’affichage en mode utilisateur (UMD) peuvent appeler.
Fonction | Description |
---|---|
pfnPresentMultiPlaneOverlayCb (D3D) | Copie le contenu d’une allocation MPO source vers une allocation de destination. |
pfnPresentMultiPlaneOverlayCb (DXGI) | Copie le contenu d’une allocation MPO source vers une allocation de destination. |
Fonctions MPO implémentées par l’UMD
Cette section contient des fonctions qu’une UMD WDDM 1.3 et ultérieure doit implémenter pour prendre en charge les MPOs.
L’UMD fournit des pointeurs vers des fonctions DXGI MPO par le biais de membres de la structure DXGI1_3_DDI_BASE_FUNCTIONS lorsque sa fonction CreateDevice(D3D10) spécifique à l’adaptateur est appelée. Pour plus d’informations, consultez Prise en charge de DXGI DDI.
L’UMD fournit des pointeurs vers les fonctions DIRECT3D MPO par le biais de membres de la structure D3DDDI_DEVICEFUNCS dans un appel à la fonction CreateDevice du pilote.
Le tableau suivant répertorie les fonctions qu’un UMD doit implémenter pour prendre en charge les MPO.
Fonction | Description |
---|---|
pfnCheckMultiPlaneOverlaySupport (D3D) | Appelé par le runtime Direct3D pour vérifier les détails de la prise en charge matérielle des MPOs. |
pfnCheckMultiPlaneOverlaySupport (DXGI) | Appelé par le runtime DirectX Graphics Infrastructure (DXGI) pour vérifier les détails de la prise en charge matérielle des MPOs. |
pfnPresentMultiplaneOverlay (D3D) | Appelé par le runtime Direct3D pour informer l’UMD qu’une application a terminé le rendu et demande que l’UMD affiche l’aire source. Le pilote doit afficher cette surface en copiant, en retournant ou en effectuant une opération de remplissage de couleur. |
pfnPresentMultiplaneOverlay (DXGI) | Appelé par le runtime DXGI pour informer l’UMD qu’une application a terminé le rendu et demande que l’UMD affiche la surface source. Le pilote doit afficher la surface en copiant, en retournant ou en effectuant une opération de remplissage de couleur. |
Le tableau suivant répertorie les fonctions qu’un UMD peut éventuellement implémenter.
Fonction | Description |
---|---|
pfnGetMultiPlaneOverlayCaps | Appelé par le runtime DXGI pour demander que l’UMD obtienne les fonctionnalités de plan de superposition de base. |
pfnGetMultiplaneOverlayGroupCaps | Appelé par le runtime DXGI pour demander que l’UMD obtienne un groupe de fonctionnalités de plan de superposition. |
Structures et énumérations en mode utilisateur DU MPO
Toutes les structures et énumérations en mode utilisateur utilisées avec des interfaces de pilote de périphérique (DDIS) MPO.
DDI | Description |
---|---|
D3DDDI_MULTIPLANE_ALLOCATION_INFO | Spécifie des informations sur une allocation MPO. |
D3DDDI_MULTIPLANE_OVERLAY_ATTRIBUTES | Utilisé par l’UMD pour spécifier des attributs de plan de superposition. |
D3DDDI_MULTIPLANE_OVERLAY_BLEND | Identifie une opération de fusion à effectuer sur un plan de superposition. |
D3DDDI_MULTIPLANE_OVERLAY_CAPS | Utilisé par l’UMD pour spécifier les fonctionnalités du plan de superposition. |
D3DDDI_MULTIPLANE_OVERLAY_FEATURE_CAPS | Identifie les fonctionnalités de superposition. |
D3DDDI_MULTIPLANE_OVERLAY_FLAGS | Identifie une opération de retournement à effectuer sur un plan de superposition. |
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS | Utilisé par l’UMD pour spécifier un groupe de fonctionnalités de plan de superposition. |
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS_INPUT | Spécifie des informations sur un groupe de capacités MPO. |
D3DDDI_MULTIPLANE_OVERLAY_STRETCH_QUALITY | Identifie les processus de filtrage que le matériel doit effectuer lorsqu’il étire ou réduit les données MPO. |
D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT | Identifie le format de trame vidéo du plan de superposition. Seule la valeur D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE est prise en charge. |
D3DDDI_MULTIPLANE_OVERLAY_YCbCr_FLAGS | Identifie les informations de conversion et de plage YUV qui décrivent un MPO. |
D3DDDI_PRESENT_MULTIPLANE_OVERLAY | Spécifie un plan de superposition à afficher. |
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT | Utilisé dans un appel à la fonction pfnCheckMultiPlaneOverlaySupport (D3D) pour vérifier les détails de la prise en charge matérielle des MPOs. |
D3DDDIARG_PRESENTMULTIPLANEOVERLAY | Spécifie une ressource MPO à afficher. |
D3DDDICB_PRESENTMULTIPLANEOVERLAY | Décrit les allocations MPO vers et depuis lesquelles le contenu est copié. |
Fonctions implémentées par le pilote en mode noyau MPO
Le tableau suivant répertorie les fonctions MPO que le pilote miniport en mode noyau (KMD) implémente.
Fonction | Description |
---|---|
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT | Appelé par le sous-système du noyau graphique DirectX pour vérifier les détails de la prise en charge matérielle des MPOs. |
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 | La fonction suivante est appelée pour déterminer si une configuration de superposition multiplan spécifique est prise en charge. |
DXGKDDI_GETMULTIPLANEOVERLAYCAPS | Appelé pour récupérer les fonctionnalités de MPO. La prise en charge de cette DDI est requise pour tout pilote WDDM 2.2 qui souhaite prendre en charge plusieurs plans. |
DXGKDDI_POSTMULTIPLANEOVERLAYPRESENT | Appelé après qu’une nouvelle configuration de superposition multiplan a pris effet, ce qui permet au pilote d’optimiser l’état du matériel. Facultatif pour les pilotes WDDM 1.3 2.0 ou ultérieur qui prennent en charge les superpositions multiplan. |
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 | Appelé pour modifier la configuration de superposition affichée. |
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT2 | DxgkDdiCheckMultiPlaneOverlaySupport2 est appelé pour déterminer si une configuration de superposition multiplan spécifique est prise en charge. |
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY | Définit les adresses de plusieurs surfaces, y compris la chaîne d’échange du Gestionnaire de fenêtres de bureau (DWM), qui sont associées à une vidéo spécifique présente la source. Cette fonction est utilisée pour présenter plusieurs surfaces (y compris la chaîne d’échange de DWM) à l’écran. |
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 | DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 est appelé pour modifier la configuration de superposition affichée. |
Structures en mode noyau MPO
Le tableau suivant répertorie les structures que KMD utilise.
Structure | Description |
---|---|
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_PLANE | Spécifie les attributs de prise en charge que le matériel fournit pour les mpos. |
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO | Spécifie les limitations relatives à la prise en charge matérielle des MPO. |
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES | Utilisé par le KMD pour spécifier des attributs de plan de superposition. |
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 | DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 est utilisé par le KMD pour spécifier des attributs de plan de superposition. |
DXGK_MULTIPLANE_OVERLAY_BLEND | Identifie une opération de fusion à effectuer sur un plan de superposition. |
DXGK_MULTIPLANE_OVERLAY_FLAGS | Identifie une opération de retournement à effectuer sur un plan de superposition. |
DXGK_MULTIPLANE_OVERLAY_PLANE | Spécifie un plan de superposition à afficher dans un appel à la fonction DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay. |
DXGK_MULTIPLANE_OVERLAY_PLANE2 | DXGK_MULTIPLANE_OVERLAY_PLANE2 est utilisé avec la fonction DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 pour spécifier un plan de superposition à afficher. |
DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE | DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE décrit les attributs de plan de superposition multiplan, l’allocation et la vidéo présentent le numéro d’identification de la source réseau. |
DXGK_MULTIPLANE_OVERLAY_VSYNC_INFO | Spécifie un plan de superposition à afficher pendant un intervalle VSync. |
DXGK_MULTIPLANE_OVERLAY_YCbCr_FLAGS | Identifie les informations de conversion et de plage YUV qui décrivent un MPO. |
DXGK_PRESENTMULTIPLANEOVERLAYINFO | Spécifie des informations sur une entrée VidPN et un plan de superposition à afficher. |
DXGK_PRESENTMULTIPLANEOVERLAYLIST | Spécifie un plan de superposition à afficher dans un appel à la fonction DxgkDdiPresent. |
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT | Utilisé dans un appel à la fonction DxgkDdiCheckMultiPlaneOverlaySupport pour vérifier les détails de la prise en charge matérielle des MPOs. |
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 | DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 est passé à la fonction DxgkDdiCheckMultiPlaneOverlaySupport2 pour déterminer si une configuration de superposition multiplan spécifique est prise en charge. |
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY | Contient des arguments pour la fonction DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay. |
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 | DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 est passé à la fonction DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 pour modifier la configuration de superposition affichée. |
Énumérations en mode noyau MPO
Le tableau suivant répertorie les énumérations utilisées par KMD.
Énumération | Description |
---|---|
DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE | Identifie le mode de retournement stéréo du plan de superposition. Seule la valeur DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE est prise en charge. |
DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT | Identifie le format de présentation stéréo du plan de superposition. Seule la valeur DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO est prise en charge. |
DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY | Identifie les processus de filtrage que le matériel doit effectuer lorsqu’il étire ou réduit les données MPO. |
DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT | Identifie le format de trame vidéo du plan de superposition. Seule la valeur DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE est prise en charge. |
La valeur D3DDDICAPS_GET_MULTIPLANE_OVERLAY_GROUP_CAPS dans D3DDDICAPS_TYPE indique la prise en charge UMD pour les mpOs.