PSA: Bugfix in Dawn/Chromium to the compatibility of defaulted layouts

Hey all,

This is a PSA for a niche breaking change in the Chromium/Dawn
implementation of WebGPU for a bugfix to match the WebGPU's spec.

The WebGPU spec states that the BindGroupLayouts created implicitly for a
pipeline are only compatible with BindGroupLayouts with the same shape for
the same pipeline. You can't do bg = device.createBindGroup({layout:
pipeline.getBindGroupLayout(0)}) and use the bindgroup with another
pipeline.

Due to internal caching of pipelines, Dawn had a bug where if pipeline1 and
pipeline2 happened to be exactly the same, then implicit layouts for one
would be compatible with the other pipeline (because they are the same one
internally).

We fixed the bug so the example above would cause a validation error and
expect reliance on this functionality to be very niche (if it exists at
all), but if you rely on implicit layouts, please check your WebGPU
application on the latest Chromium Canary or Dawn codebase to see if fixups
are needed!

Cheers,

Corentin

Received on Thursday, 29 February 2024 17:03:33 UTC