WebGPU 中的新变化(Chrome 140)

François Beaufort
François Beaufort

Published: August 27, 2025

设备请求会消耗适配器

根据 WebGPU 规范,适配器在设备请求成功后会被标记为“已消耗”。因此,任何后续使用同一适配器的 requestDevice() 调用现在都会导致承诺被拒绝。以前,这些调用会返回在创建时丢失的设备。请参阅问题 415825174

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

在使用了纹理视图的情况下使用纹理的简写

现在,GPUTexture 可以直接用作 GPUBindingResource,以向着色器公开以进行绑定。它还可以用作 GPURenderPassColorAttachment view、GPURenderPassColorAttachment resolveTarget 和 GPURenderPassDepthStencilAttachment view,以提高人体工程学。与使用 GPUTextureView 获取默认视图相比,这种方法更简单。请参阅 问题 425906323

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel 支持 1D 纹理

现在可以使用 textureSampleLevel() 对 1D 纹理进行 采样,以与 2D 纹理保持一致。这样,您就可以从顶点着色器中对 1D 纹理进行采样,而以前只能使用 textureSample() 从片段着色器中进行采样。请参阅 问题 382514673

弃用 bgra8unorm 只读存储纹理用法

现在,使用 "bgra8unorm" 格式的只读存储纹理已被弃用。WebGPU 规范明确禁止这样做,而 Chrome 之前允许这样做是一个 bug,因为此格式旨在用于只写访问,并且不可移植。请参阅问题 427681156

移除 GPUAdapter isFallbackAdapter 属性

如之前所宣布,GPUAdapter isFallbackAdapter 属性现已移除。它已替换为 Chrome 136 中引入的 GPUAdapterInfo isFallbackAdapter 属性。请参阅移除意向

Dawn 更新

wgpuInstanceGetWGSLLanguageFeatures() 函数用于获取实例支持的 WGSL 语言功能列表。之前,它会返回 WGPUStatus 值。由于它不会失败,因此已更新为不返回值。请参阅问题 429178774

如果表面没有当前纹理,wgpuSurfacePresent() 函数现在会返回 WGPUStatus 错误。请参阅问题 425930323

借助新的 wgpu::InstanceFeatureName::MultipleDevicesPerAdapter 功能,适配器可以创建多个设备,而不会被“消耗”。请参阅问题 415825174

借助 dump_shaders_on_failure 设备切换开关,您可以仅在失败时转储着色器以进行 调试。它仅适用于 D3 后端,但将来可能会扩展到其他后端。请参阅问题 429187478

Vulkan 后端进行了多项更改,以减少提交渲染通道时的开销,尤其是为了提高移动 GPU 的性能。例如:缓存 VkFramebuffers

这仅涵盖了一些主要亮点。请查看提交的完整列表

WebGPU 的新变化

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

Chrome 149-150

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