サポートされている WGSL 言語拡張機能
wgslLanguageFeatures オブジェクトの GPU メンバーには、サポートされている 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 サポートの追加に取り組んでいます。Windows で Chrome を実行し、--enable-unsafe-webgpu --use-webgpu-adapter=d3d11 コマンドライン フラグを指定することで、ローカルで試すことができます。問題 dawn:1705 をご覧ください。
AC 電源でデフォルトでディスクリート GPU を取得する
デュアル GPU macOS デバイスで、requestAdapter() が呼び出されると、powerPreference オプションを指定せずに、ユーザーのデバイスが AC 電源に接続されている場合はディスクリート GPU が返されます。それ以外の場合は、統合 GPU が返されます。変更点 4499307 をご覧ください。
デベロッパー エクスペリエンスの向上
新しい DevTools の警告
depth キーを GPUExtend3DDict で使用すると、正しいキーが depthOrArrayLayers であるため、DevTools Console に警告が表示されます。問題 chromium:1440900 をご覧ください。
GPUBlendComponent に明示的なメンバーとデフォルトのメンバーが混在している場合にも、警告が表示されます。問題 dawn:1785 をご覧ください。
ゼロサイズのディスパッチと描画は有効ですが、可能な限り避けるようにデベロッパーに促す警告が表示されます。問題 dawn:1786 をご覧ください。
エラー メッセージの改善
GPUCommandEncoder を使用しているときに finish() がすでに呼び出されている場合、改善されたエラー メッセージが表示されるようになりました。問題 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 149 ~ 150
Chrome 147 ~ 148
Chrome 146
Chrome 145
Chrome 144
- WGSL subgroup_id 拡張機能
- WGSL uniform_buffer_standard_layout 拡張機能
- Linux の WebGPU
- writeBuffer と writeTexture の高速化
- Dawn の最新情報
Chrome 143
Chrome 142
Chrome 141
Chrome 140
- デバイス リクエストでアダプターが消費される
- テクスチャ ビューが使用されている場合にテクスチャを使用するショートカット
- WGSL textureSampleLevel が 1D テクスチャをサポート
- bgra8unorm 読み取り専用ストレージ テクスチャの使用を非推奨に
- GPUAdapter isFallbackAdapter 属性を削除
- Dawn の最新情報
Chrome 139
Chrome 138
- バインディング リソースとしてバッファを使用するショートカット
- 作成時にマッピングされたバッファのサイズ要件の変更
- 最近の GPU のアーキテクチャ レポート
- GPUAdapter isFallbackAdapter 属性を非推奨に
- Dawn の最新情報
Chrome 137
- externalTexture バインディングにテクスチャ ビューを使用する
- オフセットとサイズを指定せずにバッファをコピーする
- アトミックへのポインタを使用する WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference 属性
- GPURequestAdapterOptions compatibilityMode 属性を削除
- Dawn の最新情報
Chrome 136
- GPUAdapterInfo isFallbackAdapter 属性
- D3D12 でのシェーダー コンパイル時間の短縮
- キャンバス画像を保存してコピーする
- 互換モードの制限を解除する
- Dawn の最新情報
Chrome 135
- null バインド グループ レイアウトでパイプライン レイアウトを作成できるようにする
- ビューポートをレンダー ターゲットの境界を超えて拡張できるようにする
- Android で試験運用版の互換モードに簡単にアクセスできるようにする
- maxInterStageShaderComponents の上限を削除
- Dawn の最新情報
Chrome 134
Chrome 133
- 追加の unorm8x4-bgra および 1 コンポーネントの頂点形式
- 未定義の値で不明な上限をリクエストできるようにする
- WGSL のアライメント ルールの変更
- 破棄による WGSL のパフォーマンス向上
- 外部テクスチャに VideoFrame displaySize を使用する
- copyExternalImageToTexture を使用して、デフォルト以外の向きの画像を処理する
- デベロッパー エクスペリエンスの向上
- featureLevel で互換モードを有効にする
- 試験運用版のサブグループ機能のクリーンアップ
- maxInterStageShaderComponents の上限を非推奨に
- Dawn の最新情報
Chrome 132
- テクスチャ ビューの使用
- 32 ビット浮動小数点テクスチャのブレンド
- GPUDevice adapterInfo 属性
- 無効な形式でキャンバス コンテキストを構成すると JavaScript エラーが発生する
- テクスチャのサンプラー制限のフィルタリング
- 拡張サブグループの試験運用
- デベロッパー エクスペリエンスの向上
- 16 ビット正規化テクスチャ形式の試験運用版のサポート
- Dawn の最新情報
Chrome 131
- WGSL のクリップ距離
- GPUCanvasContext getConfiguration()
- 点と線のプリミティブに深度バイアスを設定してはならない
- サブグループの組み込みの包括的なスキャン関数
- マルチドロー間接の試験運用版のサポート
- シェーダー モジュールのコンパイル オプションの厳密な数学
- 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
- での HTMLImageElement と ImageData のサポート
copyExternalImageToTexture() - 読み書きと読み取り専用のストレージ テクスチャの試験運用版のサポート
- 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 の最新情報