WebGPU の新機能(Chrome 136)

François Beaufort
François Beaufort

公開日: 2025 年 4 月 23 日

GPUAdapterInfo isFallbackAdapter 属性

GPUAdapterInfo の isFallbackAdapter ブール値属性は、互換性の拡大、動作の予測可能性の向上、プライバシーの強化と引き換えに、GPUAdapter のパフォーマンスが大幅に制限されているかどうかを示します。ユーザーが提供する GPUDevice オブジェクトを受け取るライブラリは、GPUDevice の adapterInfo 属性を介してこの情報にアクセスできないため、この追加が必要でした。次の例と問題 403172841をご覧ください。

const adapter = await navigator.gpu.requestAdapter();

if (adapter?.info.isFallbackAdapter) {
  // The returned adapter is a software-backed fallback adapter, which
  // may have significantly lower performance and fewer features.
}

Chrome はフォールバック アダプターのサポートをまだリリースしていないため、現時点ではユーザーのデバイスで isFallbackAdapter は常に false です。GPUAdapter の isFallbackAdapter 属性を非推奨にして削除できるかどうかを調査しています。リリース予定をご覧ください。

D3D12 でのシェーダー コンパイル時間の改善

Chrome チームは、D3D12 バックエンドで WebGPU をサポートするデバイスの中間表現(IR)を追加することで、WebGPU シェーダー言語コンパイラである Tint の改善を続けています。Tint の抽象構文木(AST)と HLSL バックエンド ライターの間に配置されたこの IR により、コンパイラはより効率的で保守しやすくなり、最終的にはデベロッパーとユーザーの両方にメリットをもたらします。初期テストでは、Unity の WGSL シェーダーを HLSL に変換する際に、新しいバージョンの Tint が最大 10 倍高速であることが示されています。

フローチャートは、WGSL シェーダー コードを低レベルの GPU 命令に変換するプロセスを示しています。
Windows でのレンダリング パイプラインの作成。

これらの改善は、Android、ChromeOS、macOS で既に利用可能であり、D3D12 バックエンドで WebGPU をサポートする Windows デバイスに段階的に拡大されています。問題 42251045 をご覧ください。

キャンバス画像を保存してコピーする

Chrome ユーザーは、WebGPU キャンバスを右クリックして、コンテキスト メニュー オプションの [名前を付けて画像を保存...] または [画像をコピー] にアクセスできるようになりました。問題 40902474 をご覧ください。

こちらの
ユーザーが選択したコンテキスト メニュー [名前を付けて画像を保存...]

互換モードの制限を解除する

GPUDevice で利用可能な試験運用版の "core-features-and-limits" 機能は、chrome://flags/#enable-unsafe-webgpu フラグが有効になっている場合、互換モードのすべての制限(機能と制限)を解除します。問題 395855517 をご覧ください。

featureLevel: "compatibility" オプションを指定して GPUAdapter をリクエストすると、ブラウザは試験運用版の WebGPU 互換モード を選択します。成功した場合、結果のアダプターは「compatibility-defaulting」になります。それ以外の場合は「core-defaulting」になります。これは、featureLevel: "core" オプションを使用する場合と同じです。また、requiredFeaturesrequiredLimits を指定せずに requestDevice() を呼び出すと、GPUAdapter のデフォルト機能で GPUDevice がリクエストされます。

core-defaulting アダプターは常に "core-features-and-limits" 機能をサポートしており、この機能から作成された GPUDevice で自動的に有効になります。compatibility-defaulting アダプターの場合、"core-features-and-limits" 機能がサポートされている可能性があり、この機能から作成された GPUDevice でリクエストできます。どちらのタイプのアダプターも、"float32-blendable"などの機能をサポートしている場合があります。これは、コアモードと互換モードの両方で省略可能です。

次の例は、"float32-blendable" が必要で、使用可能な場合はコア機能の使用をサポートするが、コア機能が使用できない場合は互換機能のみを使用するアプリケーションを対象としています。

const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

if (!adapter || !adapter.features.has("float32-blendable")) {
  throw new Error("32-bit float textures blending support is not available");
}

const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
  requiredFeatures.push("core-features-and-limits");
}

const device = await adapter.requestDevice({ requiredFeatures });

if (!device.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions validation rules will apply.
}

試験運用版の GPUAdapter featureLevel 属性と isCompatibilityMode 属性は、"core-features-and-limits" 機能に置き換えられました。問題 395855516 をご覧ください。

Dawn の最新情報

コールバックがキャンセルされたことを明確にするため、コールバック ステータス列挙型 InstanceDroppedCallbackCancelled に変更されました。ただし、パイプライン コンパイルなど、イベントに関連するバックグラウンド処理は引き続き実行される可能性があります。新しい名前は、後で別のキャンセル メカニズムが追加された場合にも、より一般的に適用できます。問題 520 をご覧ください。

エラー スコープ スタックをポップできないことを示す wgpu::PopErrorScopeStatus::EmptyStack 列挙型が、wgpu::PopErrorScopeStatus::Error に変更されました(こちらもより一般的に適用できます)。コールバックには、デバッグに役立つ対応するエラー説明メッセージも含まれるようになりました。問題 369 をご覧ください。

これは主なハイライトの一部にすぎません。コミットの完全なリストをご覧ください。

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