优化 JavaScript
Chromium 贡献者降低了从 V8 JavaScript 引擎中生成的代码向 Blink 渲染引擎中的 C++ 处理程序进行调用的开销,从而提高了 GPUComputePassEncoder
、GPURenderPassEncoder
和 GPUCommandEncoder
方法的 WebGPU 性能。请参阅问题 chromium:1417558。
以下微基准测试表明,从 JavaScript 调用的 CPU 时间从每 1 万次绘制约 0.5 毫秒减少到每 1 万次绘制约 0.3 毫秒,提升了 40%。
![Chrome 浏览器基准图表的屏幕截图,其中显示了快速调用方面的改进。](https://developer.chrome.google.cn/static/blog/new-in-webgpu-114/image/screenshot-chrome-browse-13d0e671b3d3c.png?authuser=8&hl=sl)
未配置的画布上的 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
现已针对 Node.js 实现了 GPUAdapter::requestAdapterInfo()
和 GPUBuffer::getMapState()
方法。请参阅问题 dawn:1761。
WebGPU 的新变化
WebGPU 新变化系列涵盖的所有内容的列表。
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 最新动态