Prise en charge du DDI DXGI
Pour prendre en charge l’interface de pilote de périphérique (DDI) Microsoft DirectX Graphics Infrastructure (DXGI), le pilote d’affichage en mode utilisateur doit inclure le fichier d’en-tête Dxgiddi.h . Dxgiddi.h inclut également le fichier d’en-tête Dxgitype.h , qui contient des définitions partagées avec des constructions DXGI au niveau de l’application. Dxgiddi.h définit plusieurs points d’entrée de pilote d’affichage en mode utilisateur et une fonction de rappel DXGI que le pilote peut utiliser pour communiquer avec le noyau (y compris le pilote miniport d’affichage).
Le runtime Microsoft Direct3D fournit l’accès à la DDI DXGI dans la structure DXGI_DDI_BASE_ARGS vers laquelle pointe le membre DXGIBaseDDI de la structure D3D10DDIARG_CREATEDEVICE dans un appel à la fonction CreateDevice(D3D10). Le pilote d’affichage en mode utilisateur fournit des pointeurs vers les fonctions DXGI.
Le pilote implémente ces fonctions par le biais des membres des structures vers laquelle les membres pDXGIDDIBaseFunctionsXxx de DXGI_DDI_BASE_ARGS pointent. Le pilote doit enregistrer le pointeur vers la table de fonction de rappel DXGI vers laquelle pointe le membre pDXGIBaseCallbacks de DXGI_DDI_BASE_ARGS pour une utilisation ultérieure. Le pilote doit enregistrer le pointeur vers la table de fonction de rappel DXGI au lieu d’enregistrer le pointeur individuel vers la fonction de rappel DXGI, car le runtime Direct3D peut modifier l’adresse de la fonction de rappel chaque fois qu’il n’y a pas de thread à l’intérieur du pilote d’affichage en mode utilisateur.
Une autre exigence de pilote d’affichage en mode utilisateur DXGI existe pour les rastériseurs logiciels. Un tel pilote d’affichage en mode utilisateur (plus précisément, tout pilote qui ne prend pas en charge le matériel partagé avec l’implémentation DDI Direct3D version 9 sur la carte graphique) doit retourner la valeur DXGI_STATUS_NO_REDIRECTION au lieu de la valeur S_OK de sa fonction CreateDevice(D3D10). Cette valeur de retour indique à DXGI qu’il ne doit pas utiliser le chemin de présentation des ressources partagées pour affecter la communication avec desktop Window Manager (DWM). Le chemin de présentation des ressources partagées est créé lorsque des appels à des fonctions de ressources partagées (c’est-à-dire , CreateResource(D3D10) et OpenResource(D3D10) avec le jeu d’indicateurs D3D10_DDI_RESOURCE_MISC_SHARED ) se produisent. Toutefois, DXGI doit plutôt utiliser des techniques pertinentes pour une chaîne d’échange dont les mémoires tampons sont disponibles uniquement pour le processeur. Par exemple, DXGI doit déplacer les données rendues de la mémoire tampon arrière vers le bureau par d’autres moyens que le chemin de présentation des ressources partagées. Dans ce cas, DXGI appelle en fait la fonction PresentDXGI du pilote pour déplacer les données rendues plutôt que d’effectuer une communication avec le DWM.
Fonctions DXGI Direct3D version 10
Cette section décrit les fonctions DXGI (Microsoft DirectX Graphics Infrastructure) que la DLL du pilote d’affichage en mode utilisateur fournit au runtime Microsoft Direct3D version 10. Le pilote fournit des pointeurs vers les fonctions DXGI via les membres de la structure DXGI_DDI_BASE_FUNCTIONS dans un appel à la fonction CreateDevice(D3D10) du pilote d’affichage en mode utilisateur.
BltDXGI : GetGammaCapsDXGI
PresentDXGI : QueryResourceResidencyDXGI
ResolveSharedResourceDXGI : RotateResourceIdentitiesDXGI
SetDisplayModeDXGI : SetResourcePriorityDXGI
Fonctions DXGI Direct3D version 11.1
Cette section décrit les fonctions DXGI (Microsoft DirectX Graphics Infrastructure), implémentées par les pilotes d’affichage en mode utilisateur, qui sont ajoutées pour le runtime Microsoft Direct3D version 11.1. Direct3D 11.1 a été introduit avec Windows 8.
La DLL de pilote d’affichage en mode utilisateur exporte la fonction OpenAdapter10_2 et fournit des pointeurs vers des fonctions spécifiques à l’adaptateur via les membres de la structure D3D10_2DDI_ADAPTERFUNCS lorsque le runtime appelle CreateDevice(D3D10).
Le pilote fournit des pointeurs vers les fonctions DXGI Direct3D version 11.1 via les membres de la structure DXGI1_2_DDI_BASE_FUNCTIONS dans un appel à la fonction CreateDevice (D3D10) spécifique à l’adaptateur du pilote d’affichage.
Fonctions DXGI Direct3D version 11.2
Les pages de référence de cette section décrivent les fonctions DXGI (Microsoft DirectX Graphics Infrastructure), implémentées par les pilotes d’affichage en mode utilisateur, qui sont ajoutées pour le runtime Microsoft Direct3D version 11.2. Direct3D 11.2 a été introduit avec Windows 8.1.
La DLL de pilote d’affichage en mode utilisateur exporte la fonction OpenAdapter10_2 et fournit des pointeurs vers des fonctions spécifiques à l’adaptateur via les membres de la structure D3D10_2DDI_ADAPTERFUNCS lorsque le runtime appelle CreateDevice(D3D10).
Le pilote fournit des pointeurs vers les fonctions DXGI Direct3D version 11.2 par le biais des membres de la structure DXGI1_3_DDI_BASE_FUNCTIONS lors d’un appel à la fonction CreateDevice (D3D10) spécifique à l’adaptateur du pilote d’affichage.
PFNDDXGIDDI_PRESENT_MULTIPLANE_OVERLAYCB : PFNDDXGIDDI_PRESENTCB
PFNDDXGIDDI_SUBMITPRESENTBLTTOHWQUEUECB : PFNDDXGIDDI_SUBMITPRESENTTOHWQUEUECB
Notes
Les fonctions DXGI supplémentaires prises en charge par le runtime Direct3D 11.2 sont incluses dans la section Fonctions de superposition multiplanes implémentées par le pilote en mode utilisateur.