wgpu/wgpu-core/Cargo.toml
Jim Blandy bbdbafdf8a [core] Add lock::observing module, for analyzing lock acquisition.
Add a new module `lock::observing`, enabled by the `observe-locks`
feature, that records all nested lock acquisitions in trace files.

Add a new utility to the workspace, `lock-analyzer`, that reads the
files written by the `observe-locks` feature and writes out a new
`define_lock_ranks!` macro invocation that covers all observed lock
usage, along with comments giving the held and acquired source
locations.
2024-08-28 22:44:20 -04:00

143 lines
4.1 KiB
TOML

[package]
name = "wgpu-core"
version = "22.0.0"
authors = ["gfx-rs developers"]
edition = "2021"
description = "WebGPU core logic on wgpu-hal"
homepage = "https://wgpu.rs/"
repository = "https://github.com/gfx-rs/wgpu"
keywords = ["graphics"]
license = "MIT OR Apache-2.0"
# Override the workspace's `rust-version` key. Firefox uses `cargo vendor` to
# copy the crates it actually uses out of the workspace, so it's meaningful for
# them to have less restrictive MSRVs individually than the workspace as a
# whole, if their code permits. See `../README.md` for details.
rust-version = "1.76"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-apple-darwin",
"x86_64-pc-windows-msvc",
"wasm32-unknown-unknown",
]
[package.metadata.cargo-machete]
# Cargo machete can't check build.rs dependencies. See https://github.com/bnjbvr/cargo-machete/issues/100
ignored = ["cfg_aliases"]
[lib]
[features]
## 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.
counters = ["wgt/counters"]
## Log all API entry points at info instead of trace level.
api_log_info = []
## Log resource lifecycle management at info instead of trace level.
resource_log_info = []
## Support the Renderdoc graphics debugger:
## <https://renderdoc.org/>
renderdoc = ["hal/renderdoc"]
## Apply run-time checks, even in release builds. These are in addition
## to the validation carried out at public APIs in all builds.
strict_asserts = ["wgt/strict_asserts"]
## Enables serialization via `serde` on common wgpu types.
serde = ["dep:serde", "wgt/serde", "arrayvec/serde"]
## Enable API tracing.
trace = ["dep:ron", "serde", "naga/serialize"]
## Enable lock order observation.
observe_locks = ["dep:ron", "serde/serde_derive"]
## Enable API replaying
replay = ["serde", "naga/deserialize"]
## Enable creating instances using raw-window-handle
raw-window-handle = ["dep:raw-window-handle"]
## Enable `ShaderModuleSource::Wgsl`
wgsl = ["naga/wgsl-in"]
## Enable `ShaderModuleSource::Glsl`
glsl = ["naga/glsl-in"]
## Enable `ShaderModuleSource::SpirV`
spirv = ["naga/spv-in", "dep:bytemuck"]
## 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.
fragile-send-sync-non-atomic-wasm = [
"hal/fragile-send-sync-non-atomic-wasm",
"wgt/fragile-send-sync-non-atomic-wasm",
]
#! ### Backends, passed through to wgpu-hal
# --------------------------------------------------------------------
## Enable the `metal` backend.
metal = ["hal/metal"]
## Enable the `vulkan` backend.
vulkan = ["hal/vulkan"]
## Enable the `GLES` backend.
##
## This is used for all of GLES, OpenGL, and WebGL.
gles = ["hal/gles"]
## Enable the `dx12` backend.
dx12 = ["hal/dx12"]
[dependencies]
arrayvec.workspace = true
bit-vec.workspace = true
bitflags.workspace = true
bytemuck = { workspace = true, optional = true }
document-features.workspace = true
indexmap.workspace = true
log.workspace = true
once_cell.workspace = true
parking_lot.workspace = true
profiling = { workspace = true, default-features = false }
raw-window-handle = { workspace = true, optional = true }
ron = { workspace = true, optional = true }
rustc-hash.workspace = true
serde = { workspace = true, features = ["derive"], optional = true }
smallvec.workspace = true
thiserror.workspace = true
[dependencies.naga]
path = "../naga"
version = "22.0.0"
[dependencies.wgt]
package = "wgpu-types"
path = "../wgpu-types"
version = "22.0.0"
[dependencies.hal]
package = "wgpu-hal"
path = "../wgpu-hal"
version = "22.0.0"
default-features = false
[build-dependencies]
cfg_aliases.workspace = true