Skip to content

Support for WebGPU Compatibility Mode #30725

Open
@greggman

Description

@greggman

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions