サポートされている WGSL 言語拡張機能
GPU
オブジェクトの wgslLanguageFeatures
メンバーは、サポートされている WGSL 言語拡張機能の名前を一覧表示します。サポートされている WGSL 言語拡張機能は自動的に有効になるため、明示的にリクエストする必要はありません。このリストは現在空ですが、今後多数のアイテムが追加される予定です(例: do-while loops
)。問題 dawn:1777 を参照してください。
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Direct3D 11 の試験運用サポート
Chromium チームは、Direct3D 11 の WebGPU サポートの追加に取り組んでいます。--enable-unsafe-webgpu --use-webgpu-adapter=d3d11
コマンドライン フラグを使用して Windows で Chrome を実行することで、ローカルでテストできるようになりました。問題 dawn:1705 をご覧ください。
AC 電源でデフォルトでディスクリート GPU を取得
デュアル GPU の macOS デバイスで、powerPreference
オプションなしで requestAdapter()
が呼び出されると、ユーザーのデバイスが AC 電源に接続されている場合にディスクリート GPU が返されます。それ以外の場合は、統合 GPU が返されます。変更点 4499307 をご覧ください。
デベロッパー エクスペリエンスの向上
新しい DevTools の警告
GPUExtend3DDict
で depth
キーが使用されている場合、正しいキーは depthOrArrayLayers
であるため、DevTools コンソールに警告が表示されます。問題 chromium:1440900 をご覧ください。
GPUBlendComponent
に明示的なメンバーとデフォルトのメンバーが混在している場合も、警告が発生します。問題 dawn:1785 を参照してください。
サイズがゼロのディスパッチとドローは有効ですが、警告は、可能な限りそれらを避けるようデベロッパーに促します。問題 dawn:1786 をご覧ください。
エラー メッセージの改善
finish()
がすでに呼び出されている場合に GPUCommandEncoder
を使用すると、エラー メッセージが改善されました。問題 dawn:1736 をご覧ください。
破棄されたオブジェクトを含むコマンド バッファを送信すると、submit()
で使用されたコマンド バッファのラベルがエラー メッセージに表示されるようになりました。問題 dawn:1747 をご覧ください。
depthStencil
の検証時に、深度ステンシル状態の無効な部分がエラー メッセージで指定されるようになりました。問題 dawn:1735 をご覧ください。
minBindingSize
検証エラー メッセージで、検証に失敗したバインディングのグループと番号、バッファが報告されるようになりました。問題 dawn:1604 をご覧ください。
GPUBuffer
オブジェクトの mapAsync()
メソッドから返されるエラー メッセージが改善され、デベロッパーがデバッグしやすくなりました。以下の例と chromium:1431622 を発行してください。
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
macOS デバッグツールのラベル
use_user_defined_labels_in_backend
デバッグ切り替えを使用すると、オブジェクト ラベルをバックエンドに転送して、RenderDoc、PIX、Instruments などのプラットフォーム固有のデバッグツールで確認できます。今後、macOS でデバッグを有効にすると、デバッグ エクスペリエンスが向上します。問題 dawn:1784 を参照してください。

コンパイルが失敗した場合は HLSL をログに記録
dump_shaders
デバッグ切り替えを使用すると、入力 WGSL シェーダーと変換されたバックエンド シェーダーをロギングできます。今後は、デバッグ用に有効にすると、コンパイルが失敗した場合に HLSL がダンプされます。問題 dawn:1681 を参照してください。
Dawn のアップデート
頂点バッファの設定を解除する
wgpu::RenderPassEncoder
または wgpu::RenderBundleEncoder
の SetVertexBuffer()
に wgpu::Buffer
ではなく nullptr
を渡すと、特定のスロットで以前に設定された頂点バッファを未設定にできます。問題 dawn:1675 をご覧ください。
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
一時的な添付ファイル
wgpu::TextureUsage::TransientAttachment
の使用量を設定することで、レンダリング パス オペレーションをタイルメモリに保持し、VRAM トラフィックを回避し、テクスチャの VRAM 割り当てを回避できるアタッチメントを作成できます。この機能は Metal と Vulkan でのみサポートされています。問題 dawn: 1695 をご覧ください。
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
depot_tools
を使用せずにビルドする
新しい DAWN_FETCH_DEPENDENCIES
CMake オプションを使用すると、依存するすべてのプロジェクトで depot_tools
をインストールする必要がなくなり、DEPS ファイルを読み取る Python スクリプトを使用して Dawn 依存関係を取得できます。変更 131750 を参照してください。
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 のアップデート