WebGPU 的新变化 (Chrome 114)

François Beaufort
François Beaufort

优化 JavaScript

Chromium 贡献者通过减少从 V8 JavaScript 引擎中的生成代码向 Blink 渲染引擎中的 C++ 处理程序进行调用的开销,加快了 GPUComputePassEncoderGPURenderPassEncoderGPUCommandEncoder 方法的 WebGPU 性能。请参阅问题 chromium:1417558

以下微基准测试显示,从 JavaScript 进行调用的 CPU 时间从每 10,000 次绘制大约 0.5 毫秒减少到每 10,000 次绘制大约 0.3 毫秒,提升了 40%。

Chrome 浏览器基准图表的屏幕截图,其中显示了快速调用方面的改进。
显示快速调用方面的改进的 Chrome 基准图(来源)。

在未配置的画布上调用 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

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