Novidades da WebGPU (Chrome 147-148)

François Beaufort
François Beaufort

Publicado em: 22 de abril de 2026

Extensão linear_indexing do WGSL

A extensão de linguagem WGSL linear_indexing permite usar os seguintes valores integrados em grupos de trabalho:

  • global_invocation_index: a posição linear da invocação atual na grade total do shader de computação. Um valor de entrada u32 calculado com base em global_invocation_id, workgroup_size e num_workgroups.

  • workgroup_index: a posição linear do grupo de trabalho atual na grade geral do shader de computação. Um valor de entrada u32 em que todas as invocações no mesmo grupo de trabalho compartilham o mesmo índice.

A extensão aborda o cálculo manual do índice de coordenadas 3D, que é um processo repetitivo e sujeito a erros. Ao mover essa lógica para a própria linguagem, a WGSL melhora a legibilidade do código e elimina cálculos repetitivos comuns.

Essa extensão de linguagem pode ser detectada por recursos usando navigator.gpu.wgslLanguageFeatures. Confira o exemplo a seguir e a intenção de envio.

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

Após o lançamento anterior da WebGPU no Linux, o suporte está sendo expandido para incluir drivers NVIDIA modernos (2024-05) no Wayland. Consulte o problema 442791440.

Atualizações do amanhecer

O wgpu::FeatureName::AdapterPropertiesDRM, disponível apenas no Vulkan, permite consultar informações do DRM do Linux sobre o adaptador. Consulte Dawn CL 299575.

Isso abrange apenas alguns dos principais destaques. Confira a lista completa de commits.

Novidades no WebGPU

Uma lista de tudo o que foi abordado na série O que há de novo no 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