Neuigkeiten bei WebGPU (Chrome 141)

François Beaufort
François Beaufort

Veröffentlicht: 24. September 2025

Tint IR abgeschlossen

Ein langjähriges Projekt (über 2,5 Jahre) zur Steigerung der Leistung der internen Komponenten von Tint, dem WGSL-Compiler, wurde abgeschlossen. Eine Zwischenrepräsentation (Intermediate Representation, IR) wurde in das Backend zwischen dem aktuellen abstrakten Syntaxbaum (Abstract Syntax Tree, AST) und den Backend-Codegeneratoren eingefügt. Durch die Einführung der Zwischenrepräsentation konnte das Chrome-Team alle AST-Transformationen entfernen und als Zwischenrepräsentations-Transformationen neu erstellen, die aufgrund von Architekturunterschieden wesentlich schneller sind. Auf einigen Plattformen wurde die Geschwindigkeit von Tint durch diese Änderungen um das bis zu Siebenfache gesteigert.

Diese neue IR bietet erhebliches Potenzial für anspruchsvolle, umfangreiche Shader-Analysen und ‑Transformationen. Sie verspricht nicht nur erhebliche Leistungssteigerungen, sondern auch einen reibungsloseren Weg für Chrome, in Zukunft spannende neue WebGPU-Funktionen bereitzustellen.

Ab diesem Meilenstein arbeiten alle Back-End-Codegeneratoren mit der IR-Darstellung. Alle AST-Transformationen wurden gelöscht und der gesamte AST-Supportcode zum Ausführen der Transformationen wurde entfernt.

Im Rahmen der IR-Optimierung wurde das SPIR-V-Frontend (das von Anwendungen verwendet wird, um SPIR-V in WGSL zu konvertieren) so umgestellt, dass es nicht mehr eine AST-Darstellung, sondern direkt IR generiert. Diese Verbesserung führt auch lang erwartete Funktionen wie die Unterstützung von Float 16 im SPIR-V-Frontend ein.

Analyse von Ganzzahlbereichen im WGSL-Compiler

Das Chrome-Team führt nach und nach eine neue Analyse des Ganzzahlbereichs für Tint ein, den WebGPU-Shader-Sprachcompiler. Bei der Analyse des Ganzzahlbereichs werden die Minimal- und Maximalwerte geschätzt, die eine ganzzahlige Variable während der Programmausführung annehmen kann, ohne das Programm tatsächlich auszuführen.

Diese Funktion soll die Effizienz verbessern, indem sie die Notwendigkeit kostspieliger Grenzprüfungen verringert. Sie wird demnächst standardmäßig auf allen Plattformen aktiviert. Siehe Problem 348701956.

SPIR-V 1.4-Update für das Vulkan-Backend

Die Unterstützung für SPIR-V 1.4 wird auf Android- und ChromeOS-Geräten eingeführt, sofern verfügbar. Mit diesem Update kann Tint, der WGSL-Compiler, neue SPIR-V-Funktionen, Lockerungen und neue Anweisungen für eine effizientere Code-Generierung in bestimmten Szenarien beim Kompilieren von Vulkan-Shadern nutzen. Weitere Informationen finden Sie unter Problem 427717267.

Dawn-Updates

Der standardisierte webgpu.h-Header, der die WebGPU C-API definiert, gilt nun endlich als stabil. Diese Stabilität gilt speziell für die Upstream definierte Core-API, nicht für Implementierungserweiterungen (z. B. von Dawn oder Emdawnwebgpu). Daher ist es am besten, die webgpu.h der genauen Implementierung zu verwenden, mit der Sie verknüpfen. Der Header ist zwar stabil, aber es kann weiterhin zu unbeabsichtigten Unterschieden zwischen Implementierungen kommen, da wir weiterhin Fehler beheben und die Kompatibilität im gesamten Ökosystem verbessern. Falls ja, melden Sie den Fehler.

Dank des externen Mitwirkenden William Candillon sind jetzt vorgefertigte Dawn-Binärdateien als Artefakte in GitHub Actions verfügbar. Dazu gehören statische .lib-Dateien für Android, ein .XCFramework-Bundle für Apple und alle erforderlichen Header-Dateien. Dawn PR #39 und ein Beispiel für die Artefakte

Dies sind nur einige der wichtigsten Neuerungen. Vollständige Liste der Commits

Neues zu WebGPU

Eine Liste mit allen Themen, die in der Reihe Neu in WebGPU behandelt wurden.

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113