Nouveautés de WebGPU (Chrome 139)

François Beaufort
François Beaufort

Publié le : 30 juillet 2025

Prise en charge des textures 3D pour les formats compressés BC et ASTC

Les fonctionnalités WebGPU "texture-compression-bc-sliced-3d" et "texture-compression-astc-sliced-3d" ajoutent la compatibilité avec les textures 3D utilisant les formats Block Compression (BC) et Adaptive Scalable Texture Compression (ASTC). Cela vous permet de profiter des capacités de compression efficaces des formats BC et ASTC pour les données de texture volumétriques, ce qui réduit considérablement l'empreinte mémoire et les besoins en bande passante sans perte importante de qualité visuelle. Cela est particulièrement utile dans des domaines tels que la visualisation scientifique, l'imagerie médicale et les techniques de rendu avancées.

L'extrait de code suivant vérifie si l'adaptateur est compatible avec les textures 3D avec les formats compressés BC et ASTC, et demande un appareil doté de ces fonctionnalités si elles sont disponibles.

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

const requiredFeatures = [];
if (adapter?.features.has("texture-compression-bc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-bc",
    "texture-compression-bc-sliced-3d",
  );
}
if (adapter?.features.has("texture-compression-astc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-astc",
    "texture-compression-astc-sliced-3d",
  );
}
const device = await adapter?.requestDevice({ requiredFeatures });

// Later on...
if (device.features.has("texture-compression-astc-sliced-3d")) {
  // Create a 3D texture using ASTC compression
} else if (device.features.has("texture-compression-bc-sliced-3d")) {
  // Create a 3D texture using BC compression
} else {
  // Fallback: Create an uncompressed 3D texture
}

Explorez les scanners cérébraux 3D en consultant l'exemple de rendu volumétrique avec texture 3D WebGPU et l'entrée chromestatus.

Scanners cérébraux 3D rendus à l'aide de WebGPU.
Image d'un scanner cérébral à partir d'une texture 3D au format compressé ASTC.

Nouvelle fonctionnalité "core-features-and-limits"

Une nouvelle fonctionnalité "core-features-and-limits" est en cours d'implémentation pour le prochain mode de compatibilité WebGPU. Cette fonctionnalité indique que l'adaptateur ou l'appareil est compatible avec les fonctionnalités et les limites de base de la spécification WebGPU. La version "core" de WebGPU est la seule disponible pour le moment. Toutes les implémentations WebGPU doivent donc inclure "core-features-and-limits" dans leurs fonctionnalités compatibles.

À l'avenir, lorsque le mode de compatibilité WebGPU sera disponible, un adaptateur ou un appareil pourront ne pas disposer de cette fonctionnalité pour indiquer qu'il s'agit d'un adaptateur ou d'un appareil en mode compatibilité et non d'un adaptateur ou d'un appareil principal. Lorsqu'il est activé sur un appareil, ce mode lève toutes les restrictions du mode de compatibilité (fonctionnalités et limites).

Pour obtenir une explication détaillée et savoir comment l'utiliser en mode de compatibilité WebGPU, consultez l'explication et la section suivante. Voir le problème 418025721.

Essai Origin Trial pour le mode de compatibilité WebGPU

WebGPU est une API puissante conçue pour les graphiques modernes, qui s'aligne sur des technologies telles que Vulkan, Metal et Direct3D 12. Toutefois, un nombre important d'appareils ne sont toujours pas compatibles avec ces nouvelles API. Par exemple, sous Windows, 31 % des utilisateurs de Chrome ne disposent pas de Direct3D 11.1 ou d'une version ultérieure. Sur Android, 15 % des utilisateurs ne disposent pas de Vulkan 1.1, dont 10 % qui n'ont pas du tout Vulkan.

Cela pose un problème aux développeurs qui souhaitent maximiser la couverture de leur application. Ils sont souvent obligés de développer plusieurs implémentations (par exemple, WebGPU et WebGL), d'accepter un public plus limité avec WebGPU ou de s'en tenir à WebGL, en passant à côté des fonctionnalités avancées de WebGPU comme le calcul GPU.

Représentation visuelle du mode de compatibilité WebGPU.
Élargissement de la couverture du mode de compatibilité WebGPU.

Le mode compatibilité WebGPU offre une solution en proposant une version légèrement restreinte de l'API WebGPU, à laquelle les développeurs peuvent choisir d'accéder. Ce mode est conçu pour exécuter des API graphiques plus anciennes telles qu'OpenGL ES 3.1 et Direct3D11, ce qui élargit considérablement la portée de votre application aux appareils qui ne sont pas compatibles avec les API graphiques modernes et explicites requises par le cœur de WebGPU.

Étant donné que le mode Compatibilité est un sous-ensemble de WebGPU, les applications créées avec ce mode sont également des applications "core" WebGPU valides. Cela signifie qu'elles s'exécuteront de manière fluide, même sur les navigateurs qui ne sont pas spécifiquement compatibles avec le mode de compatibilité.

Pour de nombreuses applications de base, l'activation du mode Compatibilité est aussi simple que de transmettre featureLevel: "compatibility" lorsque vous appelez requestAdapter(). Les applications plus complexes peuvent nécessiter des ajustements mineurs pour s'adapter aux restrictions du mode. L'exemple WebGPU de génération de mipmap est un bon exemple.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({
  featureLevel: "compatibility",
});

const hasCore = adapter?.features.has("core-features-and-limits");
const device = await adapter?.requestDevice({
  requiredFeatures: (hasCore ? ["core-features-and-limits"] : []),
});

if (device?.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions will apply
}

Activer la fonctionnalité

Par défaut, le mode de compatibilité WebGPU n'est pas activé dans Chrome, mais vous pouvez l'essayer dans Chrome 139 en activant explicitement la fonctionnalité. Vous pouvez l'activer localement en activant le flag "Experimental Web Platform Features" (Fonctionnalités expérimentales de la plate-forme Web) sur chrome://flags/#enable-experimental-web-platform-features.

Pour l'activer pour tous les visiteurs de votre application, un test d'origine est en cours et devrait se terminer dans Chrome 145 (21 avril 2026). Pour participer à la phase d'évaluation, consultez l'article Premiers pas avec les phases d'évaluation de l'origine.

Mises à jour de l'Aube

Un argument message est ajouté à la fonction WGPUQueueWorkDoneCallback pour être plus cohérent avec les autres fonctions de rappel qui prennent également un état. Consultez la demande d'extraction webgpu-headers.

Lorsque emdawnwebgpu est associé à -sSHARED_MEMORY, son fichier webgpu.cpp est également compilé avec cet indicateur. Consultez Dawn CL 244075.

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