Novedades de WebGPU (Chrome 146)

François Beaufort
François Beaufort

Publicado el 25 de febrero de 2026

Compatibilidad con el modo de compatibilidad de WebGPU en OpenGL ES 3.1

Si bien WebGPU está diseñado para alinearse con las APIs de gráficos modernas, como Vulkan, Metal y D3D12, muchos usuarios tienen hardware más antiguo que no admite estos estándares. Para cerrar esta brecha y garantizar una accesibilidad amplia, Chrome presenta una nueva función de participación llamada modo de compatibilidad.

Este modo te permite ejecutar WebGPU en APIs de gráficos más antiguas, como OpenGL ES 3.1. Si segmentas un subconjunto ligeramente restringido de la especificación de WebGPU, te aseguras de que tu app web sea accesible para todos, desde las plataformas de juegos más recientes hasta las laptops y los dispositivos móviles más antiguos. Si bien el equipo comenzó con Android, está explorando la compatibilidad con otros dispositivos, como ChromeOS con OpenGL ES 3.1 y Windows con Direct3D 11.

En muchas apps web, puedes habilitar el modo de compatibilidad pasando featureLevel: "compatibility" cuando llamas a requestAdapter(). Si tu dispositivo admite Core WebGPU, Chrome mostrará un adaptador compatible con Core, pero tu app web sabrá que debe permanecer dentro de los límites de compatibilidad, a menos que habilite la función "core-features-and-limits" (o habilite todas las funciones disponibles). Es posible que las aplicaciones más complejas requieran ajustes menores para adaptarse a las restricciones del modo.

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

Consulta la guía de conceptos básicos de WebGPU para obtener información detallada sobre las restricciones arquitectónicas específicas de este modo. Además, todas las muestras de WebGPU ahora admiten el modo de compatibilidad. También puedes leer la intención de envío.

Adjuntos transitorios

Puedes usar la nueva marca GPUTextureUsage TRANSIENT_ATTACHMENT para crear adjuntos con eficiencia de memoria. Esto permite que las operaciones de pase de renderización permanezcan en la memoria de mosaico, lo que evita el tráfico de VRAM y la asignación de VRAM para las texturas.

Cuando se declara una textura como transitoria (o "sin memoria"), la GPU sabe que solo necesita el contenido de la textura de forma temporal, específicamente, solo dentro del pase de renderización actual. Además, debido a que el contenido de la textura se descarta después del pase de renderización, es posible que el controlador no necesite asignar VRAM para ella.

En el siguiente ejemplo, se muestra cómo crear una textura transitoria.

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',
  });
}

Consulta la muestra de MSAA de Hello Triangle: WebGPU y la intención de envío.

Extensión texture_and_sampler_let de WGSL

La extensión de lenguaje WGSL texture_and_sampler_let te permite asignar variables de textura o de muestreador a un let dentro de un sombreador WGSL. Actualmente, esta función proporciona un mecanismo de nombres alternativo y se prepara para la compatibilidad sin vinculación, en la que los métodos que muestran texturas o muestreadores se pueden almacenar directamente en variables locales.

Consulta el siguiente ejemplo y la intención de envío.

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

Actualizaciones de Dawn

Los siguientes niveles de límite nuevos están disponibles:

La validación de SPIR-V está habilitada de forma predeterminada en Android para proporcionar una capa de seguridad adicional y evitar la inestabilidad del controlador debido a una entrada con formato incorrecto. Consulta el problema 473526182.

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