Nouveautés de WebGPU (Chrome 122)

François Beaufort
François Beaufort

Le nombre de fonctionnalités WebGPU peut sembler un peu faible cette fois-ci, mais des avancées majeures sont à venir ! Les prochaines versions incluront des fonctionnalités telles que DP4a, des textures de stockage en lecture seule et en lecture/écriture, un contrôle distinct des aspects de gabarit et de profondeur, le rendu de tranches de texture 3D et des améliorations de la compilation des nuanceurs.

En attendant, découvrez comment booster vos tests de modèles d'IA Web grâce à la compatibilité WebGPU et WebGL dans Headless Chrome et pourquoi WebGPU peut être désactivé ou ne pas fonctionner dans Chrome.

Élargir la couverture avec le mode de compatibilité (fonctionnalité en développement)

WebGPU s'aligne bien sur les API graphiques modernes (Vulkan, Metal et D3D12), mais certains appareils ne les prennent pas en charge. Cela limite l'accessibilité de WebGPU, en particulier sur des plates-formes telles que Windows (31 % des utilisateurs de Chrome ne disposent pas de D3D11.1+), Android (23 % ne disposent pas de Vulkan 1.1+) et ChromeOS (l'adoption de Vulkan est en hausse).

L'équipe Chrome travaille sur un mode de compatibilité dans WebGPU pour résoudre ce problème en proposant une version légèrement restreinte de WebGPU qui fonctionne sur les anciennes API telles que D3D11 et OpenGL ES. Cela élargira la base d'utilisateurs potentiels de WebGPU.

Il est important de noter que les applications utilisant le mode Compatibilité restent des applications WebGPU entièrement valides. Les appareils non compatibles avec le mode Compatibilité passeront automatiquement à l'adaptateur WebGPU principal, ce qui garantira une large facilité d'utilisation.

Diagramme du mode de compatibilité WebGPU.
Élargissement de la couverture du mode de compatibilité WebGPU.

Si vous avez des questions, consultez la proposition et le commentaire.

Augmenter la limite maxVertexAttributes

Le nombre maximal d'attributs au total dans les tampons lors de la création d'un GPURenderPipeline est de 16 par défaut. Il est désormais possible de demander jusqu'à 30 attributs en utilisant la limite maxVertexAttributes lorsque cela est possible. Consultez l'exemple suivant et le problème dawn:2223.

const adapter = await navigator.gpu.requestAdapter();

if (adapter.limits.maxVertexAttributes < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

Mises à jour de l'Aube

Un nouveau bouton d'activation d'instance appelé "expose_wgsl_experimental_features" a été ajouté pour que l'instance n'expose que les fonctionnalités WGSL expérimentales, mais pas celles qui sont dangereuses. Les fonctionnalités WGSL expérimentales sécurisées peuvent ainsi être utilisées sans avoir à activer le bouton d'activation "allow_unsafe_apis". Consultez le problème dawn:2260.

Voici quelques-unes des améliorations récentes apportées aux liaisons Dawn pour Node.js :

  • GPUSupportedFeatures::getSize() a bien été ajouté.
  • L'obsolescence GPUAdapter a été implémentée.
  • GPUInternalError est désormais correctement signalé pour les appareils.
  • Les attributs sont désormais énumérables.

Il ne s'agit que de quelques-uns des points clés. 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 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