Nouveautés de WebGPU (Chrome 145)

François Beaufort
François Beaufort

Publié le 28 janvier 2026

Extension WGSL subgroup_uniformity

L'extension de langage WGSL subgroup_uniformity modifie le champ d'application de l'analyse d'uniformité pour les fonctions intégrées de sous-groupe et de quad afin qu'elle se produise au niveau du sous-groupe (au lieu du groupe de travail). Cette fonctionnalité permet de considérer la fonctionnalité de sous-groupe comme uniforme dans davantage de cas, ce qui améliore la qualité de vie des développeurs et réduit le risque de désactiver complètement les vérifications d'uniformité. Concrètement, davantage de valeurs seront considérées comme uniformes au niveau du sous-groupe, comme la valeur intégrée subgroup_id récemment ajoutée.

Cette extension de langage peut être détectée à l'aide de navigator.gpu.wgslLanguageFeatures. Consultez l'exemple suivant et l'intention de livraison.

if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_uniformity")) {
  throw new Error(`WGSL subgroup uniformity is not available`);
}

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
  throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });

const shaderModule = device.createShaderModule({ code: `
  enable subgroups;
  
  @group(0) @binding(0) var<storage, read_write> non_uniform: i32;

  fn main() {
    if (non_uniform == 42) {
      _ = subgroupElect();
    }
  }`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.

Mappage de mémoire tampon synchrone expérimental dans les nœuds de calcul

Pour explorer les moyens potentiels de réduire les frictions entre WebGPU et le code d'application, l'équipe Chrome étudie le mappage de mémoire tampon synchrone dans les nœuds de calcul. Dans le cadre de cette initiative, une nouvelle méthode expérimentale mapSync() pour GPUBuffer a été prototypée. Cette méthode, limitée aux nœuds de calcul, fonctionne de la même manière que mapAsync().

Cette fonctionnalité est expérimentale. Vos commentaires sont importants pour déterminer si elle sera proposée pour la normalisation. Pour l'essayer, lancez Chrome à l'aide du commutateur --enable-features=WebGPUMapSyncOnWorkers, puis envoyez vos commentaires sur son utilité et son impact. Pour commencer, consultez l'extrait de code suivant.

// Create a GPU buffer.
const buffer = device.createBuffer({
  size: 42,
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});

// Map buffer synchronously when possible.
if ("mapSync" in GPUBuffer.prototype) {
  buffer.mapSync(GPUMapMode.READ);
} else {
  // Awaiting allows other code to run, which can cause application logic issues.
  await buffer.mapAsync(GPUMapMode.READ);
}

Informations Dawn

La fonctionnalité wgpu::FeatureName::R8UnormStorage n'est plus disponible. Elle a été remplacée par wgpu::FeatureName::TextureFormatTier1, qui la remplace désormais. Consultez le problème 472926167.

La fonctionnalité wgpu::FeatureName::Snorm16TextureFormats a été supprimée. Ses fonctionnalités, à l'exception de Resolve, sont désormais largement couvertes par wgpu::FeatureName::TextureFormatsTier1. Consultez le problème 465347942.

Les versions nightly des binaires (en plus d'Emdawnwebgpu) sont désormais créées sur GitHub et disponibles dans les versions google/dawn. Elles sont fournies en tant que service de meilleure qualité possible et ne sont ni signées ni garanties par Google ou l'équipe Dawn.

La compatibilité avec wgpu::ExternalTexture a été ajoutée à Emdawnwebgpu. Notez qu'elle ne peut être importée qu'à partir de code JavaScript (par exemple, EM_ASM), car la construction en C/C++ n'est pas possible en raison de la nécessité d'un objet JavaScript tel que HTMLVideoElement ou VideoFrame. Consultez le problème 462477379 et SpotTests.cpp pour obtenir un exemple de code.

Cela ne couvre que quelques-uns des principaux points forts. Consultez la liste exhaustive des commits.

Nouveautés de WebGPU

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

Chrome 147-148

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