Microsoft hat am 18. November 2022 die DirectX 12 Agility SDK 1.608.0 veröffentlicht und damit das granularere Synchronisationsmodell Enhanced Barriers aus dem Preview-Status in den Retail-Betrieb überführt. Studios können das Feature ab dieser Version produktiv einsetzen, ohne den Windows-Entwicklermodus zu aktivieren. Bislang waren die Enhanced Barriers wie weitere experimentelle Funktionen an den aktivierten Developer Mode gebunden, was den Einsatz in ausgelieferten Titeln blockierte.
Enhanced Barriers verlassen den Preview-Status
Das Enhanced-Barriers-Modell löst die bisherige Kombination aus Resource Barriers ab und trennt Synchronisation, Cache-Flushes und Layout-Übergänge in separate Bestandteile. Entwickler erhalten damit feinere Kontrolle über Abhängigkeiten zwischen GPU-Arbeitseinheiten und können unnötige Stalls vermeiden. Mit dem Retail-Release entfällt die Voraussetzung des Entwicklermodus, sodass das Modell auch in Endkundenversionen genutzt werden kann. Aus einer reinen Testfunktion wird so eine API, die in der Produktion landen darf.
Neben den Enhanced Barriers bringt die Version weitere DX12-Funktionen in den Retail-Betrieb. Dazu zählen unabhängige Referenzwerte und Masken für Front- und Back-Stencil, wodurch sich die Stencil-Operationen für Vorder- und Rückseiten getrennt steuern lassen. Hinzu kommt die Unterstützung des Triangle-Fan-Primitivs, das für bestimmte Geometrietypen eine kompaktere Beschreibung erlaubt. Wie weit DirectX 12 bereits in der Praxis angekommen ist, zeigte zuvor etwa die Integration in Fortnite durch Epic Games.
Dynamic Pipeline State und Treiberunterstützung
Ergänzend führt das SDK dynamische Pipeline-State-Eigenschaften ein. Der Depth Bias lässt sich über RSSetDepthBias zur Laufzeit ändern, sofern das Pipeline-State-Objekt mit dem Flag D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS angelegt wurde. Analog kann der Index Buffer Strip Cut Value über IASetIndexBufferStripCutValue dynamisch gesetzt werden, was das entsprechende Flag beim Erstellen des PSO voraussetzt. Beide Änderungen reduzieren die Zahl der vorab zu kompilierenden Pipeline-State-Objekte.
Auf Treiberseite steht die Unterstützung bereits bereit. NVIDIA nennt den Treiber 526.98 als kompatibel mit den Funktionen der Veröffentlichung, Intel stellt ebenfalls einen passenden Treiber zur Verfügung. Bei AMD verweist Microsoft auf den jeweiligen Alliance Manager für Auskünfte zur Treiberverfügbarkeit, während der Software-Rasterizer WARP sämtliche Funktionen in einer Preview-Variante über das NuGet-Paket abdeckt. Für Studios, die das neue Synchronisationsmodell produktiv nutzen wollen, ist der Wegfall des Entwicklermodus der entscheidende Punkt für den Einsatz in ausgelieferten Anwendungen. Microsoft pflegt sein Entwickler-Ökosystem ohnehin laufend, wie spätere Schritte rund um das Microsoft Game Development Kit zeigen.
