Nouveautés de WebGPU (Chrome 141)

François Beaufort
François Beaufort

Publié le 24 septembre 2025

Tint IR terminé

Un projet de longue durée (plus de 2,5 ans) visant à améliorer les performances des composants internes de Tint, le compilateur WGSL, a été achevé. Une représentation intermédiaire (RI) a été insérée dans le backend entre l'arbre syntaxique abstrait (AST) actuel et les générateurs de code de backend. L'introduction de l'IR a permis à l'équipe Chrome de supprimer toutes les transformations AST et de les recréer en tant que transformations IR qui, en raison des différences architecturales, sont beaucoup plus rapides. Les composants internes de Tint ont vu leur vitesse multipliée par sept sur certaines plates-formes grâce à ces modifications.

Cette nouvelle représentation intermédiaire ouvre un potentiel considérable pour l'analyse et la transformation sophistiquées des nuanceurs à grande échelle. Elle promet non seulement des gains de performances notables, mais aussi une voie plus fluide pour que Chrome puisse proposer de nouvelles fonctionnalités WebGPU intéressantes à l'avenir.

À partir de cette étape, tous les générateurs de code de backend fonctionnent à partir de la représentation IR. Toutes les transformations AST ont été supprimées, ainsi que tout le code d'assistance AST pour exécuter les transformations.

Dans le cadre de l'amélioration de l'IR, le frontend SPIR-V (utilisé par les applications pour convertir SPIR-V en WGSL) a été converti de la génération d'une représentation AST à la génération directe vers l'IR. Cette amélioration introduit également des fonctionnalités très attendues, comme la prise en charge de float 16 dans le frontend SPIR-V.

Analyse de la plage d'entiers dans le compilateur WGSL

L'équipe Chrome déploie progressivement une nouvelle analyse de plage d'entiers pour Tint, le compilateur de langage de nuanceurs WebGPU. L'analyse de la plage d'entiers estime les valeurs minimales et maximales qu'une variable entière peut prendre lors de l'exécution du programme, sans l'exécuter réellement.

Cette fonctionnalité vise à améliorer l'efficacité en réduisant la nécessité d'effectuer des vérifications coûteuses des limites. Elle sera bientôt activée par défaut sur toutes les plates-formes. Consultez le problème 348701956.

Mise à jour SPIR-V 1.4 pour le backend Vulkan

La compatibilité avec SPIR-V 1.4 est déployée lorsqu'elle est disponible sur les appareils Android et ChromeOS. Cette mise à jour permet à Tint, le compilateur WGSL, de tirer parti des nouvelles fonctionnalités, des assouplissements et des nouvelles instructions SPIR-V pour générer du code plus efficace dans certains scénarios lors de la compilation des nuanceurs Vulkan. Consultez le problème 427717267.

Mises à jour de l'Aube

L'en-tête webgpu.h standardisé, qui définit l'API C WebGPU de base, est désormais considéré comme stable. Cette stabilité s'applique spécifiquement à l'API de base définie en amont, à l'exclusion des extensions d'implémentation (par exemple, Dawn ou Emdawnwebgpu). Il est donc préférable d'utiliser webgpu.h fourni par l'implémentation exacte à laquelle vous associez votre code. Bien que l'en-tête soit stable, vous pouvez toujours rencontrer des différences inattendues entre les implémentations, car nous continuons à corriger les bugs et à résoudre les problèmes de compatibilité dans l'écosystème. Si tel est le cas, signalez un bug.

Grâce au contributeur externe William Candillon, vous pouvez désormais trouver des binaires Dawn prédéfinis en tant qu'artefacts sur GitHub Actions. Cela inclut les fichiers .lib statiques pour Android, un bundle .XCFramework pour Apple et tous les fichiers d'en-tête nécessaires. Consultez la demande d'extraction 39 de Dawn et un exemple des artefacts.

Il ne s'agit que de quelques-uns des principaux points à retenir. Consultez la liste exhaustive des commits.

Nouveautés de WebGPU

Liste de tous les sujets abordés dans la série Nouveautés de WebGPU.

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