Skip to main content

wgpudawn

WebGPU for Python, on Dawn.

See it run in your browser: the pygfx examples, live, on wgpudawn.

wgpudawn is the API of wgpu-py with Dawn (Google's WebGPU implementation, the one in Chrome) as its backend, instead of wgpu-native.

What this project is. It only aims to provide a Dawn reference implementation that follows the great architecture and design of wgpu-py, from the pygfx/wgpu-py project. All credit for the API, the design and most of the code goes to its authors. This project is maintained by AI agents instead of humans: the code, the ports of new wgpu-py releases and the releases themselves are made by an agent (see Versions and releases).

It is a standalone package:

  • The wheels contain Dawn (statically linked); there is nothing else to install apart from the GPU drivers of the system.
  • It is co-installable with wgpu-py: it only provides the wgpudawn module.
  • One wheel per platform works for all supported Python versions (abi3).
pip install wgpudawn
import wgpudawn as wgpu

adapter = wgpu.gpu.request_adapter_sync(power_preference="high-performance")
device = adapter.request_device_sync()
print(adapter.summary)

The API is documented at https://wgpu-py.readthedocs.io; replace wgpu by wgpudawn. wgpudawn.wgpu_py_version is the version of wgpu-py that this version of wgpudawn mirrors.

In the browser

The gallery runs the examples of pygfx in your browser, on wgpudawn: Pyodide, the Pyodide wheel of wgpudawn (which uses the WebGPU of the browser through Dawn's Emdawnwebgpu) and pygfx (for now with a few fixes on top, see issue 2). It needs a browser with WebGPU and JSPI, such as a recent Chrome or Edge. Every example is run in headless Chrome when the site is built; the gallery shows what works and what does not.

Status

Early. The wgpu-py tests that do not depend on wgpu-native specifics pass, and so does the unit test suite of pygfx (see below).

Differences with wgpu-py:

  • Shaders are compiled by Tint, which follows the WGSL spec strictly; naga (wgpu-native) accepts some shaders that Tint rejects.
  • No wgpu-native extras (wgpu.backends.wgpu_native.extras: GLSL shaders, pipeline statistics queries, multi-draw-indirect-count, ...), and no wgpu-native specific features and limits. Dawn has its own non-standard features, e.g. unorm16-texture-formats.
  • Dawn's own extras, in wgpudawn.backends.dawn.extras (native builds only): import_shared_texture_memory() makes a GPUSharedTextureMemory from memory that another API or process owns (an IOSurface on macOS, a dmabuf on Linux), create_texture() on it gives a texture to render into between begin_access() and end_access(), and the GPUSharedFence objects that end_access() returns export what to wait for (an MTLSharedEvent and its value, a sync fd, or an opaque-fd semaphore); import_shared_fence() goes the other way. The adapter lists what it supports in adapter.features (shared-texture-memory-i-o-surface, shared-texture-memory-dma-buf, shared-fence-m-t-l-shared-event, shared-fence-sync-f-d, shared-fence-vk-semaphore-opaque-f-d); ask for them in the required_features of request_device_sync(), or in the preferred_features of preconfigure_default_device().
  • Devices always have the core-features-and-limits feature.
  • The backends are Vulkan (Linux, Windows), Metal (macOS), and D3D12/D3D11 (Windows). There is no OpenGL backend.
  • Validation errors are raised at the call that causes them, and push_error_scope() / pop_error_scope_async(), get_compilation_info_async() and the device-lost promise are implemented.

Libraries that import wgpu

Libraries such as pygfx and rendercanvas import wgpu by name, so by default they use wgpu-py, also when wgpudawn is installed. To run them on wgpudawn, opt in before anything imports wgpu:

import wgpudawn

wgpudawn.install_as_wgpu()

import pygfx  # `import wgpu` now gives wgpudawn, in this process

After that, wgpu and its submodules are wgpudawn's (the same module objects), and wgpu.__version__ is wgpudawn.wgpu_py_version. wgpudawn never installs a wgpu module on disk, so it stays co-installable with wgpu-py.

CI runs the unit tests of pygfx this way, using tests/wgpu_shim: a test-only package named wgpu that calls install_as_wgpu(), and that takes the place of wgpu-py so that pygfx's requirement on it is satisfied. It is not part of the wgpudawn package.

Platforms

Wheels are built for:

x86-64 arm64
Linux (glibc >= 2.28) yes yes (includes Raspberry Pi 4/5 with a 64-bit OS)
macOS (>= 11) yes yes
Windows yes yes

There is also a wheel for Pyodide (Pyodide 314, i.e. Python 3.14): there, the same bindings run on the WebGPU of the browser, via Dawn's Emdawnwebgpu. The gallery above uses it; website/ builds it.

Building from source

Dawn is not downloaded or built by pip install; build it first:

python tools/build_dawn.py --prefix /path/to/dawn    # needs git, cmake, ninja, a C++20 compiler
DAWN_PREFIX=/path/to/dawn pip install -e ".[dev]"
pip install ./tests/wgpu_shim                        # optional: for the tests that use rendercanvas
pytest tests codegen

On Linux this needs the headers of X11, xcb and Wayland. tools/build_dawn_manylinux.sh does the same in the manylinux image that the wheels are built in. DAWN_PREFIX can also point to an extracted release archive of Dawn (of the release in build_cffi.py), or to a prefix with a shared libwebgpu_dawn.

How it works:

  • wgpudawn/_lib is a cffi (API mode) extension. Its cdef (webgpu_cdef.h) is generated from Dawn's webgpu.h by tools/gen_cdef.py.
  • wgpudawn/backends/dawn implements the API with it. It started as wgpu-py's wgpu-native backend.
  • codegen/ is wgpu-py's code generator: it writes the enums, flags and structs from webgpu.idl, and checks the backend against the IDL and against Dawn's header. Run python codegen after changing either.

Versions and releases

A version has four numbers, X.Y.Z.N: X.Y.Z is the version of wgpu-py that it mirrors (same API), and N counts the releases of wgpudawn for that version, which mostly are updates of Dawn. So wgpudawn~=0.32.0 is "the API of wgpu-py 0.32.0, on the newest Dawn". (The first releases, 0.0.x, predate this scheme.)

The version comes from the git tag; there is no version number in the source. Pushing a tag builds and tests the wheels, and publishes them to PyPI. upstream.json records the versions of wgpu-py and Dawn that the code corresponds to.

Maintenance is done by AI agents, with Claude Code skills that are part of this repository:

claude "/update-dawn release"       # to the latest Dawn release, verify, release X.Y.Z.N+1
claude "/sync-upstream release"     # port a new wgpu-py release, verify, release X.Y.Z.0
claude "/update-website"            # newer pygfx on the website; check every example; deploy

Without release, they stop before tagging. See .claude/skills/.

License

BSD 2-clause, see LICENSE. wgpudawn is derived from wgpu-py (Copyright 2019-2023 Almar Klein, Korijn van Golen). The wheels include Dawn and the libraries that it is built with; see LICENSES/.

Metadata

Release files for wgpudawn 0.32.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wgpudawn 0.32.0.0
File Size Uploaded Provenance
wgpudawn-0.32.0.0.tar.gz 231.6 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for wgpudawn 0.32.0.0
File
wgpudawn-0.32.0.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl CPython 3.14 CPython 3.14 PyEmscripten 2026.0+ WebAssembly Details
wgpudawn-0.32.0.0-cp311-abi3-win_arm64.whl CPython 3.11 abi3 Windows ARM64 Details
wgpudawn-0.32.0.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
wgpudawn-0.32.0.0-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
wgpudawn-0.32.0.0-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
wgpudawn-0.32.0.0-cp311-abi3-macosx_11_0_x86_64.whl CPython 3.11 abi3 macOS 11.0+ x86-64 Details
wgpudawn-0.32.0.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details

Total release size: 27.6 MB

Release files / wgpudawn-0.32.0.0.tar.gz

Download URL wgpudawn-0.32.0.0.tar.gz
Size 231.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a2148bde6df844eed561106511b7c0de429a384fa6c81ff2da7aaf2b87c5233f
BLAKE2b-256 checksum
How to use checksums
2c4e07066140232df4935821fd4e645cef0aaafbd3829989d4a16b225849aa19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / wgpudawn-0.32.0.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl

Download URL wgpudawn-0.32.0.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
Size 259.9 kB
Tags CPython 3.14 PyEmscripten 2026.0+ WebAssembly
SHA-256 checksum
How to use checksums
0ab0c532061429b87d83014ce9a7d4a79eb787e8c4729a6206d4e4a4642722c7
BLAKE2b-256 checksum
How to use checksums
b799602f6ea219856bdada2c0ef22846635dc65b307fef1f914b28d618d129ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / wgpudawn-0.32.0.0-cp311-abi3-win_arm64.whl

Download URL wgpudawn-0.32.0.0-cp311-abi3-win_arm64.whl
Size 4.8 MB
Tags CPython 3.11 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
75176a52e4a5391e4ef9549726172d198e12933b003fff62f2c76dc373297869
BLAKE2b-256 checksum
How to use checksums
e2a7def65c274b8866bcdee47efe47543af63f2e58b3ba3a368c2b59a1308ce3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / wgpudawn-0.32.0.0-cp311-abi3-win_amd64.whl

Download URL wgpudawn-0.32.0.0-cp311-abi3-win_amd64.whl
Size 4.6 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
0e942b5dd491bcfe54e58e9028fbd259ee561175f0e106fa3ab949e63900b341
BLAKE2b-256 checksum
How to use checksums
a424885fa10df4b2e1dbb342828852a97292a7e46235843d7ea44b2dd9c0a26c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / wgpudawn-0.32.0.0-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL wgpudawn-0.32.0.0-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 5.5 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
cbee1aa6df2f3386e122f5155d496449655a56ceb8359186fb6b3c117817d237
BLAKE2b-256 checksum
How to use checksums
2c5292074228e1948b25efbe3881fb8e9e4f4a724fb77bbfafc6c6e3afdb473f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / wgpudawn-0.32.0.0-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL wgpudawn-0.32.0.0-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 5.3 MB
Tags CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
e08c5ecaa256375d07368b19344db42d75360608eac2480583e5bde56b2e2e4a
BLAKE2b-256 checksum
How to use checksums
c923735b22eb71caf8f59e0093b43da2daa794109d5afaac8912c4d9a4aa438a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / wgpudawn-0.32.0.0-cp311-abi3-macosx_11_0_x86_64.whl

Download URL wgpudawn-0.32.0.0-cp311-abi3-macosx_11_0_x86_64.whl
Size 3.7 MB
Tags CPython 3.11 abi3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
36ffed91e73eff3227c26815a55d8e88a5ab97f8392506761716e4d50b280256
BLAKE2b-256 checksum
How to use checksums
69b8bf2f1008e9d77a74bc35f624bb39c717ac419fe4ab5711ae437bbba2899b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / wgpudawn-0.32.0.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL wgpudawn-0.32.0.0-cp311-abi3-macosx_11_0_arm64.whl
Size 3.3 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
19f4dba25315a72a229c14fb490be6df7ba0c3f519b91e70130f77ae2b8faff4
BLAKE2b-256 checksum
How to use checksums
453a1f2a2f3f35a26c3cf59359169a44b6e1890c92dee8d9296242ba029bfd2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for wgpudawn 0.32.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 8 files in this release have been uploaded with provenance metadata.

Select from 8 files

Attestation for wgpudawn-0.32.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page