WebGPU 中的新变化(Chrome 141)

François Beaufort
François Beaufort

发布时间:2025 年 9 月 24 日

Tint IR 已完成

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

这一新 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 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