WebGPU 中的新变化(Chrome 145)

François Beaufort
François Beaufort

Published: January 28, 2026

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 subgroups;
  
  @group(0) @binding(0) var<storage, 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);
}

Dawn 更新

wgpu::FeatureName::R8UnormStorage 功能已不再可用。它已被 wgpu::FeatureName::TextureFormatTier1 取代,后者现在取代了前者。请参阅问题 472926167

wgpu::FeatureName::Snorm16TextureFormats 功能已移除。其功能(解析除外)现在很大程度上包含在 wgpu::FeatureName::TextureFormatsTier1 中。请参阅问题 465347942

现在,二进制文件的 Nightly 版本(除了 Emdawnwebgpu 之外)是在 GitHub 上构建的,并且可在 google/dawn 版本中找到。它们是尽力而为的服务,未经 Google 或 Dawn 团队签名或保证。

Emdawnwebgpu 中添加了 wgpu::ExternalTexture 支持。请注意,它只能从 JavaScript 代码(例如 EM_ASM)导入,因为在 C/C++ 中无法构建,这是因为需要 JavaScript 对象(例如 HTMLVideoElementVideoFrame)。如需查看示例代码,请参阅问题 462477379SpotTests.cpp

这仅涵盖了一些主要亮点。如需查看提交的完整列表,请点击此处。

WebGPU 的新变化

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

Chrome 147-148

Chrome 146

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