Vorteile des WDDM
Hinweis
XDDM- und VGA-Treiber werden unter Windows 8 und späteren Betriebssystemen nicht kompiliert. Wenn die Displayhardware an einen Windows 8-Computer ohne Treiber angeschlossen ist, der für die Unterstützung von WDDM 1.2 oder höher zertifiziert ist, wird standardmäßig der Standarddisplaytreiber ausgeführt.
Das Erstellen von Grafik-/Displaytreibern ist durch die Verwendung des WDDM im Gegensatz zur Verwendung des Windows 2000-Displaytreibermodells (XDDM) aufgrund der folgenden Verbesserungen einfacher. Darüber hinaus tragen WDDM-Treiber zu einer höheren Betriebssystemstabilität und -sicherheit bei. Weniger Treibercode wird im Kernelmodus ausgeführt, in dem er auf den Systemadressraum zugreifen kann und möglicherweise Abstürze verursacht.
Das Direct3D-Runtime- und das DirectX-Grafik-Kernelsubsystem (Dxgkrnl) führen mehr Anzeigeverarbeitung durch. Das heißt, mehr Code befindet sich in der Laufzeit und im Subsystem im Gegensatz zu den Treibern. Diese Verarbeitung umfasst Code zum Verwalten des Videospeichers und plant direkte Speicherzugriffspuffer (Direct Memory Access, DMA) für die GPU. Weitere Informationen finden Sie unter Videospeicherverwaltung und GPU-Planung.
Die Surface-Erstellung erfordert weniger Kernelmodusphasen.
Die Surface-Erstellung auf Betriebssystemen vor Windows Vista erforderte die folgenden nachfolgenden Kernelmodusaufrufe:
Für die Surface-Erstellung in WDDM ist nur der Benutzermodus-Displaytreiberaufruf CreateResource erforderlich, der wiederum die Funktion pfnAllocateCb der Laufzeitumgebung aufruft. Dieser Aufruf bewirkt, dass Dxgkrnl die Funktion DxgkDdiCreateAllocation des Kernelmodustreibers aufruft.
Aufrufe, die Oberflächen erstellen und zerstören und die Ressourcen sperren und entsperren, werden gleichmäßiger gekoppelt.
WDDM verarbeitet Videospeicher, Systemspeicher und verwaltete Oberflächen identisch. Betriebssysteme vor Windows Vista behandelten diese Komponenten subtil unterschiedlich.
Die Shaderübersetzung wird im Benutzermodusteil der Anzeigetreiber ausgeführt.
Bei diesem Ansatz werden die folgenden Komplexitäten beseitigt, die auftreten, wenn die Shaderübersetzung im Kernelmodus ausgeführt wird:
- Hardwaremodelle, die nicht mit den DDI-Abstraktionen (Device Driver Interface) übereinstimmen
- Komplexe Compilertechnologie, die in der Übersetzung verwendet wird
Da die Shaderverarbeitung vollständig pro Prozess erfolgt und der Hardwarezugriff nicht erforderlich ist, ist die Kernelmodus-Shaderverarbeitung nicht erforderlich. Daher kann Shaderübersetzungscode im Benutzermodus verarbeitet werden.
Sie müssen Try/Except-Code um den Benutzermodus-Übersetzungscode herum schreiben. Übersetzungsfehler sollten zu einer Rückkehr zur Anwendungsverarbeitung führen.
Hintergrundübersetzung (d. h. Übersetzungscode, der in einem separaten Thread von anderen Anzeigeverarbeitungsthreads ausgeführt wird) ist einfacher für den Benutzermodus zu schreiben.