提高了 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),并重新设计了使用该 IR 的后端。此更改旨在加快着色器编译速度。
这些改进已在 Android 设备上推出,我们正在逐步将其扩展到支持 WebGPU 和 Vulkan 后端的 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 131
- 在 WGSL 中剪裁距离
- GPUCanvasContext getConfiguration()
- 点和线基元不得有深度偏差
- 针对子群组的包含性扫描内置函数
- 对多绘制间接的实验性支持
- 着色器模块编译选项“严格数学”
- 移除了 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 更新