D3D12-Preview: Mesh Nodes in Work Graphs mit Agility SDK 1.715.0-preview

Das DirectX-Team von Microsoft hat am 18. Juli 2024 mit der Preview-Version 1.715.0 des Agility SDK Mesh Nodes für Work Graphs eingeführt. Damit lassen sich Draw Calls erstmals als fester Bestandteil eines Work Graphs ausdrücken. Bisher waren Work Graphs auf compute-ähnliche Shader beschränkt. Mit Mesh Nodes kann die GPU die Rasterisierung direkt aus dem Graphen heraus anstoßen, ohne dass die CPU einzelne Zeichenaufrufe auslösen muss. Laut Blogbeitrag stellt dies die erste Gelegenheit dar, eine GPU-gesteuerte Auswahl von Grafikprogrammen auf dem PC offenzulegen.

Mesh Nodes verbinden die Funktionsweise von Mesh Shadern mit den aus Work Graphs bekannten Broadcasting-Launch-Knoten. Jeder Eingangsdatensatz erzeugt Thread-Gruppen, die lokale Mesh-Beschreibungen samt Vertices, Primitiven und Indizes für die anschließende Rasterisierung ausgeben. Die Gittergröße lässt sich entweder fest definieren oder über das Systemattribut SV_DispatchGrid dynamisch festlegen. Als Shader-Target kommt lib_6_9 zum Einsatz, kompiliert über die Preview-Release des DirectX Shader Compilers mit Mesh-Node-Unterstützung. Wie eng die Rechenleistung der GPU dabei mit der Vertex-Verarbeitung verzahnt wird, zeigt sich auch bei Ansätzen zur Vertex-Animation über den Shader.

GPU-getriebene Programmwahl statt ExecuteIndirect

Der zentrale Unterschied zum etablierten ExecuteIndirect liegt in der Programmauswahl. Bei ExecuteIndirect bestimmt die Anwendung im Vorfeld, welche Pipeline-State-Objekte verwendet werden. Mesh Nodes erlauben dagegen, dass die GPU selbst entscheidet, welches Grafikprogramm zur Laufzeit ausgeführt wird. Die dafür nötigen Generic Programs bündeln Shader und Grafik-Pipeline-State zu einer Einheit, die einem klassischen PSO entspricht. In der State-Object-Definition werden Mesh-Node-Shader mit Pixel-Shadern, Render-Target-Formaten und Topologie-Angaben kombiniert und bilden so vollständige Grafik-Pipelines, die als Blattknoten eines Work Graphs ausgeführt werden.

Voraussetzung ist die Unterstützung von Work Graphs Tier 1.1. Meldet ein Gerät diese Stufe nicht, verweigert die Laufzeit die Nutzung der Mesh Nodes mit dem Hinweis, dass keine Unterstützung für Work Graphs Tier 1.1 vorliege. Mesh Nodes erweitern damit die ursprüngliche Work-Graphs-Implementierung, die zunächst nur Rechenoperationen im Graphen zuließ. Microsoft baut sein DirectX-Portfolio in diesem Zeitraum an mehreren Stellen aus, etwa mit der Schnittstelle DirectSR für Upscaling-Technologien.

Treiber, Hardware und Erprobung

Für den praktischen Einsatz nennt Microsoft konkrete Treiberanforderungen. Auf Seiten von AMD unterstützt der Treiber Adrenalin Edition 24.10.30.01 die Radeon-RX-7000-Serie, ein öffentlicher Treiber war für das dritte Quartal 2024 vorgesehen. Für NVIDIA und Intel verweist der Beitrag auf eine direkte Kontaktaufnahme mit den Herstellern. Ohne geeignete Hardware bleibt der Software-Renderer WARP, der als Preview-Build über NuGet bereitsteht. Zusätzlich muss der Entwicklermodus unter Windows aktiviert sein.

Verfasst wurde die Ankündigung von Amar Patel, David Cook und Greg Roth aus dem DirectX-Team. Für Entwickler, die GPU-getriebene Rendering-Pipelines aufbauen, verschiebt sich mit Mesh Nodes die Grenze zwischen CPU- und GPU-Logik weiter in Richtung der GPU. Die Auswahl der Grafikprogramme, die zuvor eine Vorabentscheidung der Anwendung erforderte, lässt sich nun innerhalb des Graphen abbilden und reduziert den CPU-Eingriff im Rendering-Pfad.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein