Architecture WDDM
Le modèle de pilote d’affichage Windows (WDDM) a des composants en mode utilisateur et en mode noyau. La figure suivante présente les différents composants de l’architecture WDDM.
Les modules fournis par le système apparaissent dans la figure sous forme de cadres blancs. Les encadrés gris représentent des modules que le partenaire peut fournir. Les applications peuvent être fournies par le système ou développées par des partenaires.
Modules fournis par le système
Les modules fournis par le système suivants font partie de l’architecture WDDM :
Le runtime Direct3D est un composant en mode utilisateur qui fournit une API d’application pour les applications. Il fournit différents services et est chargé de gérer l’interaction entre une application, le pilote graphique en mode utilisateur (UMD) et gdi32.dll.
gdi32.dll est une bibliothèque en mode utilisateur sur laquelle un runtime D3D ou un client graphique partenaire établit un lien. Un runtime ou un client appelle un « thunk » gdi32 qui achemine l’appel vers la fonction de mode noyau appropriée dans le sous-système du noyau DirectX (Dxgkrnl).
Dxgkrnl est le composant principal du sous-système graphique en mode noyau du système d’exploitation Windows. Il facilite la communication entre le système d’exploitation, l’UMD et le pilote de miniport d’affichage en mode noyau (KMD). Dxgkrnl inclut des sous-composants tels que le pilote de port d’affichage, le gestionnaire de mémoire (VidMm) et le planificateur (VidSch). Dxgkrnl se compose des fichiers système suivants :
- dxgmms2.sys, qui implémente le planificateur GPU/NPU et le gestionnaire de mémoire vidéo pour les versions de WDDM 2.0 et supérieures.
- dxgmms1.sys, qui implémente le planificateur GPU/NPU et le gestionnaire de mémoire vidéo pour les versions de WDDM antérieures à WDDM 2.0.
- dxgkrnl.sys, qui gère tout le reste dans le sous-système noyau DirectX, y compris le chargement du fichier dxgmms.sys nécessaire, le traitement initial des appels D3DKMTXxx depuis le mode utilisateur, les modes d’affichage, la virtualisation GPU, la gestion de l’alimentation, l’interface avec le noyau exécutif, etc.
Win32 GDI et Win32k.sys sont des composants hérités toujours utilisés par certaines applications.
Modules fournis par des tiers
L’UMD est une bibliothèque de liens dynamiques (DLL) que le runtime Direct3D charge.
Le KMD communique avec Dxgkrnl et le matériel graphique.
Un fournisseur de matériel graphique doit fournir à la fois un UMD et un KMD.
- Un client graphique partenaire tiers est un composant en mode utilisateur qui possède sa propre API et infrastructure. Il appelle le « thunk » gdi32 pour communiquer avec le sous-système graphique en mode noyau. Les clients dont Microsoft a connaissance sont répertoriés dans D3DKMT_CLIENTHINT.