Novedades de WebGPU (Chrome 141)

François Beaufort
François Beaufort

Fecha de publicación: 24 de septiembre de 2025

Se completó Tint IR

Se completó un proyecto de larga duración (más de 2.5 años) para aumentar el rendimiento de los elementos internos de Tint, el compilador de WGSL. Se insertó una representación intermedia (IR) en el backend entre el árbol de sintaxis abstracta (AST) actual y los generadores de código de backend. La introducción de la IR permitió que el equipo de Chrome quitara todas las transformaciones de AST y las volviera a crear como transformaciones de IR que, debido a las diferencias arquitectónicas, son mucho más rápidas. Los elementos internos de Tint, en algunas plataformas, experimentaron una mejora de velocidad de hasta siete veces a partir de estos cambios.

Esta nueva IR desbloquea un potencial significativo para el análisis y la transformación de sombreadores sofisticados y a gran escala, lo que promete no solo ganancias de rendimiento notables, sino también una ruta más fluida para que Chrome ofrezca nuevas y emocionantes funciones de WebGPU en el futuro.

A partir de este hito, todos los generadores de código de backend funcionan a partir de la representación de IR, se borraron todas las transformaciones de AST y se quitó todo el código de compatibilidad de AST para ejecutar las transformaciones.

Como parte del trabajo de mejora de IR, el frontend de SPIR-V (que usan las aplicaciones para convertir SPIR-V a WGSL) se convirtió de generar una representación de AST a generar directamente a IR. Esta mejora también introduce funciones muy esperadas, como la compatibilidad con float 16 en el frontend de SPIR-V.

Análisis de rango de números enteros en el compilador de WGSL

El equipo de Chrome está lanzando progresivamente un nuevo análisis de rango de números enteros para Tint, el compilador de lenguaje de sombreadores de WebGPU. El análisis de rango de números enteros estima los valores mínimos y máximos que puede tomar una variable de número entero durante la ejecución del programa sin ejecutarlo.

El objetivo de esta función es mejorar la eficiencia reduciendo la necesidad de realizar verificaciones de límites costosas y pronto se habilitará de forma predeterminada en todas las plataformas. Consulta el problema 348701956.

Actualización de SPIR-V 1.4 para el backend de Vulkan

La compatibilidad con SPIR-V 1.4 se lanza cuando está disponible en dispositivos Android y ChromeOS. Esta actualización permite que Tint, el compilador de WGSL, aproveche las nuevas funciones, las relajaciones y las instrucciones de SPIR-V para generar código de manera más eficiente en ciertas situaciones cuando se compilan sombreadores de Vulkan. Consulta el problema 427717267.

Actualizaciones de Dawn

El encabezado webgpu.h estandarizado, que define la API de C de WebGPU principal, ahora se considera estable. Esta estabilidad se aplica específicamente a la API principal definida en sentido ascendente, sin incluir las extensiones de implementación (por ejemplo, de Dawn o Emdawnwebgpu), por lo que es mejor usar el webgpu.h que proporciona la implementación exacta con la que estás vinculando. Si bien el encabezado es estable, es posible que aún encuentres diferencias no deseadas entre las implementaciones a medida que seguimos corrigiendo errores y abordando la compatibilidad en todo el ecosistema. Si lo haces, informa un error.

Gracias al colaborador externo William Candillon, ahora puedes encontrar archivos binarios de Dawn precompilados como artefactos en GitHub Actions. Estos incluyen archivos .lib estáticos para Android, un paquete .XCFramework para Apple y todos los archivos de encabezado necesarios. Consulta la RP #39 de Dawn y un ejemplo de los artefactos.

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