提高 maxTextureArrayLayers 限制
默认情况下,2D 纹理的深度或图层数的允许最大值为 256。现在,您可以使用 maxTextureArrayLayers 限制(如果受支持)请求最多 2048 个纹理数组图层。请参阅以下示例和问题 42241514。
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 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 texture array layers attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxTextureArrayLayers: 2048 }
});
针对 Vulkan 后端的缓冲区上传优化
现在,在调用 Vulkan 后端的 GPUQueue 的 writeBuffer() 方法时,可使用快速路径。现在,数据可以直接写入目的地缓冲区,而无需额外的复制和同步。此优化可减少将数据上传到 GPU 所需的内存流量。
快速路径优化要求缓冲区内存对主机可见,且没有任何待处理的 GPU 操作。请参阅问题 42242084。
改进了着色器编译时间
Chrome 团队正在提高 WebGPU 着色器语言编译器 Tint 的效率。Tint 目前会多次修改着色器代码的抽象语法树 (AST),然后再生成机器码。在某些平台上,此过程会消耗大量资源。为了优化这一点,我们引入了新的中间表示法 (IR),并重新设计了使用它的后端。此变更旨在加快着色器编译速度。
这些改进已在 Android 上推出,并且正在逐步推广到支持带有 Vulkan 后端的 WebGPU 的 ChromeOS 设备。请参阅问题 42250751。
提交的命令缓冲区必须是唯一的
使用 submit()
方法提交到 GPUQueue 的每个 GPUCommandBuffer 都必须是唯一的,否则会产生验证错误。这是 specification bug。请参阅问题 42241492。
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.
Dawn 更新
C++ 封装容器 webgpu_cpp.h 现在仅支持头文件,这简化了其使用,并支持更轻松地与其他 C++ 封装容器集成。请参阅问题 40195122。
webgpu.h C API 不再公开 Swapchain 对象的概念。此更改是为了与 JavaScript API 紧密保持一致。内部配置现在通过新 wgpu::Surface
对象的 Configure()
方法完成,该方法未来可能会发生修改。如需查看示例,请参阅使用 WebGPU 构建应用文档。请参阅问题 42241264。
查看详尽的提交内容列表。
WebGPU 中的新变化
WebGPU 新变化系列中涵盖的所有内容的列表。
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 更新