公開日: 2025 年 1 月 29 日
unorm8x4-bgra と 1 成分の頂点形式の追加
"unorm8x4-bgra" 頂点形式と、次の 1 成分の頂点形式が追加されました。"uint8"、"sint8"、"unorm8"、"snorm8"、"uint16"、"sint16"、"unorm16"、"snorm16"、"float16"。
"unorm8x4-bgra" 頂点形式を使用すると、同じシェーダーを維持しながら、BGRA エンコードされた頂点カラーを簡単に読み込むことができます。また、1 成分の頂点形式を使用すると、8 ビットと 16 ビットのデータ型で以前の 2 倍以上のデータが必要だった場合に、必要なデータのみをリクエストできます。chromestatus のエントリと問題 376924407をご覧ください。
未定義の値で不明な上限をリクエストできるようにする
WebGPU API の進化に伴い、GPU デバイスをリクエストする際に、undefined 値で不明な上限をリクエストできるようになりました。これは、たとえば次のアプリケーション コードで役立ちます。someLimit が存在しなくなった場合、adapter.limits.someLimit は undefined になります。仕様 PR 4781 をご覧ください。
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
requiredLimits: { someLimit: adapter.limits.someLimit }, // someLimit can be undefined
});
WGSL のアライメント ルールの変更
構造体メンバーに小さすぎるアライメント値を指定することはできなくなりました。これは、すべての構造体で @align(n) が RequiredAlignOf を除算する必要があるためです。この破壊的変更により、WGSL 言語の使用が簡素化され、Firefox および Safari との互換性が向上します。仕様 PR で、Tint、Naga、WebKit コンパイラの違いを示すサンプルコードを確認できます。
破棄による WGSL のパフォーマンス向上
複雑なスクリーンスペース反射(SSR)効果のレンダリング時にパフォーマンスが大幅に低下したため、破棄ステートメントの実装では、使用可能な場合にプラットフォーム提供のセマンティクスを使用してヘルパー呼び出しにダウングレードします。これにより、破棄を使用するシェーダーのパフォーマンスが向上します。問題 372714384 をご覧ください。
外部テクスチャに VideoFrame displaySize を使用する
WebGPU 仕様に従って VideoFrame をインポートする場合は、displayWidth ディメンションと displayHeight ディメンションを GPUExternalTexture の見かけのサイズとして使用する必要があります。ただし、表示サイズが誤って使用されたため、GPUExternalTexture で textureLoad() を使用しようとすると問題が発生していました。この問題は解決済みです。問題 377574981 をご覧ください。
copyExternalImageToTexture を使用してデフォルト以外の向きの画像を処理する
copyExternalImageToTexture() GPUQueue メソッドは、画像またはキャンバスの内容をテクスチャにコピーするために使用されます。デフォルト以外の向きの画像を適切に処理できるようになりました。以前は、ソースが ImageBitmap で imageOrientation "from-image" またはデフォルト以外の向きの画像の場合、そうではありませんでした。問題 384858956 をご覧ください。
デベロッパー エクスペリエンスの向上
adapter.limits に高い値が表示されても、GPU デバイスをリクエストする際に上限を明示的にリクエストする必要があることに気づかないことがあります。そうしないと、後で上限に達する可能性があります。
この問題を解決するため、requestDevice() の呼び出し時に requiredLimits で上限が指定されていない場合に、上限を明示的にリクエストするように指示するヒントがエラー メッセージに追加されました。問題 42240683 をご覧ください。
次の例は、デフォルトの最大バッファサイズ デバイスの上限を超えるサイズで GPU バッファを作成したときに、DevTools コンソールに記録される改善されたエラー メッセージを示しています。
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create a GPU buffer with a size exceeding the default max buffer size device limit.
const size = device.limits.maxBufferSize + 1;
const buffer = device.createBuffer({ size, usage: GPUBufferUsage.MAP_READ });
device.queue.submit([]);
⚠️ Buffer size (268435457) exceeds the max buffer size limit (268435456). This adapter supports a higher maxBufferSize of 4294967296, which can be specified in requiredLimits when calling requestDevice(). Limits differ by hardware, so always check the adapter limits prior to requesting a higher limit. - While calling [Device].CreateBuffer([BufferDescriptor]).
featureLevel で互換モードを有効にする
標準化された featureLevel オプションを "compatibility" に設定することで、試験運用版の互換モードで GPU アダプターをリクエストできるようになりました。使用できる値は "core"(デフォルト)と "compatibility" のみです。次の例と仕様 PR 4897をご覧ください。
// Request a GPU adapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (adapter?.featureLevel === "compatibility") {
// Any devices created from this adapter will support only compatibility mode.
}
featureLevel オプションは標準化されていない compatibilityMode オプションに代わるもので、標準化されていない featureLevel 属性は isCompatibilityMode 属性に代わるものです。
試験運用版であるため、当面は chrome://flags/#enable-unsafe-webgpu で [Unsafe WebGPU Support] フラグを設定して Chrome を実行する必要があります。webgpureport.org でお試しください。
試験運用版のサブグループ機能のクリーンアップ
非推奨の試験運用版のサブグループ機能 "chromium-experimental-subgroups" と "chromium-experimental-subgroup-uniform-control-flow" が削除されました。問題 377868468 をご覧ください。
試験運用版の機能 "subgroups" のみが必要です。サブグループを試す場合は、。試験運用版の機能 "subgroups-f16" は非推奨となり、まもなく削除されます。アプリケーションが "shader-f16" 機能と "subgroups" 機能の両方をリクエストする場合、サブグループで f16 値を使用できます。問題 380244620 をご覧ください。
maxInterStageShaderComponents 上限の非推奨
maxInterStageShaderComponents 上限は、次の要因が組み合わさって非推奨となりました。
maxInterStageShaderVariablesとの冗長性: この上限は、シェーダー ステージ間で渡されるデータ量を制御するという同様の目的を果たしています。- わずかな差異: 2 つの上限の計算方法にはわずかな違いがありますが、これらの違いはわずかであり、
maxInterStageShaderVariables上限内で効果的に管理できます。 - 簡素化:
maxInterStageShaderComponentsを削除すると、シェーダー インターフェースが合理化され、デベロッパーの複雑さが軽減されます。わずかな違いのある 2 つの上限を管理するのではなく、より適切な名前で包括的なmaxInterStageShaderVariablesに集中できます。
Chrome 135 で完全に削除することを目指しています。非推奨にする意向と問題 364338810をご覧ください。
Dawn の最新情報
wgpu::Device::GetAdapterInfo(adapterInfo) を使用すると、wgpu::Device からアダプター情報を直接取得できます。問題 376600838 をご覧ください。
WGPUProgrammableStageDescriptor 構造体の名前が WGPUComputeState に変更され、コンピューティング状態が頂点状態とフラグメント状態と一致するようになりました。問題 379059434 をご覧ください。
wgpu::VertexStepMode::VertexBufferNotUsed 列挙値が削除されました。使用されていない頂点バッファ レイアウトは、{.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0} で表すことができるようになりました。問題 383147017 をご覧ください。
これは主なハイライトの一部にすぎません。コミットの完全なリストをご覧ください。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げられたすべての機能の一覧です。
Chrome 149 ~ 150
Chrome 147 ~ 148
Chrome 146
Chrome 145
Chrome 144
- WGSL subgroup_id 拡張機能
- WGSL uniform_buffer_standard_layout 拡張機能
- Linux の WebGPU
- writeBuffer と writeTexture の高速化
- Dawn の最新情報
Chrome 143
Chrome 142
Chrome 141
Chrome 140
- デバイス リクエストでアダプターが消費される
- テクスチャ ビューが使用されている場合にテクスチャを使用するショートカット
- WGSL textureSampleLevel が 1D テクスチャをサポート
- bgra8unorm 読み取り専用ストレージ テクスチャの使用を非推奨にする
- GPUAdapter isFallbackAdapter 属性を削除
- Dawn の最新情報
Chrome 139
Chrome 138
- バインディング リソースとしてバッファを使用するショートカット
- 作成時にマッピングされたバッファのサイズ要件の変更
- 最近の GPU のアーキテクチャ レポート
- GPUAdapter isFallbackAdapter 属性を非推奨にする
- Dawn の最新情報
Chrome 137
- externalTexture バインディングにテクスチャ ビューを使用する
- オフセットとサイズを指定せずにバッファをコピーする
- アトミックへのポインタを使用する WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference 属性
- GPURequestAdapterOptions compatibilityMode 属性を削除
- Dawn の最新情報
Chrome 136
- GPUAdapterInfo isFallbackAdapter 属性
- D3D12 でのシェーダー コンパイル時間の短縮
- キャンバス画像を保存してコピーする
- 互換モードの制限を解除する
- Dawn の最新情報
Chrome 135
- null バインド グループ レイアウトでパイプライン レイアウトを作成できるようにする
- ビューポートがレンダー ターゲットの境界を超えることを許可する
- Android で試験運用版の互換モードに簡単にアクセスできるようにする
- maxInterStageShaderComponents 上限を削除する
- Dawn の最新情報
Chrome 134
Chrome 133
- unorm8x4-bgra と 1 成分の頂点形式の追加
- 未定義の値で不明な上限をリクエストできるようにする
- WGSL のアライメント ルールの変更
- 破棄による WGSL のパフォーマンス向上
- 外部テクスチャに VideoFrame displaySize を使用する
- copyExternalImageToTexture を使用してデフォルト以外の向きの画像を処理する
- デベロッパー エクスペリエンスの向上
- featureLevel で互換モードを有効にする
- 試験運用版のサブグループ機能のクリーンアップ
- maxInterStageShaderComponents 上限の非推奨
- Dawn の最新情報
Chrome 132
- テクスチャ ビューの使用
- 32 ビット浮動小数点テクスチャのブレンド
- GPUDevice adapterInfo 属性
- 無効な形式でキャンバス コンテキストを構成すると JavaScript エラーが発生する
- テクスチャのサンプラーの制限のフィルタリング
- サブグループの試験運用版の拡張
- デベロッパー エクスペリエンスの向上
- 16 ビット正規化テクスチャ形式の試験運用版のサポート
- Dawn の最新情報
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
- 読み取り専用ストレージ テクスチャと読み書きストレージ テクスチャ
- Service Worker と Shared Worker のサポート
- 新しいアダプター情報属性
- バグの修正
- Dawn の最新情報
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
- での HTMLImageElement と ImageData のサポート
copyExternalImageToTexture() - 読み書きストレージ テクスチャと読み取り専用ストレージ テクスチャの試験運用版のサポート
- 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 の最新情報