WebGPU(Chrome 138)中的新变化

François Beaufort
François Beaufort

发布时间:2025 年 6 月 17 日

使用缓冲区作为绑定资源的简写

开发者现在可以直接使用 GPUBuffer 作为 GPUBindingResource 来向着色器公开以进行绑定。这样一来,它便与其他绑定类型保持一致,并且当大小和偏移量都使用默认值时,它甚至比 GPUBufferBinding 更易于使用。请参阅问题 419223794

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTextureView },
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer }, // Same as { buffer: myBuffer }
    { binding: 4, resource: { buffer: myOtherBuffer, offset: 42 },
  ],
});

创建时映射的缓冲区的尺寸要求变更

如果 size 不是 4 的倍数,则在创建将 mappedAtCreation 设置为 true 的缓冲区时,现在会抛出 RangeError。之前,此限制仅通过 GPUValidationError 来强制执行。请参阅问题 405883445

myDevice.createBuffer({
  mappedAtCreation: true,
  size: 42,
  usage: GPUBufferUsage.STORAGE,
});
// Throws RangeError

近期 GPU 的架构报告

Nvidia 和 AMD 的最新 GPU 现在会在 GPUAdapterInfo 中将其架构分别报告为 "blackwell""rdna4",此外还对 GPU 架构列表进行了一些其他细微的添加。请参阅问题 417202748

弃用 GPUAdapter isFallbackAdapter 属性

GPUAdapter isFallbackAdapter 属性已弃用。它已替换为 Chrome 136 中引入的 GPUAdapterInfo isFallbackAdapter 属性。请参阅弃用意向

Dawn 更新

Emscripten 在 Dawn GLFW 中受支持,可用于 CMake 构建,从而让开发者在使用 Emdawnwebgpu 时进一步简化其 WebGPU 跨平台应用代码,该工具通过浏览器 API 实现最新的标准化 webgpu.h。请参阅变更 dawn:242894

如需查看完整指南,请参阅更新后的使用 WebGPU 构建应用文档。

现在,软件包版本中包含“远程”Emdawnwebgpu 端口。此端口的快照已包含在 Emscripten 4.0.10 及更高版本中,现在支持外部托管端口。现在,只需将标志从 emcc -sUSE_WEBGPU 更改为 emcc --use-port=emdawnwebgpu,即可切换到 Emdawnwebgpu。请参阅 Emscripten PR #24303#24220Dawn CL 243214

这仅涵盖了部分重要亮点。查看详尽的提交列表

WebGPU 的新变化

WebGPU 新变化系列中涵盖的所有内容的列表。

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