49 releases (14 breaking)

0.19.0 Jan 17, 2024
0.18.1 Nov 15, 2023
0.18.0 Oct 25, 2023
0.17.0 Jul 21, 2023
0.5.6 Jul 9, 2020

#1 in #info-log

Download history 43006/week @ 2023-11-01 42528/week @ 2023-11-08 47404/week @ 2023-11-15 37270/week @ 2023-11-22 35786/week @ 2023-11-29 34733/week @ 2023-12-06 37833/week @ 2023-12-13 34714/week @ 2023-12-20 35665/week @ 2023-12-27 40754/week @ 2024-01-03 42800/week @ 2024-01-10 53037/week @ 2024-01-17 47043/week @ 2024-01-24 51003/week @ 2024-01-31 55549/week @ 2024-02-07 51601/week @ 2024-02-14

213,640 downloads per month
Used in 1,201 crates (11 directly)

MIT/Apache

6MB
118K SLoC

This library safely implements WebGPU on native platforms. It is designed for integration into browsers, as well as wrapping into other language-specific user-friendly libraries.

Feature flags

  • api_log_info --- Log all API entry points at info instead of trace level.

  • resource_log_info --- Log resource lifecycle management at info instead of trace level.

  • link (enabled by default) --- Use static linking for libraries. Disale to manually link. Enabled by default.

  • renderdoc --- Support the Renderdoc graphics debugger: https://renderdoc.org/

  • strict_asserts --- Apply run-time checks, even in release builds. These are in addition to the validation carried out at public APIs in all builds.

  • trace --- Enable API tracing.

  • replay --- Enable API replaying

  • serial-pass --- Enable serializable compute/render passes, and bundle encoders.

  • wgsl --- Enable ShaderModuleSource::Wgsl

  • fragile-send-sync-non-atomic-wasm --- Implement Send and Sync on Wasm, but only if atomics are not enabled.

    WebGL/WebGPU objects can not be shared between threads. However, it can be useful to artificially mark them as Send and Sync anyways to make it easier to write cross-platform code. This is technically very unsafe in a multithreaded environment, but on a wasm binary compiled without atomics we know we are definitely not in a multithreaded environment.

Backends, passed through to wgpu-hal

  • metal --- Enable the metal backend.

  • vulkan --- Enable the vulkan backend.

  • gles --- Enable the GLES backend.

    This is used for all of GLES, OpenGL, and WebGL.

  • dx12 --- Enable the dx12 backend.

Dependencies

~2–16MB
~183K SLoC