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
- WGSL subgroup_id 扩展
- WGSL uniform_buffer_standard_layout 扩展
- Linux 上的 WebGPU
- 更快的 writeBuffer 和 writeTexture
- Dawn 更新
Chrome 143
Chrome 142
Chrome 141
Chrome 140
- 设备请求使用适配器
- 使用纹理(使用纹理视图)的简写
- WGSL textureSampleLevel 支持一维纹理
- 弃用 bgra8unorm 只读存储纹理使用情况
- 移除 GPUAdapter isFallbackAdapter 属性
- Dawn 更新
Chrome 139
Chrome 138
Chrome 137
- 将纹理视图用于 externalTexture 绑定
- 复制缓冲区,无需指定偏移量和大小
- WGSL workgroupUniformLoad 使用指向原子的指针
- GPUAdapterInfo powerPreference 属性
- 移除 GPURequestAdapterOptions compatibilityMode 属性
- Dawn 更新
Chrome 136
Chrome 135
- 允许使用 null 绑定组布局创建流水线布局
- 允许视口超出渲染目标边界
- 更轻松地访问 Android 上的实验性兼容模式
- 移除 maxInterStageShaderComponents 限制
- Dawn 更新
Chrome 134
Chrome 133
- 新增 unorm8x4-bgra 和单组件顶点格式
- 允许使用未定义的值请求未知限制
- WGSL 对齐规则变更
- WGSL 性能提升(使用 discard)
- 将 VideoFrame displaySize 用于外部纹理
- 使用 copyExternalImageToTexture 处理具有非默认方向的图片
- 提升开发者体验
- 使用 featureLevel 启用兼容模式
- 实验性子群组功能清理
- 弃用 maxInterStageShaderComponents 限制
- Dawn 更新
Chrome 132
- 纹理视图使用情况
- 32 位浮点纹理混合
- GPUDevice adapterInfo 属性
- 使用无效格式配置画布上下文会抛出 JavaScript 错误
- 对纹理的过滤采样器限制
- 扩展子群组实验
- 提升开发者体验
- 实验性支持 16 位归一化纹理格式
- Dawn 更新
Chrome 131
- WGSL 中的剪辑距离
- GPUCanvasContext getConfiguration()
- 点和线基元不得有深度偏差
- 子群组的包含扫描内置函数
- 实验性支持多重间接绘制
- 着色器模块编译选项 strict math
- 移除 GPUAdapter requestAdapterInfo()
- Dawn 更新
Chrome 130
Chrome 129
Chrome 128
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
Chrome 122
Chrome 121
- 支持 Android 上的 WebGPU
- 在 Windows 上使用 DXC 而不是 FXC 进行着色器编译
- 计算和渲染通道中的时间戳查询
- 着色器模块的默认入口点
- 支持 display-p3 作为 GPUExternalTexture 色彩空间
- 内存堆信息
- Dawn 更新
Chrome 120
Chrome 119
Chrome 118
- copyExternalImageToTexture()
copyExternalImageToTexture()中支持 HTMLImageElement 和 ImageData - 实验性支持读写和只读存储纹理
- Dawn 更新
Chrome 117
Chrome 116
- WebCodecs 集成
- GPUAdapter
requestDevice()返回的丢失设备 - 如果调用
importExternalTexture(),则保持视频播放流畅 - 规范一致性
- 提升开发者体验
- Dawn 更新
Chrome 115
Chrome 114
Chrome 113
- 在
importExternalTexture()中使用 WebCodecs VideoFrame 来源