Novedades de WebGPU (Chrome 147-148)

François Beaufort
François Beaufort

Publicado el 22 de abril de 2026

Extensión linear_indexing de WGSL

La extensión de lenguaje linear_indexing de WGSL te permite usar los siguientes valores integrados en grupos de trabajo:

  • global_invocation_index: Es la posición lineal de la invocación actual dentro de la cuadrícula total del sombreador de cómputos. Es un valor de entrada u32 que se calcula en función de global_invocation_id, workgroup_size y num_workgroups.

  • workgroup_index: Es la posición lineal del grupo de trabajo actual dentro de la cuadrícula general del sombreador de cómputos. Es un valor de entrada u32 en el que todas las invocaciones dentro del mismo grupo de trabajo comparten el mismo índice.

La extensión aborda el cálculo manual del índice a partir de coordenadas 3D, que es un proceso repetitivo y propenso a errores. Al trasladar esta lógica al lenguaje en sí, WGSL mejora la legibilidad del código y elimina los cálculos repetitivos comunes.

Esta extensión de lenguaje se puede detectar con la función navigator.gpu.wgslLanguageFeatures. Consulta el siguiente ejemplo y la intención de envío.

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

Tras el lanzamiento anterior de WebGPU en Linux, la compatibilidad se expande para incluir controladores NVIDIA modernos (2024-05) en Wayland. Consulta el problema 442791440.

Actualizaciones de Dawn

El wgpu::FeatureName::AdapterPropertiesDRM, que solo está disponible en Vulkan, te permite consultar información de DRM de Linux sobre el adaptador. Consulta Dawn CL 299575.

Esto solo abarca algunos de los aspectos más destacados. Consulta la lista exhaustiva de confirmaciones.

Novedades de WebGPU

Una lista de todo lo que se abarcó en la serie Novedades 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