maxTextureArrayLayers の上限を引き上げる
デフォルトでは、2D テクスチャの深度またはレイヤ数の最大値は 256 です。サポートされている場合に maxTextureArrayLayers の上限を使用することで、最大 2,048 枚をリクエストできるようになりました。以下の例と問題 42241514 をご覧ください。
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max texture array layers attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxTextureArrayLayers: 2048 }
});
Vulkan バックエンドのバッファ アップロードの最適化
Vulkan バックエンドの GPUQueue の writeBuffer() メソッドを呼び出すときに、高速パスを利用できるようになりました。データは宛先バッファに直接書き込まれるため、余分なコピーと同期が不要になります。この最適化により、GPU へのデータのアップロードに必要なメモリ トラフィックが削減されます。
高速パスの最適化では、バッファのメモリがホストに表示され、保留中の GPU オペレーションがない必要があります。問題 42242084 をご覧ください。
シェーダーのコンパイル時間の改善
Chrome チームは、WebGPU シェーダー言語のコンパイラである Tint の効率を向上させています。現在、色合いは、マシンコードを生成する前にシェーダー コードの抽象構文ツリー(AST)を複数回変更します。このプロセスは、一部のプラットフォームではリソースを大量に消費していました。これを最適化するため、新しい中間表現(IR)とそれを使用するバックエンドの設計変更が導入されています。この変更は、シェーダーのコンパイルを高速化することを目的としています。
これらの改善は Android ではすでに利用可能でしたが、Vulkan バックエンドで WebGPU をサポートする ChromeOS デバイスにも順次拡大していく予定です。問題 42250751 をご覧ください。
送信するコマンド バッファは一意である必要があります
submit()
メソッドで GPUQueue に送信される各 GPUCommandBuffer は、一意である必要があります。そうでない場合、検証エラーが生成されます。これは仕様上のバグでした。問題 42241492 をご覧ください。
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.
夜明けの更新情報
C++ ラッパーの webgpu_cpp.h はヘッダーのみになりました。これにより使用が簡素化され、代替 C++ ラッパーとの統合が容易になります。問題 40195122 をご覧ください。
webgpu.h C API は、スワップチェーン オブジェクトの概念を公開しなくなりました。この変更は、JavaScript API と密接に連携するためのものです。内部構成は、新しい wgpu::Surface
オブジェクトの Configure()
メソッドを介して行われるようになりました。これは、今後変更される可能性があります。WebGPU を使用してアプリを作成するで例を確認する。問題 42241264 をご覧ください。
commit の完全なリストを確認する。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げたすべての内容のリストです。
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
Chrome 118
copyExternalImageToTexture()
での HTMLImageElement と ImageData のサポート- 読み取り / 書き込みと読み取り専用のストレージ テクスチャの試験運用版のサポート
- 夜明けの更新情報
Chrome 117
- 頂点バッファの設定解除
- バインド グループの設定を解除
- デバイスを紛失した場合に非同期パイプライン作成によるエラーをミュート
- SPIR-V シェーダー モジュール作成の更新
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトを使用したキャッシュ パイプラインのキャッシュ
- 夜明けの更新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter
requestDevice()
から返却された紛失のデバイス importExternalTexture()
が呼び出された場合に動画のスムーズな再生を維持する- 仕様の遵守
- デベロッパー エクスペリエンスの向上
- 夜明けの更新情報
Chrome 115
- サポートされている WGSL 言語拡張機能
- Direct3D 11 の試験運用版のサポート
- AC 電源でデフォルトでディスクリート GPU を使用
- デベロッパー エクスペリエンスの向上
- 夜明けの更新情報