サポートされている 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 がダンプされます。問題 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 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
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 の最新情報