Novidades do WebGPU (Chrome 145)

François Beaufort
François Beaufort

Publicado em: 28 de janeiro de 2026

Extensão subgroup_uniformity da WGSL

A extensão de linguagem WGSL subgroup_uniformity muda o escopo da análise de uniformidade para subgrupo e funções integradas quádruplas para ocorrer no nível do subgrupo (em vez do grupo de trabalho). Esse recurso permite que a funcionalidade de subgrupo seja considerada uniforme em mais casos, representando uma melhor qualidade de vida para os desenvolvedores e menos probabilidade de desativar as verificações de uniformidade. Uma implicação prática é que mais valores serão considerados uniformes no subgrupo, como o valor subgroup_id integrado adicionado recentemente.

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

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.

Mapeamento de buffer síncrono experimental em workers

Para explorar possíveis maneiras de reduzir o atrito entre o WebGPU e o código do aplicativo, a equipe do Chrome está investigando o mapeamento de buffer síncrono em workers. Como parte desse esforço, um novo método experimental mapSync() para GPUBuffer foi criado. Esse método, restrito a workers, funciona de maneira semelhante a mapAsync().

Esse recurso é experimental, e seu feedback é importante para determinar se ele será proposto para padronização. Para testar, inicie o Chrome usando a chave --enable-features=WebGPUMapSyncOnWorkers e envie feedback sobre a utilidade e o impacto dela. Confira o snippet a seguir para começar.

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

Atualizações do amanhecer

O recurso wgpu::FeatureName::R8UnormStorage não está mais disponível. Ele foi substituído por wgpu::FeatureName::TextureFormatTier1, que agora o substitui. Consulte o problema 472926167.

O recurso wgpu::FeatureName::Snorm16TextureFormats foi removido. As funcionalidades dele, exceto a de resolução, agora são abrangidas pelo wgpu::FeatureName::TextureFormatsTier1. Consulte o problema 465347942.

As versões noturnas de binários (além do Emdawnwebgpu) agora são criadas no GitHub e estão disponíveis em versões do google/dawn. Eles são fornecidos como um serviço da melhor maneira possível e não são assinados nem garantidos pelo Google ou pela equipe do Dawn.

A compatibilidade com wgpu::ExternalTexture foi adicionada ao Emdawnwebgpu. Ele só pode ser importado de código JavaScript (por exemplo, EM_ASM), já que a construção em C/C++ não é possível devido à necessidade de um objeto JavaScript, como HTMLVideoElement ou VideoFrame. Consulte problema 462477379 e SpotTests.cpp para ver um exemplo de código.

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 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