发布时间:2026 年 1 月 28 日
WGSL subgroup_uniformity 扩展
WGSL 语言扩展 subgroup_uniformity 将子群组和四元组内置函数的均匀性分析范围更改为在子群组级别(而非工作组级别)进行。此功能可让子群组功能在更多情况下被视为统一,从而提高开发者的使用体验,并降低完全停用一致性检查的可能性。一个实际影响是,更多值将被视为子群组统一值,例如最近添加的 subgroup_id 内置值。
可以使用 navigator.gpu.wgslLanguageFeatures 检测此语言扩展功能。请参阅以下示例和发货意向。
if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_uniformity")) {
throw new Error(`WGSL subgroup uniformity is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });
const shaderModule = device.createShaderModule({ code: `
enable s<ubgroups;
@gro>up(0) @binding(0) varstorage, read_write non_uniform: i32;
fn main() {
if (non_uniform == 42) {
_ = subgroupElect();
}
}`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.
工作器中的实验性同步缓冲区映射
为了探索减少 WebGPU 与应用代码之间摩擦的潜在方法,Chrome 团队正在研究工作器中的同步缓冲区映射。作为这项工作的一部分,我们已为 GPUBuffer 设计了新的实验性 mapSync() 方法。此方法仅限于工作器,其工作方式与 mapAsync() 类似。
此功能尚处于实验阶段,您的反馈对于确定是否会提议将其标准化至关重要。如需试用,请使用 --enable-features=WebGPUMapSyncOnWorkers 开关启动 Chrome,并报告有关其实用性和影响的反馈。请参阅以下代码段以开始操作。
// Create a GPU buffer.
const buffer = device.createBuffer({
size: 42,
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});
// Map buffer synchronously when possible.
if ("mapSync" in GPUBuffer.prototype) {
buffer.mapSync(GPUMapMode.READ);
} else {
// Awaiting allows other code to run, which can cause application logic issues.
await buffer.mapAsync(GPUMapMode.READ);
}
“黎明”更新
wgpu::FeatureName::R8UnormStorage 功能已不再提供。它已被 wgpu::FeatureName::TextureFormatTier1 取代,后者现在取代了前者。请参阅问题 472926167。
wgpu::FeatureName::Snorm16TextureFormats 功能已被移除。除了 Resolve 之外,其功能现在基本上都包含在 wgpu::FeatureName::TextureFormatsTier1 中。请参阅问题 465347942。
现在,除了 Emdawnwebgpu 之外,二进制文件的每晚版本也在 GitHub 上构建,并可在 google/dawn 版本中找到。这些模型以尽力而为的服务形式提供,未经 Google 或 Dawn 团队签名或保证。
已向 Emdawnwebgpu 添加 wgpu::ExternalTexture 支持。请注意,它只能从 JavaScript 代码(例如 EM_ASM)导入,因为需要 HTMLVideoElement 或 VideoFrame 等 JavaScript 对象,因此无法在 C/C++ 中构建。如需查看示例代码,请参阅问题 462477379 和 SpotTests.cpp。
以下仅介绍了一些关键亮点。查看详尽的提交列表。
WebGPU 最新动态
WebGPU 的新变化系列中涵盖的所有内容。
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 支持一维纹理
- 弃用 bgra8unorm 只读存储纹理用法
- 移除 GPUAdapter isFallbackAdapter 属性
- Dawn 更新
Chrome 139
Chrome 138
Chrome 137
- 使用纹理视图进行 externalTexture 绑定
- 复制缓冲区,但不指定偏移量和大小
- 使用指向原子变量的指针的 WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference 属性
- 移除 GPURequestAdapterOptions compatibilityMode 属性
- Dawn 更新
Chrome 136
Chrome 135
- 允许创建具有 null bind 组布局的流水线布局
- 允许视口超出渲染目标边界
- 更轻松地访问 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 来源