Architettura WDDM
Windows Display Driver Model (WDDM) include componenti in modalità utente e in modalità kernel. La figura seguente illustra i vari componenti dell'architettura WDDM.
I moduli forniti dal sistema vengono visualizzati nella figura come caselle bianche. Le caselle grigie rappresentano i moduli che i partner possono fornire. Le applicazioni possono essere fornite dal sistema o sviluppate dai partner.
Moduli forniti dal sistema
I moduli forniti dal sistema seguenti fanno parte dell'architettura WDDM:
Il runtime Direct3D è un componente in modalità utente che fornisce un'API dell'applicazione per le applicazioni. Fornisce vari servizi ed è responsabile della gestione dell'interazione tra un'applicazione, il driver di grafica in modalità utente (UMD) e gdi32.dll.
gdi32.dll è una libreria in modalità utente su cui un runtime D3D o un client grafico partner si collega. Un runtime o un client chiama un "thunk" gdi32 che instrada la chiamata alla funzione in modalità kernel appropriata nel sottosistema kernel DirectX (Dxgkrnl).
Dxgkrnl è il componente principale del sottosistema grafico in modalità kernel del sistema operativo Windows. Facilita la comunicazione tra il sistema operativo, la UMD e il driver miniport (KMD) in modalità kernel. Dxgkrnl include sottocomponenti, ad esempio il driver della porta di visualizzazione, il gestore della memoria (VidMm) e l'utilità di pianificazione (VidSch). Dxgkrnl è costituito dai file di sistema seguenti:
- dxgmms2.sys, che implementa l'utilità di pianificazione GPU/NPU e la gestione della memoria video per WDDM versioni 2.0 e successive.
- dxgmms1.sys, che implementa l'utilità di pianificazione GPU/NPU e la gestione della memoria video per le versioni WDDM precedenti a WDDM 2.0.
- dxgkrnl.sys, che gestisce tutto il resto nel sottosistema kernel DirectX, incluso il caricamento del file dxgmms.sys necessario, l'elaborazione iniziale di chiamate D3DKMTXxx dalla modalità utente, modalità di visualizzazione, virtualizzazione GPU, risparmio energia, interfaccia con l'esecutivo del kernel e così via.
Win32 GDI e Win32k.sys sono componenti legacy ancora usati da alcune applicazioni.
Moduli forniti da terze parti
UMD è una libreria a collegamento dinamico (DLL) caricata dal runtime Direct3D.
Il KMD comunica con Dxgkrnl e l'hardware grafico.
Un fornitore di hardware grafico deve fornire sia un UMD che un KMD.
- Un client di grafica partner di terze parti è un componente in modalità utente che ha un'API e un framework specifici. Chiama i framework gdi32 per comunicare con il sottosistema grafico in modalità kernel. I client di cui Microsoft è a conoscenza sono elencati in D3DKMT_CLIENTHINT.