Nouveautés de WebGPU (Chrome 147-148)

François Beaufort
François Beaufort

Publié le 22 avril 2026

Extension WGSL linear_indexing

L'extension de langage WGSL linear_indexing vous permet d'utiliser les valeurs intégrées suivantes dans les groupes de travail :

  • global_invocation_index : position linéaire de l'invocation actuelle dans la grille totale de nuanceurs de calcul. Valeur d'entrée u32 calculée en fonction de global_invocation_id, workgroup_size et num_workgroups.

  • workgroup_index : position linéaire du groupe de travail actuel dans la grille globale de nuanceurs de calcul. Valeur d'entrée u32 où toutes les invocations du même groupe de travail partagent le même index.

L'extension résout le calcul manuel de l'index à partir de coordonnées 3D, qui est un processus répétitif et sujet aux erreurs. En déplaçant cette logique dans le langage lui-même, WGSL améliore la lisibilité du code et élimine les calculs répétitifs courants.

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("linear_indexing")) {
  throw new Error(`WGSL global_invocation_index and workgroup_index built-in values are not available`);
}

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

const shaderModule = device.createShaderModule({ code: `
  requires linear_indexing;

  override x : u32;
  override y : u32;
  override z : u32;

  @compute @workgroup_size(x, y, z)
  fn main(@builtin(workgroup_index) wg_index : u32,
          @builtin(global_invocation_index) g_index : u32) {

  // The workgroup_index built-in value is equivalent to:
  // (@builtin(workgroup_id).x +
  // (@builtin(workgroup_id).y * @builtin(num_workgroups).x) +
  // (@builtin(workgroup_id).z * @builtin(num_workgroups).x * @builtin(num_workgroups).y))

  // The global_invocation_index built-in value is equivalent to:
  // (@builtin(global_invocation_id).x +
  // (@builtin(global_invocation_id).y * x * @builtin(num_workgroups).x) +
  // (@builtin(global_invocation_id).z * x * @builtin(num_workgroups).x * y * @builtin(num_workgroups).y))
  }`,
});

WebGPU sur Linux NVIDIA

Suite au déploiement précédent de WebGPU sur Linux, la compatibilité s'étend désormais aux pilotes NVIDIA modernes (2024-05) sur Wayland. Consultez le problème 442791440.

Informations Dawn

wgpu::FeatureName::AdapterPropertiesDRM, disponible uniquement sur Vulkan, vous permet d'interroger les informations Linux DRM sur l'adaptateur. Consultez Dawn CL 299575.

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