サポートされている WGSL 言語拡張機能
GPU
オブジェクトの wgslLanguageFeatures
メンバーは、サポートされている WGSL の言語拡張機能の名前をリストします。サポートされている WGSL 言語拡張機能は自動的に有効になるため、明示的にリクエストする必要はありません。このリストは現在空ですが、今後多くのリストが追加される予定です(do-while loops
など)。issue 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 を実行することで、ローカルでテストできるようになりました。Issue dawn:1705 をご覧ください。
デフォルトで独立した GPU を AC 電源で使用
デュアル GPU macOS デバイスで、powerPreference
オプションを指定せずに requestAdapter()
を呼び出した場合、ユーザーのデバイスが AC 電源に接続されているときにディスクリート GPU が返されます。それ以外の場合は、統合 GPU が返されます。変更点 4499307 をご覧ください。
デベロッパー エクスペリエンスの向上
DevTools の新しい警告
depth
キーが GPUExtend3DDict
で使用されている場合、正しいキーは depthOrArrayLayers
であるため、DevTools コンソールに警告が表示されます。詳しくは、問題 chromium:1440900 をご覧ください。
また、GPUBlendComponent
に明示的なメンバーとデフォルトのメンバーが混在している場合も警告が生成されます。issue dawn:1785 をご覧ください。
サイズがゼロのディスパッチと描画は有効ですが、デベロッパーが可能な限りこれらを避けるよう警告が表示されます。issue dawn:1786 をご覧ください。
エラー メッセージの改善
finish()
がすでに呼び出されている場合に GPUCommandEncoder
を使用する際のエラー メッセージが改善されました。issue dawn:1736 をご覧ください。
破棄されたオブジェクトを含むコマンド バッファを送信すると、submit()
で使用されていたコマンド バッファのラベルがエラー メッセージに表示されるようになりました。issue dawn:1747 をご覧ください。
深度ステンシル状態の無効な部分が、depthStencil
の検証時のエラー メッセージで指定されるようになりました。issue dawn:1735 をご覧ください。
minBindingSize
検証エラー メッセージで、検証で不合格となったバインディングのグループと番号、バッファが報告されるようになりました。Issue 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 でデバッグを有効にすると、デバッグ エクスペリエンスが向上します。issue dawn:1784 をご覧ください。
コンパイルが失敗した場合に HLSL をログに記録
dump_shaders
デバッグ切り替えを使用すると、入力 WGSL シェーダーと変換されたバックエンド シェーダーをログに記録できます。これ以降、デバッグを有効にすると、コンパイルに失敗した場合に HLSL がダンプされます。issue dawn:1681 をご覧ください。
夜明けの更新情報
頂点バッファの設定を解除
wgpu::RenderPassEncoder
または wgpu::RenderBundleEncoder
で SetVertexBuffer()
に wgpu::Buffer
ではなく nullptr
を渡すと、特定のスロットで以前に設定した頂点バッファの設定を解除できます。issue 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 でのみサポートされています。Issue 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 依存関係を取得できます。これに依存するすべてのプロジェクトで depot_tools
をインストールする必要はありません。変更点 131750 をご覧ください。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げたすべての内容のリストです。
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 を使用
- デベロッパー エクスペリエンスの向上
- 夜明けの更新情報