Novedades de WebGPU (Chrome 141)

François Beaufort
François Beaufort

Fecha de publicación: 24 de septiembre de 2025

Se completó la aplicación de tinte IR

Se completó un proyecto de larga duración (más de 2 años y medio) 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 RI permitió que el equipo de Chrome quitara todas las transformaciones del AST y las volviera a crear como transformaciones de la RI que, debido a las diferencias arquitectónicas, son mucho más rápidas. En algunas plataformas, los cambios internos de Tint mejoraron la velocidad hasta siete veces.

Este nuevo RI desbloquea un potencial significativo para el análisis y la transformación de sombreadores sofisticados a gran escala, lo que promete no solo ganancias de rendimiento notables, sino también un camino más fluido 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 la RI, 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 la RI. Esta mejora también introduce funciones muy esperadas, como la compatibilidad con float 16 en el frontend de SPIR-V.

Análisis de rangos 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 del 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úmeros enteros durante la ejecución del programa sin ejecutarlo realmente.

El objetivo de esta función es mejorar la eficiencia, ya que reduce 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

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

Actualizaciones de Dawn

El encabezado estandarizado webgpu.h, que define la API de C principal de WebGPU, ahora se considera estable. Esta estabilidad se aplica específicamente a la API principal definida upstream, sin incluir las extensiones de implementación (por ejemplo, de Dawn o Emdawnwebgpu), por lo que es mejor usar el webgpu.h proporcionado por la implementación exacta con la que se vincula. 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 es así, informa un error.

Gracias al colaborador externo William Candillon, ahora puedes encontrar archivos binarios de Dawn prediseñados 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 PR #39 de Dawn y un ejemplo de los artefactos.

Esto solo abarca 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 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