WebGPU の新機能(Chrome 117)

François Beaufort
François Beaufort

頂点バッファの設定解除

GPURenderPassEncoder または GPURenderBundleEncodersetVertexBuffer()GPUBuffer ではなく null を渡すと、特定のスロットで以前に設定された頂点バッファを設定解除できます。問題 dawn:1675 をご覧ください。

// Set vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, myVertexBuffer);

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);

バインド グループの設定を解除する

GPURenderPassEncoder または GPURenderBundleEncoderGPUBindGroup ではなく nullsetBindGroup() に渡すと、特定のスロットで以前に設定されたバインド グループの設定を解除できます。問題 dawn:1675 をご覧ください。

// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);

// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);

デバイスが失われた場合の非同期パイプライン作成のエラーをミュート

GPUDevicecreateComputePipelineAsync() メソッドと createRenderPipelineAsync() メソッドは、パイプラインの作成が完了したときに解決される Promise を返します。今後、GPUDevicelost の場合、非同期パイプラインの作成エラーは抑制され、紛失したデバイスが可能な限り機能しているように見えるようになります。dawn issue:1874 をご覧ください。

SPIR-V シェーダー モジュールの作成に関する更新

createShaderModule()SPIR-V シェーダー モジュールを作成すると、「Unsafe WebGPU Support」フラグを指定して Chrome を実行しない限り、TypeError をスローするようになりました。SPIR-V は WebGPU 仕様に含まれていません。この変更の前に SPIR-V を使用すると、代わりに GPUInternalError が生成されていました。chromium:4711911 の変更をご覧ください。

デベロッパー エクスペリエンスの向上

読み取り / 書き込みストレージ バッファと書き込み専用ストレージ テクスチャ バインディングについて、頂点シェーダーのバインディング グループ レイアウト バインディングの検証エラー メッセージを改善しました。問題 dawn:1883 をご覧ください。

自動生成されたレイアウトを使用したキャッシュ パイプライン

createRenderPipeline({ layout: "auto" }) で作成されたパイプラインで、Chrome のキャッシュ メカニズムが利用されるようになりました。つまり、これらのパイプラインはより効率的に作成され、メモリの使用量も削減されます。issue dawn:1933 をご覧ください。

Dawn の更新

wgpu::RequestAdapterOptionsBackendTypewgpu::RequestAdapterOptions の一部になりました。これにより、アプリがアダプターを取得するときに特定のバックエンドをリクエストしやすくなります。次の例と 問題 dawn:1875 をご覧ください。

wgpu::RequestAdapterOptions options = {
    .backendType = wgpu::BackendType::D3D12};

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

Node.js 用にいくつかの追加メソッドが実装されました。変更 dawn:142465 をご覧ください。

webgpu.h C API で、ブール値の型を stdbool から WGPUBooluint32_t)に変更しました。この変更は、API の C と C++ で同等の ABI を確保するために行われました。

以下に、主なハイライトをいくつかご紹介します。コミットの一覧(すべて網羅)をご覧ください。

WebGPU の新機能

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

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