WebGPU 中的新变化(Chrome 145)

François Beaufort
François Beaufort

发布时间: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)导入,因为需要 HTMLVideoElementVideoFrame 等 JavaScript 对象,因此无法在 C/C++ 中构建。如需查看示例代码,请参阅问题 462477379SpotTests.cpp

以下仅介绍了一些关键亮点。查看详尽的提交列表

WebGPU 最新动态

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

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

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