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 });
<ph type="x-smartling-placeholder">![WebGPU レポートページに、Android デバイスの OpenGL ES バックエンドからの GPUAdapter 情報が表示されている。](https://developer.chrome.com/static/blog/new-in-webgpu-127/image/opengl-es-android.jpg?hl=ja)
この機能はまだ試験運用段階のため、以下の手順を行う必要があります。
- Chrome の [安全でない WebGPU サポート]、[WebGPU のデベロッパー向け機能]、[root 権限のないデバイスでコマンドラインを有効にする] の各フラグを有効にします。
- Android デバイスで USB デバッグを有効にします。
- Android デバイスをワークステーションに接続し、
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
を実行して Vulkan よりも OpenGL ES バックエンドを優先して、Chrome を再起動します。
GPUAdapter 情報属性
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 に直接渡されるようにするため、BufferSource 引数のサイズが 2 GB に制限されなくなりました(setBindGroup()
の dynamicOffsetsData
、writeBuffer()
のソース data
、ソース data
のピン writeTexture()
)。問題 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]).
夜明けの最新情報
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 128
- サブグループのテスト
- ラインとポイントの深度バイアス設定のサポート終了
- 未キャプチャ エラーの DevTools の警告を PreventDefault で非表示にする
- 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 をサポートする
- メモリヒープ情報
- 夜明けの最新情報
Chrome 120
Chrome 119
- フィルタ可能な 32 ビット浮動小数点のテクスチャ
- unorm10-10-10-2 頂点形式
- rgb10a2uint テクスチャ形式
- 夜明けの最新情報
Chrome 118
copyExternalImageToTexture()
での HTMLImageElement と ImageData のサポート- 読み取り / 書き込みと読み取り専用のストレージ テクスチャの試験運用版サポート
- 夜明けの最新情報
Chrome 117
- 頂点バッファの設定解除
- バインド グループの設定解除
- デバイスが失われた場合の非同期パイプライン作成のエラーをミュート
- SPIR-V シェーダー モジュールの作成に関するアップデート
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトを使用したキャッシュ パイプライン
- 夜明けの最新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter から返されたデバイスの紛失
requestDevice()
importExternalTexture()
が呼び出された場合に動画の再生をスムーズにする- 仕様の適合性
- デベロッパー エクスペリエンスの向上
- 夜明けの最新情報
Chrome 115
- サポートされている WGSL 言語の拡張機能
- Direct3D 11 の試験運用版サポート
- AC 電源でデフォルトでディスクリート GPU を取得
- デベロッパー エクスペリエンスの向上
- 夜明けの最新情報