Am 8. Dezember 2021 hat das DirectX-Team von Microsoft die Enhanced-Barriers-Preview vorgestellt, ein neues Synchronisationsmodell für Direct3D 12. Es soll die bisherigen Resource-State-Barriers ersetzen. Die neuen APIs spalten die drei Aufgaben einer Barriere auf: GPU-Synchronisation, Layout-Wechsel von Texturen und das Leeren der Caches lassen sich nun jeweils unabhängig steuern. Geschrieben hat die Ankündigung Bill Kristiansen, Principal Developer im DirectX-Team. Die Vorschau kommt als NuGet-Paket der Agility SDK in Version 1.700.10-preview.
Wo das alte Barrieren-Modell an seine Grenzen stoesst
Das bisherige Modell mit ResourceBarrier packt Synchronisation, Layout-Übergänge und Cache-Verwaltung in einen einzigen Zustandswechsel. Der Blogbeitrag beschreibt das Problem dahinter: Entwickler greifen oft zu teureren Barrieren als nötig, weil sich eine abgestufte oder ganz ausbleibende Synchronisation gar nicht ausdrücken lässt. Dazu kommt, dass die Resource-State-Barriers nicht alles abbilden können, was die Hardware eigentlich beherrscht, etwa gleichzeitiges Lesen und Schreiben auf einer einzelnen Ressource. Und schließlich gibt es noch die versteckte Mechanik aus State Promotion und Decay samt der Aliasing-Regeln. Wer korrekt und performant synchronisieren will, muss dieses Verhalten kennen.
Die Enhanced Barriers lassen die automatische Zustandsbefoerderung und -abstufung weg und legen die einzelnen Aspekte offen. Synchronisation, Zugriffsart und Texturlayout werden getrennt angegeben. Damit lassen sich auch nebenläufiger Lese- und Schreibzugriff auf derselben Subressource sowie ein Kopiervorgang innerhalb einer Ressource modellieren. Als Gewinn nennt Microsoft geringere Latenz, bessere Nebenläufigkeit und eine genauere Kontrolle über Ressourcen-Aliasing.
Drei Barrieretypen und der Zugang zur Vorschau
Die neue Schnittstelle kennt drei Barrieretypen. Buffer Barriers kümmern sich ausschließlich um Synchronisation und Zugriffsart für Pufferressourcen. Texture Barriers regeln zusätzlich das Layout von Texturen und lassen sich über Mip-, Array- und Plane-Slice-Bereiche fein adressieren. Global Barriers wirken auf den gesamten gecachten Speicher und sind teuer, weshalb sie nur sparsam zum Einsatz kommen sollen. Mehrere Barrieren lassen sich zu Gruppen zusammenfassen.
Wer die Vorschau ausprobieren will, braucht ein Zielsystem im Entwicklermodus. Aktuelle Windows-11-Insider-Builds für Entwickler unterstützen die Enhanced Barriers im Microsoft Basic Display Adapter, also der Software-Rasterisierung WARP. In den Hardware-Treibern steckte die Unterstützung zum Zeitpunkt der Ankündigung dagegen noch in Arbeit. Auch die GPU-Based Validation, kurz GBV, war in der ersten Vorschau noch nicht produktionsreif. Ausgeliefert wird die Funktion über die Agility SDK 1.700.10-preview als NuGet-Paket.

