DirectX 12 ist seit dem Start von Windows 10 öffentlich verfügbar. Microsoft hat die neue Grafik-API am 29. Juli 2015 im DirectX Developer Blog angekündigt. Sie gehört fest zum Betriebssystem und kommt für unterstützte Hardware über das kostenlose Upgrade auf Windows 10 mit. DirectX 12 setzt auf einen Low-Level-Ansatz: Entwickler greifen direkter auf die Grafikhardware zu, und die Grafiklast lässt sich über mehrere CPU-Kerne verteilen.
Microsoft nennt konkrete Zahlen. Die API soll die CPU-Last um bis zu 50 Prozent senken und dabei über alle Kerne skalieren, die GPU-Leistung soll um bis zu 20 Prozent steigen. Die Werte stammen aus internen Vergleichen und schwanken stark je nach Anwendung und Hardware. Im Kern entlastet die Architektur Treiber und Laufzeitschicht und schiebt einen großen Teil der Verwaltungsarbeit zur Anwendung hin.
Architektur: PSOs, Command Lists und Descriptor Heaps
DirectX 12 stützt sich auf mehrere Konzepte, die den Verwaltungsaufwand pro Bild drücken. Pipeline State Objects bündeln den Pipeline-Zustand in unveränderlichen Objekten. Das senkt den Aufwand pro Draw Call und macht deutlich mehr Draw Calls pro Frame möglich. Command Lists und Bundles berechnen Arbeit threadübergreifend vor und reichen sie dann mit minimaler serieller Einreichung an die GPU weiter. Descriptor Heaps wechseln Bindungen ressourcenschonend.
Synchronisation und Speicherverwaltung wandern damit stärker in die Anwendung. Das bedeutet mehr Arbeit in der Entwicklung, schafft aber Spielraum, die Grafikarbeit gezielt über mehrere CPU-Kerne zu verteilen. Microsoft spricht von einer grundlegend veränderten Methode, Grafiklast zu strukturieren.
Engine-Unterstützung und erste Titel
Zum Start ist DirectX 12 bereits in verbreiteten Spiele-Engines angekommen. In der Unity-5.2-Beta sowie in der Unreal-Engine-4.9-Preview steckt die Unterstützung in einem frühen, experimentellen Modus. Als Referenz für eine native DirectX-12-Auslegung dient Ashes of the Singularity. Das Spiel soll laut Blog zehntausende Einheiten in zahlreichen gleichzeitigen Gefechten darstellen und zeigt damit, worauf es ankommt: eine hohe Zahl an Draw Calls.
Mit der festen Verankerung in Windows 10 und der Einbindung in etablierte Engines erreicht DirectX 12 eine breite Basis für die Spieleentwicklung. Wie viel Leistung am Ende wirklich herausspringt, hängt von der konkreten Umsetzung ab, denn die niedrigere Abstraktionsebene verlangt zusätzlichen Implementierungsaufwand.
