公開日: 2025 年 8 月 27 日
デバイスリクエストがアダプターを消費する
WebGPU 仕様によると、アダプターはデバイス リクエストが成功すると「使用済み」としてマークされます。そのため、同じアダプターを使用する後続の requestDevice()
呼び出しは、拒否された Promise を返すようになります。以前は、これらの呼び出しは作成時に紛失したデバイスを返していました。問題 415825174 をご覧ください。
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
await adapter.requestDevice(); // Fails because adapter has been consumed.
テクスチャ ビューが使用される場所でテクスチャを使用するための短縮形
GPUTexture を GPUBindingResource として直接使用して、バインディング用にシェーダーに公開できるようになりました。また、人間工学の改善のために、GPURenderPassColorAttachment view
、GPURenderPassColorAttachment resolveTarget
、GPURenderPassDepthStencilAttachment view
としても使用できます。これにより、GPUTextureView を使用してデフォルトのビューを取得するよりも簡単なアプローチが可能になります。 問題 425906323 をご覧ください。
const bindGroup = myDevice.createBindGroup({
layout: myPipeline.getBindGroupLayout(0),
entries: [
{ binding: 0, resource: mySampler },
{ binding: 1, resource: myTexture }, // Same as myTexture.createView()
{ binding: 2, resource: myExternalTexture },
{ binding: 3, resource: myBuffer },
],
});
WGSL textureSampleLevel が 1D テクスチャをサポート
2D テクスチャとの一貫性を保つため、textureSampleLevel()
を使用して 1D テクスチャをサンプリングできるようになりました。これにより、以前は textureSample()
を使用したフラグメント シェーダーからのみ可能だった 1D テクスチャの頂点シェーダーからのサンプリングが可能になります。 問題 382514673 をご覧ください。
bgra8unorm 読み取り専用ストレージ テクスチャの使用を非推奨化
読み取り専用ストレージ テクスチャで "bgra8unorm"
形式を使用することは非推奨になりました。WebGPU 仕様ではこれが明示的に禁止されており、Chrome で以前に許可されていたのはバグでした。この形式は書き込み専用アクセスを目的としており、移植できません。問題 427681156 をご覧ください。
GPUAdapter isFallbackAdapter 属性を削除
以前にお知らせしたとおり、GPUAdapter isFallbackAdapter
属性が削除されました。Chrome 136 で導入された GPUAdapterInfo isFallbackAdapter
属性に置き換えられます。削除の意向をご覧ください。
Dawn のアップデート
wgpuInstanceGetWGSLLanguageFeatures()
関数は、インスタンスでサポートされている WGSL 言語機能のリストを取得するために使用されます。以前は WGPUStatus
値を返していました。失敗することはないため、値を返さないように更新されました。問題 429178774 をご覧ください。
サーフェスに現在のテクスチャがない場合、wgpuSurfacePresent()
関数は WGPUStatus
エラーを返すようになりました。問題 425930323 をご覧ください。
新しい wgpu::InstanceFeatureName::MultipleDevicesPerAdapter
機能により、アダプタは「消費」されることなく複数のデバイスを作成できます。問題 415825174 をご覧ください。
dump_shaders_on_failure
デバイスの切り替えを使用すると、デバッグ目的で失敗した場合にのみシェーダーをダンプできます。これは D3 バックエンドにのみ適用されますが、将来的には他のバックエンドにも拡張される可能性があります。問題 429187478 をご覧ください。
レンダリング パスを送信する際のオーバーヘッドを削減するため、特にモバイル GPU のパフォーマンスを向上させるため、Vulkan バックエンドに複数の変更が加えられました。例: VkFramebuffer のキャッシュ保存。
ここでは、主なハイライトの一部のみを取り上げます。コミットの一覧をご覧ください。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げたすべての内容のリスト。
Chrome 140
- デバイス リクエストがアダプターを消費する
- テクスチャ ビューが使用される場合にテクスチャを使用するための短縮形
- WGSL の textureSampleLevel が 1D テクスチャをサポート
- bgra8unorm 読み取り専用ストレージ テクスチャの使用を非推奨に
- GPUAdapter の isFallbackAdapter 属性を削除
- Dawn のアップデート
Chrome 139
- BC および ASTC 圧縮形式の 3D テクスチャのサポート
- 新しい「core-features-and-limits」機能
- WebGPU 互換モードのオリジン トライアル
- Dawn のアップデート
Chrome 138
- バッファをバインディング リソースとして使用するための省略形
- 作成時にマッピングされたバッファのサイズ要件の変更
- 最近の GPU のアーキテクチャ レポート
- GPUAdapter の isFallbackAdapter 属性を非推奨に
- Dawn のアップデート
Chrome 137
- externalTexture バインディングにテクスチャ ビューを使用
- オフセットとサイズを指定せずにバッファをコピーする
- アトミックへのポインタを使用する WGSL workgroupUniformLoad
- GPUAdapterInfo の powerPreference 属性
- GPURequestAdapterOptions compatibilityMode 属性を削除
- Dawn のアップデート
Chrome 136
- GPUAdapterInfo の isFallbackAdapter 属性
- D3D12 でのシェーダー コンパイル時間の短縮
- キャンバスの画像を保存、コピーする
- Lift 互換モードの制限事項
- Dawn のアップデート
Chrome 135
- バインド グループ レイアウトが null のパイプライン レイアウトの作成を許可
- ビューポートがレンダー ターゲットの境界を越えて拡張されることを許可
- Android で試験運用版の互換モードに簡単にアクセス
- maxInterStageShaderComponents 制限を削除
- Dawn のアップデート
Chrome 134
Chrome 133
- 追加の unorm8x4-bgra および 1 コンポーネント頂点形式
- 未定義の値で不明な上限をリクエストできるようにする
- WGSL のアライメント ルールの変更
- discard による WGSL のパフォーマンス向上
- 外部テクスチャに VideoFrame の displaySize を使用
- copyExternalImageToTexture を使用してデフォルト以外の向きの画像を処理
- デベロッパー エクスペリエンスの向上
- featureLevel で互換モードを有効にする
- 試験運用サブグループ機能のクリーンアップ
- maxInterStageShaderComponents 制限を非推奨に
- Dawn のアップデート
Chrome 132
- Texture ビューの使用状況
- 32 ビット浮動小数点テクスチャのブレンド
- GPUDevice の adapterInfo 属性
- 無効な形式でキャンバス コンテキストを構成すると JavaScript エラーが発生する
- テクスチャのフィルタリング サンプラーの制限
- サブグループのテストの拡張
- デベロッパー エクスペリエンスの向上
- 16 ビットの正規化されたテクスチャ形式の試験的なサポート
- Dawn のアップデート
Chrome 131
- WGSL でのクリップ距離
- GPUCanvasContext getConfiguration()
- ポイントとラインのプリミティブに深度バイアスを設定してはならない
- サブグループの包括的なスキャン組み込み関数
- マルチドロー間接の試験運用サポート
- シェーダー モジュール コンパイル オプション strict math
- 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 のアップデート