Nouveautés de WebGPU (Chrome 145)

François Beaufort
François Beaufort

Publié le : 28 janvier 2026

Extension subgroup_uniformity WGSL

L'extension de langage WGSL subgroup_uniformity modifie le champ d'application de l'analyse de l'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 la probabilité de désactiver complètement les vérifications d'uniformité. Cela implique concrètement que davantage de valeurs seront considérées comme uniformes aux sous-groupes, comme la valeur intégrée subgroup_id récemment ajoutée.

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

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 s<ubgroups;
  
  @gro>up(0) @binding(0) varstorage, 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 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 tampon synchrone dans les workers. Dans le cadre de cette initiative, une nouvelle méthode expérimentale mapSync() pour GPUBuffer a été prototypée. Cette méthode, réservé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 et 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);
}

Mises à jour de l'Aube

La fonctionnalité wgpu::FeatureName::R8UnormStorage n'est plus disponible. Il a été remplacé par wgpu::FeatureName::TextureFormatTier1, qui le 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 incluses dans wgpu::FeatureName::TextureFormatsTier1. Consultez le problème 465347942.

Les versions nocturnes des binaires (en plus d'Emdawnwebgpu) sont désormais créées sur GitHub et disponibles dans les versions google/dawn. Ils sont fournis en tant que service de meilleure qualité possible et ne sont pas signés ni garantis par Google ni par l'équipe Dawn.

La compatibilité avec wgpu::ExternalTexture a été ajoutée à Emdawnwebgpu. Notez qu'il ne peut être importé que depuis du 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 issue 462477379 et SpotTests.cpp pour obtenir un exemple de code.

Il ne s'agit que de quelques 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 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