Expand description
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
See documentation for the wgpu
crate for more in-depth information on these features.
§Logging Configuration
api_log_info
— Log all API entry points at info instead of trace level. Also, promotes certain debug log calls to info.resource_log_info
— Log resource lifecycle management at info instead of trace level.
§Runtime Checks
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.
§Debugging
observe_locks
— Enable lock order observation.
§Serialization
serde
— Enables serialization viaserde
on common wgpu types.trace
— Enable API tracing.replay
— Enable API replaying
§Surface Support
raw-window-handle
— Enable creating surfaces using raw-window-handle
§Shading Language Support
wgsl
— EnableShaderModuleSource::Wgsl
glsl
— EnableShaderModuleSource::Glsl
spirv
— EnableShaderModuleSource::SpirV
§Other
counters
— Internally count resources and events for debugging purposes. If the counters feature is disabled, the counting infrastructure is removed from the build and the exposed counters always return 0.fragile-send-sync-non-atomic-wasm
— ImplementSend
andSync
on Wasm, but only if atomics are not enabled.std
(enabled by default) — Enable certain items to beSend
andSync
when they would not otherwise be. Also enables backtraces in some error cases when also under cfg(debug_assertions).
§External libraries
The following features facilitate integration with third-party supporting libraries.
static-dxc
— Enable using themach-dxcompiler-rs
crate to compile DX12 shaders.portable-atomic
— Enable portable atomics on platforms that do not support 64bit atomics.
§Target Conditional Features
dx12
— DX12 backendmetal
— Metal backendvulkan
— Vulkan backend, only available on Windows, Linux, Androidgles
— OpenGL backend, only available on Windows, Linux, Android, and Emscriptenwebgl
— WebGL backend, only available on Emscriptenangle
— OpenGL backend, on macOS onlyvulkan-portability
— Vulkan portability backend, only available on macOSrenderdoc
— Renderdoc integration, only available on Windows, Linux, and Androidnoop
— Enable thenoop
backend.
Re-exports§
pub use validation::map_storage_format_from_naga;
pub use validation::map_storage_format_to_naga;
pub use naga;
Modules§
- api
- as_hal 🔒
- binding_
model - command
- conv 🔒
- device
- error
- global
- hash_
utils 🔒 - Module for hashing utilities.
- hub
- Allocating resource ids, and tracking the resources they refer to.
- id
- identity
- indirect_
validation 🔒 - init_
tracker 🔒 - Lazy initialization of texture and buffer memory.
- instance
- lock 🔒
- Instrumented lock types.
- pipeline
- pipeline_
cache 🔒 - pool 🔒
- present
- Presentation.
- ray_
tracing - registry
- resource
- scratch 🔒
- snatch 🔒
- storage
- timestamp_
normalization 🔒 - Utility for normalizing GPU timestamp queries to have a consistent 1GHz period. This uses a compute shader to do the normalization, so the timestamps exist in their correct format on the GPU, as is required by the WebGPU specification.
- track 🔒
- Resource State and Lifetime Trackers
- validation
- weak_
vec 🔒 - Module containing the
WeakVec
API.
Macros§
- api_log 🔒
Non- api_log_info
- api_
log_ 🔒debug Non- api_log_info
- impl_
labeled - impl_
parent_ device - impl_
resource_ type - impl_
storage_ item - impl_
trackable - resource_
log 🔒Non- resource_log_info
Constants§
- DOWNLEVEL_
ERROR_ 🔒MESSAGE - DOWNLEVEL_
WARNING_ 🔒MESSAGE - MAX_
BIND_ GROUPS - MAX_
COLOR_ ATTACHMENTS - MAX_
VERTEX_ BUFFERS
Traits§
Functions§
Type Aliases§
- Epoch 🔒
- Index 🔒
- Label
- RawString
- Submission
Index - The index of a queue submission.