Skip to content

Implementation Status

David Neto edited this page Nov 18, 2021 · 51 revisions
Clone this wiki locally

This page shows the current implementation status of the WebGPU API spec in browsers. It also lists some resources (samples, demos) for enthusiastic web developers. Also note the WebGPU Shading Language spec that's hosted separately.

The public-gpu@w3.org mailing list is a good place to ask questions or provide feedback on the API.

You can also join the chat on Matrix in the "Web Graphics" Matrix Community: #webgraphics:matrix.org. The general WebGPU channel is #WebGPU:matrix.org.

Implementation Status

Chromium (Chrome, Edge, etc.)

Work is in progress in Chrome Canary and Edge Canary

Android Chrome OS Linux Mac Windows
👷 Behind a flag 👷 Behind a flag 👷 Behind a flag 👷 Behind a flag
  • For details, look at the Dawn bug tracker, bugs under Chromium root issue 852089, and in the Blink>WebGPU component. Check these before filing new bugs.
  • Note Chromium currently supports SPIR-V, but support will be removed in favor of WGSL, which is under development.
  • As GPU sandboxing isn't fully implemented yet for the WebGPU API, it is possible to read GPU data for other processes and tabs. Avoid leaving it enabled when browsing the untrusted web.
  • The chrome://flags/#enable-unsafe-webgpu flag must be enabled on supported platforms. Linux experimental support requires running browser with --enable-features=Vulkan switch.

Firefox and Servo

These browser implementations are based on wgpu project in Rust, which in turn uses gfx-rs for rendering on top of Vulkan, D3D12, Metal, and potentially on D3D11 and OpenGL ES 3.0.

Feature wgpu Firefox Servo
Initialization :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
WGSL shaders :heavy_check_mark: :heavy_check_mark:
Error model :heavy_check_mark: :heavy_check_mark:
Resources:
- Buffers :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- mapping :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- Textures :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- views :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- block formats :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- Samplers :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Binding:
- Pipeline layouts :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- Bind groups :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- Implicit layouts :heavy_check_mark: :heavy_check_mark:
Rendering:
- Passes :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- Pipelines :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- Bundles :heavy_check_mark: :heavy_check_mark:
Computing:
- Passes :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- Pipelines :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Presentation:
- Fallback (slow) :white_circle: :heavy_check_mark: :heavy_check_mark:
- Windows
- macOS
- Linux
- Android
Validation:
- Host API :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
- Shader API :heavy_check_mark: :heavy_check_mark:
- Out of bounds
- Uniformity :heavy_check_mark: :heavy_check_mark:

Firefox

Work is in progress in Nightly, enabled by the "dom.webgpu.enabled" pref. It requires WebRender, which may be enabled by "gfx.webrender.all" pref if it's not already enabled by default. It's been shown to work on Windows 7/10, macOS, Linux (with Vulkan support), and even Android (also with Vulkan).

All the issues and feature requests are tracked by the Graphics: WebGPU component in BugZilla.

Servo

Work in progress, enabled by "dom.webgpu.enabled" pref.

Safari (In Progress)

Work is in progress in Safari Technology Preview.

To enable WebGPU, first make sure the Develop menu is visible using SafariPreferencesAdvancedShow Develop menu in menu bar. Then, in the Develop menu, make sure Experimental FeaturesWebGPU is checked. Avoid leaving it enabled when browsing the untrusted web.

Bugs can be viewed and filed here.

Materials

Samples

Demos

Articles

Frameworks