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.

ワーカーでの試験運用版の同期バッファ マッピング

Chrome チームは、WebGPU とアプリケーション コード間の摩擦を軽減する可能性のある方法を検討するため、ワーカー内の同期バッファ マッピングを調査しています。この取り組みの一環として、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 に置き換えられ、現在では wgpu::FeatureName::TextureFormatTier1 が優先されます。問題 472926167 をご覧ください。

wgpu::FeatureName::Snorm16TextureFormats 機能が削除されました。Resolve を除く機能は、現在 wgpu::FeatureName::TextureFormatsTier1 にほぼ含まれています。問題 465347942 をご覧ください。

バイナリのナイトリー リリース(Emdawnwebgpu に加えて)が GitHub でビルドされ、google/dawn リリースで利用できるようになりました。これらはベスト エフォート型サービスとして提供され、Google または Dawn チームによる署名や保証はありません。

Emdawnwebgpu に wgpu::ExternalTexture のサポートが追加されました。C/C++ での構築は HTMLVideoElementVideoFrame などの JavaScript オブジェクトが必要なため、JavaScript コード(EM_ASM など)からのみインポートできます。コード例については、問題 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