Novidades do WebGPU (Chrome 146)

François Beaufort
François Beaufort

Publicado em: 25 de fevereiro de 2026

Suporte ao modo de compatibilidade do WebGPU no OpenGL ES 3.1

Embora a WebGPU tenha sido projetada para se alinhar às APIs de gráficos modernas, como Vulkan, Metal e D3D12, muitos usuários têm hardware mais antigo que não é compatível com esses padrões. Para diminuir essa lacuna e garantir ampla acessibilidade, o Chrome apresenta um novo recurso de ativação chamado modo de compatibilidade.

Esse modo permite executar o WebGPU em APIs de gráficos mais antigas, como o OpenGL ES 3.1. Ao segmentar um subconjunto ligeiramente restrito da especificação WebGPU, você garante que seu app da Web esteja acessível a todos, desde os equipamentos de jogos mais recentes até laptops e dispositivos móveis mais antigos. Embora o foco inicial seja o Android, a equipe está estudando a compatibilidade com outros dispositivos, como o ChromeOS com OpenGL ES 3.1 e o Windows com Direct3D 11.

Em muitos apps da Web, é possível ativar o modo de compatibilidade transmitindo featureLevel: "compatibility" ao chamar requestAdapter(). Se o dispositivo for compatível com a WebGPU principal, o Chrome vai retornar um adaptador compatível com o Core, mas seu web app vai saber que precisa ficar dentro dos limites de compatibilidade, a menos que ative o recurso "core-features-and-limits" (ou todos os recursos disponíveis). Aplicativos mais complexos podem exigir pequenos ajustes para se adequar às restrições do modo.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();

Consulte o guia de fundamentos do WebGPU (em inglês) para informações detalhadas sobre as restrições arquitetônicas específicas desse modo. Além disso, todas as amostras do WebGPU agora são compatíveis com o modo de compatibilidade. Você também pode ler a intenção de envio.

Anexos temporários

Você pode usar a nova flag TRANSIENT_ATTACHMENT GPUTextureUsage para criar anexos com uso eficiente da memória. Isso permite que as operações de transmissão de renderização permaneçam na memória de bloco, o que evita o tráfego de VRAM e a alocação de VRAM para as texturas.

Ao declarar uma textura como transitória (ou "sem memória"), a GPU sabe que só precisa do conteúdo da textura temporariamente, especificamente, apenas na transmissão de renderização atual. Além disso, como o conteúdo da textura é descartado após a transmissão de renderização, talvez o driver não precise alocar VRAM para ela.

O exemplo a seguir mostra como criar uma textura temporária.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

Confira o Hello Triangle MSAA - Exemplo da WebGPU (em inglês) e a intenção de envio (em inglês).

Extensão texture_and_sampler_let da WGSL

A extensão de linguagem WGSL texture_and_sampler_let permite atribuir variáveis de textura ou sampler a um let em um shader WGSL. No momento, esse recurso oferece um mecanismo alternativo de nomenclatura e se prepara para a compatibilidade sem vinculação, em que métodos que retornam texturas ou samplers podem ser armazenados diretamente em variáveis locais.

Confira o exemplo a seguir e a intenção de envio.

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

Atualizações do amanhecer

Os seguintes novos níveis de limite estão disponíveis:

A validação do SPIR-V é ativada por padrão no Android para oferecer uma camada de segurança adicional e evitar a instabilidade do driver devido a entradas malformadas. Consulte o problema 473526182.

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