Novedades de WebGPU (Chrome 145)

François Beaufort
François Beaufort

Publicado el 28 de enero de 2026

Extensión subgroup_uniformity de WGSL

La extensión de lenguaje WGSL subgroup_uniformity cambia el alcance del análisis de uniformidad para las funciones integradas de subgrupo y cuádruple para que se produzca a nivel del subgrupo (en lugar del grupo de trabajo). Esta función permite que la funcionalidad del subgrupo se considere uniforme en más casos, lo que representa una mejor calidad de vida para los desarrolladores y menos probabilidades de inhabilitar por completo las verificaciones de uniformidad. Una implicación práctica es que más valores se verán como uniformes en el subgrupo, como el valor integrado subgroup_id agregado recientemente.

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("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 subgroups;
  
  @group(0) @binding(0) var<storage, read_write> non_uniform: i32;

  fn main() {
    if (non_uniform == 42) {
      _ = subgroupElect();
    }
  }`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.

Asignación de búfer síncrono experimental en trabajadores

Para explorar posibles formas de reducir la fricción entre WebGPU y el código de la aplicación, el equipo de Chrome está investigando la asignación de búfer síncrono dentro de los trabajadores. Como parte de este esfuerzo, se creó un prototipo de un nuevo método experimental mapSync() para GPUBuffer. Este método, restringido a los trabajadores, funciona de manera similar a mapAsync().

Esta función es experimental, y tus comentarios son importantes para determinar si se propondrá para la estandarización. Para probarla, inicia Chrome con el parámetro --enable-features=WebGPUMapSyncOnWorkers y envía comentarios sobre su utilidad y su impacto. Consulta el siguiente fragmento para comenzar.

// 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);
}

Actualizaciones de Dawn

La función wgpu::FeatureName::R8UnormStorage ya no está disponible. Se reemplazó por wgpu::FeatureName::TextureFormatTier1, que ahora la reemplaza. Consulta el problema 472926167.

Se quitó la función wgpu::FeatureName::Snorm16TextureFormats. Sus capacidades, con la excepción de Resolve, ahora están incluidas en gran medida en wgpu::FeatureName::TextureFormatsTier1. Consulta el problema 465347942.

Las versiones nocturnas de los archivos binarios (además de Emdawnwebgpu) ahora se compilan en GitHub y están disponibles en las versiones de google/dawn. Se proporcionan como un servicio de mejor esfuerzo y no están firmados ni garantizados por Google ni el equipo de Dawn.

Se agregó compatibilidad con wgpu::ExternalTexture a Emdawnwebgpu. Ten en cuenta que solo se puede importar desde el código JavaScript (por ejemplo, EM_ASM), ya que la construcción en C/C++ no es posible debido al requisito de un objeto JavaScript, como HTMLVideoElement o VideoFrame. Consulta el problema 462477379 y SpotTests.cpp para obtener un código de ejemplo.

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

Novedades de WebGPU

Una lista de todo lo que se cubrió 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