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 replayingserial-pass
--- Enable serializable compute/render passes, and bundle encoders.wgsl
--- EnableShaderModuleSource::Wgsl
fragile-send-sync-non-atomic-wasm
--- ImplementSend
andSync
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 themetal
backend.vulkan
--- Enable thevulkan
backend.gles
--- Enable theGLES
backend.
This is used for all of GLES, OpenGL, and WebGL.
dx12
--- Enable thedx12
backend.