WebGPU(Chrome 138)中的新变化

François Beaufort
François Beaufort

Published: Jun 17, 2025

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

开发者现在可以直接使用 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 build,让开发者在使用 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 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

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