优化 JavaScript
Chromium 贡献者通过减少从 V8 JavaScript 引擎中的生成代码向 Blink 渲染引擎中的 C++ 处理程序进行调用的开销,加快了 GPUComputePassEncoder
、GPURenderPassEncoder
和 GPUCommandEncoder
方法的 WebGPU 性能。请参阅问题 chromium:1417558。
以下微基准测试显示,从 JavaScript 进行调用的 CPU 时间从每 10,000 次绘制大约 0.5 毫秒减少到每 10,000 次绘制大约 0.3 毫秒,提升了 40%。
在未配置的画布上调用 getCurrentTexture() 会抛出 InvalidStateError
根据 WebGPU 规范,现在,对未配置的画布调用 GPUCanvasContext
getCurrentTexture()
方法会抛出 InvalidStateError
,而不是 OperationError
。请参阅问题 chromium:1424461。
const context = document.querySelector("canvas").getContext("webgpu");
context.getCurrentTexture(); // Throws InvalidStateError
WGSL 更新
AbstractInt 的零填充矢量现在可以写为 vec2()
、vec3()
和 vec4()
。请参阅问题 tint:1892。例如:
- “
vec2()
”为“vec2(0,0)
” - “
vec3()
”为“vec3(0,0,0)
” - “
vec4()
”为“vec4(0,0,0,0)
”
Dawn 更新
改进了错误消息
系统不再丢弃无效对象的描述符标签,以便您在错误消息中看到这些标签。请参阅问题 dawn:1771。
为 Node.js 添加了缺失的 API
现在,GPUAdapter::requestAdapterInfo()
和 GPUBuffer::getMapState()
方法已针对 Node.js 实现。请参阅问题 dawn:1761。
WebGPU 的新变化
WebGPU 新变化系列中涵盖的所有内容的列表。
Chrome 131
- 在 WGSL 中剪裁距离
- GPUCanvasContext getConfiguration()
- 点和线图元不得有深度偏差
- 子群组的包容性扫描内置函数
- 对多绘制间接的实验性支持
- 着色器模块编译选项“严格数学”
- 移除 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
Chrome 117
Chrome 116
- WebCodecs 集成
- GPUAdapter
requestDevice()
返回的丢失设备 - 在调用
importExternalTexture()
时保持视频流畅播放 - 规范合规性
- 改进开发者体验
- Dawn 更新