公開日: 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 になります。Google は、GPUAdapter isFallbackAdapter
属性を非推奨にして削除できるかどうかを調査しています。発送の意向をご覧ください。
D3D12 でのシェーダーのコンパイル時間を短縮
Chrome チームは、D3D12 バックエンドを使用して WebGPU をサポートするデバイス用の中間表現(IR)を追加することで、WebGPU シェーダー言語コンパイラである Tint の改善を続けています。この IR は、Tint の抽象構文木(AST)と HLSL バックエンド ライターの間に配置され、コンパイラをより効率的でメンテナンス可能にし、最終的にはデベロッパーとユーザーの両方にメリットをもたらします。初期テストでは、新しいバージョンの Tint は、Unity の WGSL シェーダーを HLSL に変換する際に最大 10 倍高速であることが示されています。

これらの改善はすでに 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 互換モードを選択するようブラウザにヒントが示されます。成功すると、作成されたアダプタは「互換性のデフォルト」になります。それ以外の場合は、「コアのデフォルト」です。これは、featureLevel: "core"
オプションを使用する場合と同じです。また、requiredFeatures
と requiredLimits
なしで requestDevice()
を呼び出すと、GPUAdapter のデフォルト機能を持つ GPUDevice がリクエストされます。
コアのデフォルト アダプタは常に "core-features-and-limits"
機能をサポートしており、それらから作成された GPUDevices で自動的に有効になります。互換性がデフォルトのアダプタの場合、"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 の更新
コールバック ステータス列挙型 InstanceDropped
の名前を CallbackCancelled
に変更しました。これは、コールバックはキャンセルされたものの、イベントに関連するバックグラウンド処理(パイプラインのコンパイルなど)がまだ実行されている可能性があることを明確にするためです。新しい名前は、後で別のキャンセル メカニズムが追加された場合に、より一般的に適用できます。問題 520 をご覧ください。
エラー スコープ スタックをポップできなかったことを示す wgpu::PopErrorScopeStatus::EmptyStack
列挙型の名前が wgpu::PopErrorScopeStatus::Error
に変更されました(より一般的な用途にも適しています)。コールバックに、デバッグを支援する対応するエラー説明メッセージも含まれるようになりました。問題 369 をご覧ください。
以下に、主なハイライトをいくつかご紹介します。コミットの一覧(すべて網羅)をご覧ください。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げられたすべての内容のリスト。
Chrome 136
- GPUAdapterInfo の isFallbackAdapter 属性
- D3D12 でのシェーダーのコンパイル時間の短縮
- キャンバス画像を保存、コピーする
- リフト互換モードの制限事項
- Dawn の最新情報
Chrome 135
- null バインド グループ レイアウトでパイプライン レイアウトの作成を許可する
- ビューポートをレンダリング ターゲットの境界を超えて拡張できるようにする
- Android で試験運用版の互換モードに簡単にアクセス可能に
- maxInterStageShaderComponents の上限を削除
- Dawn の最新情報
Chrome 134
Chrome 133
- unnorm8x4-bgra と 1 コンポーネントの頂点形式の追加
- 未定義の値で不明な上限をリクエストできるようにする
- WGSL アライメント ルールの変更
- 破棄による WGSL のパフォーマンスの向上
- 外部テクスチャに VideoFrame displaySize を使用する
- copyExternalImageToTexture を使用してデフォルト以外の向きの画像を処理する
- デベロッパー エクスペリエンスの向上
- featureLevel で互換モードを有効にする
- 試験運用版のサブグループ機能のクリーンアップ
- maxInterStageShaderComponents の上限を非推奨にする
- Dawn の最新情報
Chrome 132
- テクスチャ ビューの使用
- 32 ビット浮動小数点テクスチャのブレンド
- GPUDevice の adapterInfo 属性
- 無効な形式でキャンバス コンテキストを構成すると JavaScript エラーがスローされる
- テクスチャでのフィルタリング サンプラーの制限
- サブグループの拡張テスト
- デベロッパー エクスペリエンスの向上
- 16 ビットの正規化テクスチャ形式の試験運用版サポート
- Dawn の最新情報
Chrome 131
- WGSL で距離をクリップする
- GPUCanvasContext getConfiguration()
- ポイント プリミティブとライン プリミティブに深度バイアスを設定しないでください
- サブグループの包括的スキャンの組み込み関数
- マルチドロー間接の試験運用版サポート
- シェーダー モジュールのコンパイル オプションの厳密な数学
- GPUAdapter requestAdapterInfo() を削除
- Dawn の最新情報
Chrome 130
Chrome 129
Chrome 128
- サブグループのテスト
- 線と点の深度バイアスの設定を非推奨とする
- preventDefault の場合、キャプチャされていないエラーの DevTools 警告を非表示にする
- WGSL はまずサンプリングを補間し、次に次のいずれかを行います。
- Dawn の最新情報
Chrome 127
- Android での OpenGL ES の試験運用版サポート
- GPUAdapter info 属性
- WebAssembly 相互運用性の改善
- コマンド エンコーダのエラーを改善
- Dawn の最新情報
Chrome 126
- maxTextureArrayLayers の上限を引き上げ
- Vulkan バックエンドのバッファ アップロードの最適化
- シェーダーのコンパイル時間の改善
- 送信されるコマンド バッファは一意である必要があります
- Dawn の最新情報
Chrome 125
Chrome 124
Chrome 123
- WGSL での DP4a 組み込み関数のサポート
- WGSL でのポインタ パラメータの制限なし
- WGSL でのコンポジットの参照解除の構文糖衣
- ステンシルと深度アスペクトの読み取り専用状態を分離
- Dawn の最新情報
Chrome 122
Chrome 121
- Android で WebGPU をサポート
- Windows でシェーダーのコンパイルに FXC ではなく DXC を使用する
- コンピューティング パスとレンダリング パスでのタイムスタンプ クエリ
- シェーダー モジュールのデフォルトのエントリ ポイント
- GPUExternalTexture 色空間として display-p3 をサポート
- メモリヒープ情報
- Dawn の最新情報
Chrome 120
Chrome 119
Chrome 118
copyExternalImageToTexture()
での HTMLImageElement と ImageData のサポート- 読み取り / 書き込みストレージ テクスチャと読み取り専用ストレージ テクスチャの試験運用版サポート
- Dawn の最新情報
Chrome 117
- 頂点バッファを設定解除する
- バインド グループを設定解除する
- デバイスが紛失した場合の非同期パイプラインの作成エラーを抑制
- SPIR-V シェーダー モジュールの作成に関する更新
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトを使用したパイプラインのキャッシュ
- Dawn の最新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter
requestDevice()
によって返された紛失したデバイス importExternalTexture()
が呼び出された場合に動画の再生をスムーズに維持する- 仕様への準拠
- デベロッパー エクスペリエンスの向上
- Dawn の最新情報
Chrome 115
- サポートされている WGSL 言語拡張機能
- Direct3D 11 の試験運用版サポート
- AC 電源でデフォルトで個別の GPU を取得する
- デベロッパー エクスペリエンスの向上
- Dawn の最新情報
Chrome 114
- JavaScript を最適化する
- 未構成のキャンバスで getCurrentTexture() を呼び出すと InvalidStateError がスローされる
- WGSL の更新
- Dawn の最新情報