WebGPU 中的新变化(Chrome 141)

François Beaufort
François Beaufort

Published: September 24, 2025

Tint IR 已完成

一项旨在提升 WGSL 编译器 Tint 内部性能的长期项目(超过 2.5 年)已完成。在当前抽象语法树 (AST) 和后端代码生成器之间,后端插入了一个中间表示法 (IR)。引入 IR 后,Chrome 团队移除了所有 AST 转换,并将其重新创建为 IR 转换,由于架构差异,这些转换的速度要快得多。在某些平台上,Tint 内部的这些更改使速度提升了七倍。

这种新的 IR 为复杂的大规模着色器分析和转换带来了巨大的潜力,不仅有望显著提升性能,还为 Chrome 在未来提供令人兴奋的新 WebGPU 功能铺平了道路。

从这个里程碑开始,所有后端代码生成器都基于 IR 表示法,所有 AST 转换都已被删除,并且运行转换的所有 AST 支持代码都已被移除。

作为 IR 改进工作的一部分,SPIR-V 前端(供应用将 SPIR-V 转换为 WGSL)已从生成 AST 表示法转换为直接生成 IR。此增强功能还为 SPIR-V 前端引入了期待已久的功能,例如 float 16 支持。

WGSL 编译器中的整数范围分析

Chrome 团队正在逐步推出针对 WebGPU 着色器语言编译器 Tint 的新整数范围分析。整数范围分析用于估算整数变量在程序执行期间可以采用的最小值和最大值,而无需实际运行程序。

此功能旨在通过减少对成本高昂的边界检查的需求来提高效率,并且很快将在所有平台上默认启用。请参阅问题 348701956

Vulkan 后端的 SPIR-V 1.4 更新

在 Android 和 ChromeOS 设备上,如果可用,则会推出 SPIR-V 1.4 支持。此更新使 WGSL 编译器 Tint 能够利用新的 SPIR-V 功能、放宽限制和新指令,以便在编译 Vulkan 着色器时在某些情况下更高效地生成代码。请参阅问题 427717267

Dawn 更新

定义核心 WebGPU C API 的标准化 webgpu.h 标头现在终于被认为是稳定的。这种稳定性专门适用于上游定义的核心 API,不包括实现扩展(例如来自 Dawn 或 Emdawnwebgpu),因此最好使用与您要链接的确切实现提供的 webgpu.h。虽然标头是稳定的,但随着我们继续修复 bug 并解决整个生态系统中的兼容性问题,您可能仍然会遇到实现之间的意外差异。如果遇到这种情况,请提交 bug

感谢外部贡献者 William Candillon,您现在可以在 GitHub Actions 上找到预构建的 Dawn 二进制文件作为工件。其中包括适用于 Android 的静态 .lib 文件、适用于 Apple 的 .XCFramework 文件包以及所有必要的头文件。请参阅 Dawn PR #39 和工件的 示例

这仅涵盖了一些主要亮点。请查看提交的完整列表

WebGPU 的新变化

WebGPU 新变化系列中涵盖的所有内容的列表。

Chrome 149-150

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