サポートされている 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 の警告
depth
キーが GPUExtend3DDict
で使用されている場合、正しいキーは 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 を有効にすると、コンパイルが失敗すると HLSL がダンプされるようになります。問題 dawn:1681 をご覧ください。
夜明けの最新情報
頂点バッファの設定解除
wgpu::RenderPassEncoder
または wgpu::RenderBundleEncoder
で wgpu::Buffer
ではなく nullptr
を SetVertexBuffer()
に渡すと、特定のスロットで以前に設定された頂点バッファの設定を解除できます。問題 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 128
- サブグループのテスト
- ラインとポイントの深度バイアス設定のサポート終了
- 未キャプチャ エラーの DevTools の警告を PreventDefault で非表示にする
- WGSL はまずサンプリングを補間
- 夜明けの最新情報
Chrome 127
Chrome 126
- maxTextureArrayLayers の上限を引き上げる
- Vulkan バックエンドでのバッファ アップロードの最適化
- シェーダーのコンパイル時間の改善
- 送信するコマンド バッファは一意である必要があります
- 夜明けの最新情報
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
- フィルタ可能な 32 ビット浮動小数点のテクスチャ
- unorm10-10-10-2 頂点形式
- rgb10a2uint テクスチャ形式
- 夜明けの最新情報
Chrome 118
copyExternalImageToTexture()
での HTMLImageElement と ImageData のサポート- 読み取り / 書き込みと読み取り専用のストレージ テクスチャの試験運用版サポート
- 夜明けの最新情報
Chrome 117
- 頂点バッファの設定解除
- バインド グループの設定解除
- デバイスが失われた場合の非同期パイプライン作成のエラーをミュート
- SPIR-V シェーダー モジュールの作成に関するアップデート
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトを使用したキャッシュ パイプライン
- 夜明けの最新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter から返されたデバイスの紛失
requestDevice()
importExternalTexture()
が呼び出された場合に動画の再生をスムーズにする- 仕様の適合性
- デベロッパー エクスペリエンスの向上
- 夜明けの最新情報
Chrome 115
- サポートされている WGSL 言語の拡張機能
- Direct3D 11 の試験運用版サポート
- AC 電源でデフォルトでディスクリート GPU を取得
- デベロッパー エクスペリエンスの向上
- 夜明けの最新情報