サポートされている 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()
メソッドから返されるエラー メッセージを改善し、デベロッパーがデバッグする際に役立つようにしました。以下の例と issue 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 を有効にすると、コンパイルに失敗すると 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 オプションを使用すると、DEPS ファイルを読み取る Python スクリプトを使用して、Dawn の依存関係を取得できるようになりました。Dawn に依存するすべてのプロジェクトで depot_tools
をインストールする必要はありません。変更点 131750 をご覧ください。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げられたすべての内容のリスト。
Chrome 130
Chrome 129
Chrome 128
- サブグループのテスト
- 線と点の深度バイアスの設定を非推奨とする
- preventDefault の場合、キャプチャされていないエラーの DevTools 警告を非表示にする
- WGSL はまずサンプリングを補間し、次に次のいずれかを行います。
- 夜明けの最新情報
Chrome 127
Chrome 126
- maxTextureArrayLayers の上限を引き上げる
- Vulkan バックエンドのバッファ アップロードの最適化
- シェーダーのコンパイル時間の改善
- 送信するコマンド バッファは一意である必要があります
- 夜明けの最新情報
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
- フィルタ可能な 32 ビット浮動小数点テクスチャ
- unorm10-10-10-2 頂点形式
- rgb10a2uint テクスチャ形式
- 夜明けの最新情報
Chrome 118
copyExternalImageToTexture()
での HTMLImageElement と ImageData のサポート- 読み取り / 書き込みストレージ テクスチャと読み取り専用ストレージ テクスチャの試験運用版サポート
- Dawn の最新情報
Chrome 117
- 頂点バッファの設定解除
- バインド グループを設定解除する
- デバイスが紛失した場合の非同期パイプラインの作成エラーを抑制
- SPIR-V シェーダー モジュールの作成の更新
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトを使用したパイプラインのキャッシュ
- Dawn の最新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter
requestDevice()
によって返された紛失したデバイス importExternalTexture()
が呼び出された場合に動画の再生をスムーズに維持する- 仕様の適合性
- デベロッパー エクスペリエンスの向上
- 夜明けの最新情報