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 del lenguaje WGSL subgroup_uniformity cambia el alcance del análisis de uniformidad para que las funciones integradas de subgrupos y cuádruples se produzcan a nivel del subgrupo (en lugar del grupo de trabajo). Esta función permite que la funcionalidad de subgrupos 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 se considerarán más valores como uniformes para el subgrupo, como el valor integrado subgroup_id agregado recientemente.

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

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 s<ubgroups;
  
  @gro>up(0) @binding(0) varstorage, 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 experimental de búferes síncronos en instancias de trabajador

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úferes síncronos 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 su estandarización. Para probarlo, inicia Chrome con el parámetro de configuración --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 lo reemplaza. Consulta el problema 472926167.

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

Ahora, las versiones nocturnas de los objetos binarios (además de Emdawnwebgpu) 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 o el equipo de Dawn.

Se agregó compatibilidad con wgpu::ExternalTexture a Emdawnwebgpu. Ten en cuenta que solo se puede importar desde 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 ver un ejemplo de código.

Esto abarca solo algunos de los aspectos destacados clave. Consulta la lista exhaustiva de confirmaciones.

Novedades de WebGPU

Una lista de todo lo que se abordó en la serie Novedades de WebGPU

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