提高 maxTextureArrayLayers 限制
默认情况下,2D 纹理的深度或层数允许的最大值为 256。现在,如果在支持的情况下使用 maxTextureArrayLayers 限制,则最多可以请求 2048 个 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 的效率。目前,着色器会在生成机器代码之前多次修改着色器代码的抽象语法树 (AST),而在某些平台上,此过程会占用大量资源。为了优化这一点,我们引入了一个新的中间表示法 (IR),以及使用它的重新设计的后端。此变更旨在加快着色器编译速度。
![渲染流水线的创建涉及使用 Tint 编译器将 WGSL 转换为 SPIR-V,然后使用驱动程序编译器将 WGSL 转换为 ISA。](https://developer.chrome.google.cn/static/blog/new-in-webgpu-126/image/render-pipeline-creation-diagram.jpg?authuser=5&hl=sr)
这些改进已在 Android 上推出,并且正在逐步推广到支持带有 Vulkan 后端的 WebGPU 的 ChromeOS 设备。请参阅问题 42250751。
提交的命令缓冲区必须是唯一的
使用 submit()
方法提交到 GPUQueue 的每个 GPUCommandBuffer 都必须是唯一的,否则会产生验证错误。这是一个规范错误。请参阅问题 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 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 最新动态