Nieuw in WebGPU (Chrome 147-148)

François Beaufort
François Beaufort

Gepubliceerd: 22 april 2026

WGSL-extensie linear_indexing

Met de WGSL-taalextensie linear_indexing kun je de volgende ingebouwde waarden gebruiken in werkgroepen:

  • global_invocation_index: De lineaire positie van de huidige aanroep in het totale raster van de berekeningsshader. Een u32-invoerwaarde die wordt berekend op basis van de global_invocation_id, workgroup_size en num_workgroups.

  • workgroup_index: De lineaire positie van de huidige werkgroep in het totale raster van de berekeningsshader. Een u32invoerwaarde waarbij alle aanroepen binnen dezelfde werkgroep dezelfde index delen.

De extensie lost de handmatige indexberekening op basis van 3D-coördinaten op. Dit is een herhalend, foutgevoelig proces. Door deze logica in de taal zelf te verplaatsen, verbetert WGSL de leesbaarheid van de code en worden veelvoorkomende herhalende berekeningen geëlimineerd.

Deze taalexteensie kan worden gedetecteerd met navigator.gpu.wgslLanguageFeatures. Neem het volgende voorbeeld en het intent to ship door.

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 op Linux NVIDIA

Na de eerdere uitrol van WebGPU op Linux wordt de ondersteuning uitgebreid met moderne NVIDIA-stuurprogramma's (2024-05) op Wayland. Zie probleem 442791440.

Updates voor Dawn

Met wgpu::FeatureName::AdapterPropertiesDRM, alleen beschikbaar op Vulkan, kun je Linux DRM-informatie over de adapter opvragen. Ga naar Dawn CL 299575.

Dit zijn maar enkele van de belangrijkste punten. Neem de uitgebreide lijst met doorvoeringen door.

Wat is er nieuw in WebGPU?

Een lijst met alles wat is behandeld in de serie Nieuw in WebGPU.

Chrome 155-156

Chrome 153-154

Chrome 151-152

Chrome 149-150

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