Nouveautés de WebGPU (Chrome 146)

François Beaufort
François Beaufort

Publié le : 25 février 2026

Prise en charge du mode de compatibilité WebGPU sur OpenGL ES 3.1

Bien que WebGPU soit conçu pour s'aligner sur les API graphiques modernes telles que Vulkan, Metal et D3D12, de nombreux utilisateurs disposent de matériel plus ancien qui ne prend pas en charge ces normes. Pour combler cette lacune et garantir une large accessibilité, Chrome propose une nouvelle fonctionnalité optionnelle appelée "mode Compatibilité".

Ce mode vous permet d'exécuter WebGPU sur des API graphiques plus anciennes comme OpenGL ES 3.1. En ciblant un sous-ensemble légèrement restreint de la spécification WebGPU, vous vous assurez que votre application Web est accessible à tous, des derniers ordinateurs de jeu aux anciens ordinateurs portables et appareils mobiles. L'équipe commence par Android, mais elle étudie la possibilité de prendre en charge d'autres appareils, tels que ChromeOS avec OpenGL ES 3.1 et Windows avec Direct3D 11.

Pour de nombreuses applications Web, vous pouvez activer le mode de compatibilité en transmettant featureLevel: "compatibility" lorsque vous appelez requestAdapter(). Si votre appareil est compatible avec Core WebGPU, Chrome renverra un adaptateur compatible avec Core, mais votre application Web saura rester dans les limites de compatibilité, sauf si elle active la fonctionnalité "core-features-and-limits" (ou toutes les fonctionnalités disponibles). Les applications plus complexes peuvent nécessiter des ajustements mineurs pour respecter les restrictions du mode.

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

Consultez le guide sur les principes fondamentaux de WebGPU pour obtenir des informations détaillées sur les restrictions architecturales spécifiques de ce mode. De plus, tous les exemples WebGPU sont désormais compatibles avec le mode Compatibilité. Vous pouvez également consulter l'intention d'expédition.

Pièces jointes temporaires

Vous pouvez utiliser le nouvel indicateur TRANSIENT_ATTACHMENT GPUTextureUsage pour créer des pièces jointes économes en mémoire. Cela permet aux opérations de passe de rendu de rester dans la mémoire des tuiles, ce qui évite le trafic VRAM et peut éviter l'allocation VRAM pour les textures.

En déclarant une texture comme transitoire (ou "sans mémoire"), le GPU sait qu'il n'a besoin du contenu de la texture que temporairement, plus précisément uniquement dans la passe de rendu actuelle. De plus, comme le contenu de la texture est supprimé après la passe de rendu, il est possible que le pilote n'ait pas besoin d'allouer de VRAM pour celle-ci.

L'exemple suivant montre comment créer une texture temporaire.

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

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

Consultez l'exemple WebGPU Hello Triangle MSAA et l'intention d'expédition.

Extension WGSL texture_and_sampler_let

L'extension de langage WGSL texture_and_sampler_let vous permet d'attribuer des variables de texture ou d'échantillonneur à un let dans un nuanceur WGSL. Cette fonctionnalité fournit actuellement un mécanisme de dénomination alternatif et prépare la prise en charge sans liaison, où les méthodes renvoyant des textures ou des échantillonneurs peuvent être stockées directement dans des variables locales.

Consultez l'exemple suivant et l'intention d'expédition.

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

Mises à jour de l'Aube

Les nouveaux niveaux de limites suivants sont disponibles :

La validation SPIR-V est activée par défaut sur Android pour fournir une couche de sécurité supplémentaire et empêcher l'instabilité des pilotes à partir d'entrées mal formées. Consultez le problème 473526182.

Cette liste ne couvre que quelques-uns des principaux points forts. 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 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

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