サポートされている 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 コンソールに警告が表示されます。issue 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);
一時的な添付ファイル
レンダリング パス オペレーションをタイルメモリに保持できるアタッチメントを作成すると、VRAM トラフィックを回避し、wgpu::TextureUsage::TransientAttachment
の使用状況を設定してテクスチャの 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 オプションを使用すると、DEPS ファイルを読み取る Python スクリプトを使用して、Dawn の依存関係を取得できるようになりました。Dawn に依存するすべてのプロジェクトで depot_tools
をインストールする必要はありません。変更 131750 をご覧ください。
WebGPU の新機能
「WebGPU の新機能」シリーズに記載されている全内容のリスト。
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 をサポート
- メモリヒープ情報
- 夜明けの最新情報
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 の最新情報