Description
Description
WebGPU has an upcoming compatibility mode that allows it to run on older devices. Maybe three.js has an interest in supporting it?
It's available as of 2025-03-11 in Chrome Canary with the chrome://flags/#enable-unsafe-webgpu
feature turned on.
Solution
There are many limits and restrictions for compatibility mode. You can read about them here.
The most common one, and semi easily fixed, is that code that generates mipmaps usually needs to be updated to work around some of the compatibility mode restrictions. There's an example of how to deal with generating mipmaps in compatibility mode in this article
Making that change in three.js alone will probably make the majority of three.js WebGPU examples run in compatibility mode.
I looked into trying to write a PR for three.js but it requires knowing how the texture will be used (2d, 2d-array, cube) and it wasn't clear if that info is available in the WebGPU backend at the moment. In any case, you can look at the solution linked and decide if you want to adapt three.js using a similar solution.
Alternatives
??? Fall back to WebGL2 like three.js does already? Compatibility mode, when it actually ships in a few months, should run on the majority of devices that currently run WebGL2. > 90% of them? Plus, you get compute shaders in WebGPU.
Additional context
The feature has been being worked on for 2 years and is close to shipping for some definition of close. It would be nice if three.js could support it.