WebGPU 的新变化 (Chrome 122)

François Beaufort
François Beaufort

目前,WebGPU 功能的数量似乎有点少,但重大改进即将到来!后续版本将包括 DP4a、只读和读写存储纹理、单独的模板和深度宽高比控制、渲染为 3D 纹理切片以及着色器编译改进等功能。

在此期间,请了解如何在无头 Chrome 中利用 WebGPU 和 WebGL 支持大幅提升您的 Web AI 模型测试能力,以及 Chrome 中 WebGPU 可能被停用或无法正常运行的原因

利用兼容模式扩大覆盖面(功能尚处于开发阶段)

WebGPU 与现代图形 API(Vulkan、Metal 和 D3D12)完美契合,但有些设备缺少对这些 API 的支持。这限制了 WebGPU 的无障碍功能,特别是在 Windows(31% 的 Chrome 用户缺少 D3D11.1+)、Android(23% 缺少 Vulkan 1.1+)和 ChromeOS(Vulkan 采用率不断增加)等平台上。

为了解决此问题,Chrome 团队正在 WebGPU 中开发一种兼容模式,通过提供适用于 D3D11 和 OpenGL ES 等旧版 API 的略受限的 WebGPU 版本。这将扩大 WebGPU 的潜在用户群。

重要的是,使用兼容模式的应用仍然完全有效的 WebGPU 应用。不支持兼容模式的设备将无缝默认使用核心 WebGPU 适配器,以确保广泛的易用性。

WebGPU 兼容模式的示意图。
WebGPU 兼容模式扩大了覆盖面。

如果您有任何疑问,请查看提案评论

提高 maxVertexAttributes 限制

默认情况下,创建 GPURenderPipeline 时,所有缓冲区的属性总数上限为 16 个。现在,使用 maxVertexAttributes 限制(如果支持)最多可以请求 30 个。请参阅以下示例和issue dawn:2223

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

if (adapter.limits.maxVertexAttributes < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

Dawn 最新动态

新增了名为“expose_wgsl_experimental_features”的实例切换开关添加了 ,以使实例仅公开实验性 WGSL 功能,而不显示不安全的功能,因此无需启用“allow_unsafe_apis”,即可使用安全的实验性 WGSL 功能切换开关。请参阅问题 dawn:2260

Node.js 版 Dawn 绑定的最新改进包括:

  • 已添加 GPUSupportedFeatures::getSize()
  • 实现了 GPUAdapter 过时。
  • 现在可以正确报告设备 GPUInternalError
  • 属性现在可枚举。

本指南仅涵盖部分重要内容。查看详尽的提交内容列表

WebGPU 的新变化

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

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