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::Wgslfragile-send-sync-non-atomic-wasm--- ImplementSendandSyncon 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 themetalbackend.vulkan--- Enable thevulkanbackend.gles--- Enable theGLESbackend.
This is used for all of GLES, OpenGL, and WebGL.
dx12--- Enable thedx12backend.