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.

在 Worker 中進行實驗性同步緩衝區對應

為減少 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

現在 GitHub 會建構二進位檔的每夜版本 (除了 Emdawnwebgpu 之外),並在 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