Am 30. März 2022 hat Microsoft die Version 2203.30 des Grafik-Debuggers PIX on Windows veröffentlicht. Das auffälligste Feature heißt Export to C++. Damit lässt sich eine GPU-Capture in mehrere C++-Dateien überführen, die die aufgezeichnete D3D12-Arbeit nachbilden. Entwickler bekommen so eine kompilierbare Reproduktion einer aufgezeichneten Szene, die auch ohne das ursprüngliche Spiel oder die ursprüngliche Anwendung läuft. PIX on Windows gehört zum Werkzeugkasten, den Microsoft rund um das Microsoft Game Development Kit pflegt.
Im Export liegt eine CMakeLists.txt. Über CMake entstehen daraus Build-Dateien für verschiedene Build-Systeme, oder man lädt das Projekt direkt in Visual Studio, das die Build-Dateien selbst erzeugt. Als Hauptanwendung nennt Microsoft das Isolieren einer Fehlerreproduktion. Die lässt sich auf diese Weise vom Originalprojekt trennen und an Treiber- oder Hardwarehersteller weitergeben.
Funktionsweise und Grenzen der C++-Reproduktion
Die Funktion baut auf dem bestehenden GPU-Capture-Format auf. Wie schon bei den regulären .wpix-Capture-Dateien gibt Microsoft keine Garantie, dass der exportierte C++-Code auf einer anderen GPU- oder Treiberkombination korrekt läuft als auf der, mit der die Capture entstanden ist. Bei manchen Anwendungen klappt die Reproduktion, bei anderen nicht. Der Code bildet die D3D12-Aufrufe der Aufzeichnung ab und schleppt dabei die hardware- und treiberabhängigen Eigenheiten der Aufnahmesituation mit.
Parallel zum Export hat Microsoft die Oberfläche überarbeitet. Der Wechsel zwischen Captures läuft jetzt schneller. Layouts werden über ein menügeführtes System angepasst, das einzelne Views platziert, Bereiche mit verstellbaren Trennern aufteilt oder zu Tab-Gruppen zusammenfasst. Eine neue Minimieren-Option klappt Views ein, damit andere Komponenten mehr Platz bekommen.
Shader-Debugger, Plugins und Metrics View
Der Shader-Debugger versteht in dieser Version zusätzlich Hull- und Domain-Shader und deckt damit auch das Debugging von Tessellation-Shadern ab. In der Metrics View lassen sich neben der Dauer eines PIX-Events nun auch dessen Ausführungszeit und Stall-Zeit grafisch darstellen. Zusammengefasste Events werden dort nach Thread gruppiert.
Zum Release erschienen außerdem aktualisierte Plugins der Grafikhersteller. Ein neues Intel-Plugin ergänzt die Unterstützung für Grafikkarten der Reihe Intel Arc A-Series. Das aktualisierte AMD-Plugin arbeitet beim Erfassen von High Frequency Counters schneller und führt zusätzliche Zähler ein, darunter TagConflict. Gedacht sind diese Neuerungen für Entwickler, die GPU-Captures auf der jeweiligen Hardware genauer auswerten wollen.