Android での OpenGL ES の試験運用版サポート
Chrome for Android で試験運用版の WebGPU 互換モードをリクエストするときに、OpenGL ES バックエンドから GPUAdapter
にアクセスできるようになりました。これは、Vulkan 1.1 以降をサポートしていない Android デバイスで特に便利です。次の例と 問題 dawn:1545 をご覧ください。
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
この機能はまだ試験運用段階であるため、次の手順を行う必要があります。
- 次の Chrome フラグ(「Unsafe WebGPU Support」、「WebGPU Developer Features」、「Enable command line on non-rooted devices」)を有効にします。
- Android デバイスで USB デバッグを有効にします。
- Android デバイスをワークステーションに接続し、
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
を実行して Vulkan ではなく OpenGL ES バックエンドを優先し、Chrome を再起動します。
GPUAdapter の info 属性
アダプターに関する識別情報を取得する際に、GPUAdapter info
属性を使用して同期的に取得できるようになりました。以前は、アダプタ情報を取得する唯一の方法として、非同期の GPUAdapter requestAdapterInfo()
メソッドを呼び出す方法がありました。しかし、requestAdapterInfo()
は WebGPU 仕様から削除され、ウェブ デベロッパーが必要な移行を行うのに十分な時間を確保するため、年内に Chrome からも削除されます。次の例、Chrome ステータス、問題 335383516 をご覧ください。
const adapter = await navigator.gpu.requestAdapter();
const info = adapter.info;
// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();
console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"
WebAssembly 相互運用性の改善
WebAssembly ヒープが WebGPU に直接渡されるように、setBindGroup()
の dynamicOffsetsData
、writeBuffer()
のソース data
、ソース data
ピン writeTexture()
の BufferSource 引数のサイズが 2 GB に制限されなくなりました。問題 339049388 をご覧ください。
コマンド エンコーダ エラーの改善
コマンド エンコーダから発生する一部の検証エラーで、コンテキスト情報が改善されます。たとえば、レンダリング パスがまだ開いているときにコンピューティング パスを開始しようとすると、次のエラーが発生します。
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)
これはエラーの原因を説明しますが、実際に検証エラーの原因となった呼び出しは示しません。次のエラーは、エラーをトリガーしたコマンドを含む、改善されたメッセージです。change 192245 をご覧ください。
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
- While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).
Dawn の更新
webgpu.h C API で、Dawn の wgpu::Surface::GetPreferredFormat()
に相当する C の wgpuSurfaceGetPreferredFormat()
が公開されなくなりました。代わりに、wgpu::Surface::GetCapabilities()
を使用してサポートされている形式のリストを取得し、formats[0]
を使用してこのサーフェスに適したテクスチャ形式を取得します。一方、wgpu::Surface::GetPreferredFormat()
を呼び出すと、非推奨に関する警告が生成されます。問題 290 をご覧ください。
サーフェスでサポートされているテクスチャの使用方法は、wgpu::Surface::GetCapabilities()
を呼び出すときに wgpu::SurfaceCapabilities::usages
で使用できるようになりました。常に wgpu::TextureUsage::RenderAttachment
を含める必要があります。問題 301 をご覧ください。
以下に、主なハイライトをいくつかご紹介します。コミットの一覧(すべて網羅)をご覧ください。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げられたすべての内容のリスト。
Chrome 131
- WGSL で距離をクリップする
- GPUCanvasContext getConfiguration()
- ポイント プリミティブとライン プリミティブに深度バイアスを設定しないでください
- サブグループの包括的スキャンの組み込み関数
- マルチ描画の間接的なサポート
- シェーダー モジュールのコンパイル オプションの厳密な計算
- GPUAdapter requestAdapterInfo() を削除
- Dawn の最新情報
Chrome 130
Chrome 129
Chrome 128
- サブグループのテスト
- 線と点の深度バイアスの設定を非推奨とする
- preventDefault の場合、キャプチャされていないエラーの DevTools 警告を非表示にする
- WGSL はまずサンプリングを補間し、次に次のいずれかを行います。
- 夜明けの最新情報
Chrome 127
Chrome 126
- maxTextureArrayLayers の上限を引き上げ
- Vulkan バックエンドのバッファ アップロードの最適化
- シェーダーのコンパイル時間の改善
- 送信するコマンド バッファは一意である必要があります
- 夜明けの最新情報
Chrome 125
Chrome 124
Chrome 123
- WGSL での DP4a 組み込み関数のサポート
- WGSL でのポインタ パラメータの制限なし
- WGSL でのコンポジットの参照解除の構文糖衣
- ステンシル アスペクトと深さアスペクトの読み取り専用状態を分離
- 夜明けの最新情報
Chrome 122
Chrome 121
- Android で WebGPU をサポート
- Windows でシェーダーのコンパイルに FXC ではなく DXC を使用する
- コンピューティング パスとレンダリング パスのタイムスタンプ クエリ
- シェーダー モジュールへのデフォルトのエントリ ポイント
- GPUExternalTexture の色空間として display-p3 をサポート
- メモリヒープ情報
- Dawn の最新情報
Chrome 120
Chrome 119
- フィルタ可能な 32 ビット浮動小数点テクスチャ
- unorm10-10-10-2 頂点形式
- rgb10a2uint テクスチャ形式
- 夜明けの最新情報
Chrome 118
copyExternalImageToTexture()
での HTMLImageElement と ImageData のサポート- 読み取り / 書き込みストレージ テクスチャと読み取り専用ストレージ テクスチャの試験運用版サポート
- 夜明けの最新情報
Chrome 117
- 頂点バッファを設定解除する
- バインド グループの設定解除
- デバイスが失われた場合の非同期パイプライン作成のエラーをミュートする
- SPIR-V シェーダー モジュールの作成の更新
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトを使用したパイプラインのキャッシュ
- Dawn の最新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter から返されたデバイスの紛失
requestDevice()
importExternalTexture()
が呼び出された場合に動画の再生をスムーズに維持する- 仕様への準拠
- デベロッパー エクスペリエンスの向上
- Dawn の最新情報
Chrome 115
- サポートされている WGSL 言語拡張機能
- Direct3D 11 の試験運用版サポート
- AC 電源でデフォルトで個別の GPU を取得する
- デベロッパー エクスペリエンスの向上
- Dawn の最新情報