WebGPU の新機能(Chrome 114)

François Beaufort
François Beaufort

JavaScript を最適化する

Chromium のコントリビューターは、V8 JavaScript エンジンで生成されたコードから Blink レンダリング エンジンの C++ ハンドラへの呼び出しのオーバーヘッドを削減することで、GPUComputePassEncoderGPURenderPassEncoder、および GPUCommandEncoder メソッドの WebGPU パフォーマンスを向上させました。問題 chromium:1417558 をご覧ください。

次のマイクロベンチマークは、JavaScript からの呼び出しの CPU 時間が 1 万回の描画あたり約 0.5 ミリ秒から 1 万回の描画あたり約 0.3 ミリ秒に短縮されたことを示しています。これは 40% の改善です。

高速呼び出しの改善を示す Chrome ブラウザのベンチマーク グラフのスクリーンショット。
高速呼び出しの改善を示す Chrome ベンチマーク グラフ(ソース)。

構成されていないキャンバスで getCurrentTexture() を呼び出すと InvalidStateError がスローされる

構成されていないキャンバスで GPUCanvasContext getCurrentTexture() メソッドを呼び出すと、WebGPU 仕様に従って OperationError ではなく InvalidStateError がスローされるようになりました。問題 chromium:1424461 をご覧ください。

const context = document.querySelector("canvas").getContext("webgpu");
context.getCurrentTexture(); // Throws InvalidStateError

WGSL の更新

AbstractInt のゼロ埋めベクトルを vec2()vec3()vec4() として書き込めるようになりました。問題 tint:1892 をご覧ください。次に例を示します。

  • vec2()vec2(0,0)
  • vec3()vec3(0,0,0)
  • vec4()vec4(0,0,0,0)

Dawn の更新

エラー メッセージの改善

無効なオブジェクトの記述子ラベルが削除されなくなったため、エラー メッセージで確認できます。問題 dawn:1771 をご覧ください。

Node.js 用の不足している API を追加する

GPUAdapter::requestAdapterInfo() メソッドと GPUBuffer::getMapState() メソッドが Node.js 用に実装されました。問題 dawn:1761 をご覧ください。

WebGPU の新機能

WebGPU の新機能シリーズで取り上げられたすべての機能の一覧です。

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