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
- WGSL subgroup_id 扩展
- WGSL uniform_buffer_standard_layout 扩展
- Linux 上的 WebGPU
- 更快的 writeBuffer 和 writeTexture
- Dawn 更新
Chrome 143
Chrome 142
Chrome 141
Chrome 140
- 设备请求会消耗适配器
- 在使用了纹理视图的情况下使用纹理的简写
- WGSL textureSampleLevel 支持 1D 纹理
- 弃用 bgra8unorm 只读存储纹理用法
- 移除 GPUAdapter isFallbackAdapter 属性
- Dawn 更新
Chrome 139
Chrome 138
Chrome 137
- 使用纹理视图进行 externalTexture 绑定
- 复制缓冲区,无需指定偏移量和大小
- WGSL workgroupUniformLoad 使用指向原子的指针
- GPUAdapterInfo powerPreference 属性
- 移除 GPURequestAdapterOptions compatibilityMode 属性
- Dawn 更新
Chrome 136
Chrome 135
- 允许使用 null 绑定组布局创建流水线布局
- 允许视口超出渲染目标边界
- 更轻松地访问 Android 上的实验性兼容模式
- 移除 maxInterStageShaderComponents 限制
- Dawn 更新
Chrome 134
Chrome 133
- 其他 unorm8x4-bgra 和 1 组件顶点格式
- 允许使用未定义的值请求未知限制
- WGSL 对齐规则变更
- 使用 discard 提升 WGSL 性能
- 将 VideoFrame displaySize 用于外部纹理
- 使用 copyExternalImageToTexture 处理具有非默认方向的图片
- 改善开发者体验
- 使用 featureLevel 启用兼容模式
- 实验性子群组功能清理
- 弃用 maxInterStageShaderComponents 限制
- Dawn 更新
Chrome 132
- 纹理视图用法
- 32 位浮点纹理混合
- GPUDevice adapterInfo 属性
- 使用无效格式配置画布上下文会抛出 JavaScript 错误
- 对纹理的过滤采样器限制
- 扩展子群组实验
- 改善开发者体验
- 实验性支持 16 位标准化纹理格式
- Dawn 更新
Chrome 131
- WGSL 中的剪辑距离
- GPUCanvasContext getConfiguration()
- 点和线基元不得有深度偏差
- 子群组的包含扫描内置函数
- 实验性支持多重间接绘制
- 着色器模块编译选项 strict math
- 移除 GPUAdapter requestAdapterInfo()
- Dawn 更新
Chrome 130
Chrome 129
Chrome 128
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 更新
Chrome 115
Chrome 114
Chrome 113
- 在
importExternalTexture()中使用 WebCodecs VideoFrame 来源