WebGPU の新機能(Chrome 141)

François Beaufort
François Beaufort

公開日: 2025 年 9 月 24 日

Tint IR が完了しました

Tint の内部のパフォーマンスを向上させるための長期プロジェクト(2 年半以上)である WGSL コンパイラが完了しました。中間表現(IR)が、現在の抽象構文木(AST)とバックエンド コード ジェネレータの間のバックエンドに挿入されました。IR の導入により、Chrome チームはすべての AST 変換を削除し、IR 変換として再作成できるようになりました。アーキテクチャの違いにより、IR 変換は大幅に高速化されています。一部のプラットフォームでは、Tint の内部処理がこれらの変更により最大 7 倍高速化されました。

この新しい IR により、高度で大規模なシェーダーの分析と変換の可能性が大きく広がり、パフォーマンスが大幅に向上するだけでなく、Chrome が今後 WebGPU のエキサイティングな新機能をスムーズに提供できるようになります。

このマイルストーン以降、すべてのバックエンド コード ジェネレータは IR 表現から動作し、すべての AST 変換が削除され、変換を実行するための AST サポートコードがすべて削除されました。

IR 改善作業の一環として、SPIR-V フロントエンド(アプリケーションが SPIR-V を WGSL に変換するために使用)が、AST 表現の生成から IR への直接生成に変換されました。この機能強化により、待望の float 16 サポートなどの機能も SPIR-V フロントエンドに導入されます。

WGSL コンパイラでの整数範囲分析

Chrome チームは、WebGPU シェーダー言語コンパイラである Tint の新しい整数範囲分析を段階的に導入しています。整数範囲分析では、プログラムを実際に実行することなく、プログラムの実行中に整数変数が取りうる最小値と最大値を推定します。

この機能は、コストのかかる境界チェックの必要性を減らすことで効率を向上させることを目的としており、まもなくすべてのプラットフォームでデフォルトで有効になります。問題 348701956 をご覧ください。

Vulkan バックエンドの SPIR-V 1.4 アップデート

SPIR-V 1.4 のサポートは、Android デバイスと ChromeOS デバイスで利用可能な場合にロールアウトされます。このアップデートにより、WGSL コンパイラである Tint は、Vulkan シェーダーをコンパイルする特定のシナリオで、新しい SPIR-V 機能、緩和、新しい命令を利用して、より効率的なコード生成を行うことができます。問題 427717267 をご覧ください。

Dawn のアップデート

コア WebGPU C API を定義する標準化された webgpu.h ヘッダーが、ついに安定版と見なされるようになりました。この安定性は、アップストリームで定義されたコア API にのみ適用され、実装拡張機能(Dawn や Emdawnwebgpu など)は含まれません。そのため、リンクしている実装で提供される webgpu.h を使用することをおすすめします。ヘッダーは安定していますが、バグの修正やエコシステム全体の互換性への対応を継続しているため、実装間で意図しない違いが生じる可能性があります。該当する場合は、バグを報告してください。

外部の貢献者である William Candillon 氏のおかげで、GitHub Actions のアーティファクトとしてビルド済みの Dawn バイナリを利用できるようになりました。これらには、Android 用の静的 .lib ファイル、Apple 用の .XCFramework バンドル、必要なすべてのヘッダー ファイルが含まれます。Dawn PR #39 とアーティファクトの例をご覧ください。

ここでは、主なハイライトの一部のみを紹介します。コミットの完全なリストをご覧ください。

WebGPU の新機能

WebGPU の新機能シリーズで取り上げたすべての内容のリスト。

Chrome 155-156

Chrome 153-154

Chrome 151-152

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113