[package]
name = "wgpu-core"
version = "0.18.1"
authors = ["wgpu 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.65"

[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",
]

[lib]

[features]
default = ["link"]

# Backends, passed through to wgpu-hal
metal = ["hal/metal"]
vulkan = ["hal/vulkan"]
gles = ["hal/gles"]
dx11 = ["hal/dx11"]
dx12 = ["hal/dx12"]

# Use static linking for libraries. Disale to manually link. Enabled by default.
link = ["hal/link"]

# 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"]
# Enable API tracing
trace = ["ron", "serde", "wgt/trace", "arrayvec/serde", "naga/serialize"]
# Enable API replaying
replay = ["serde", "wgt/replay", "arrayvec/serde", "naga/deserialize"]
# Enable serializable compute/render passes, and bundle encoders.
serial-pass = ["serde", "wgt/serde", "arrayvec/serde"]
id32 = []
# Enable `ShaderModuleSource::Wgsl`
wgsl = ["naga/wgsl-in"]
# Implement `Send` and `Sync` on Wasm.
fragile-send-sync-non-atomic-wasm = [
    "hal/fragile-send-sync-non-atomic-wasm",
    "wgt/fragile-send-sync-non-atomic-wasm",
]

[dependencies]
arrayvec = "0.7"
bitflags = "2"
bit-vec = "0.6"
codespan-reporting = "0.11"
rustc-hash = "1.1"
log = "0.4"
# parking_lot 0.12 switches from `winapi` to `windows`; permit either
parking_lot = ">=0.11,<0.13"
profiling = { version = "1", default-features = false }
raw-window-handle = { version = "0.5", optional = true }
ron = { version = "0.8", optional = true }
serde = { version = "1", features = ["serde_derive"], optional = true }
smallvec = "1"
thiserror = "1"

[dependencies.naga]
path = "../naga"
version = "0.14.0"
features = ["clone", "span", "validate"]

[dependencies.wgt]
package = "wgpu-types"
path = "../wgpu-types"
version = "0.18.0"

[dependencies.hal]
package = "wgpu-hal"
path = "../wgpu-hal"
version = "0.18.0"
default_features = false

[target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))'.dependencies]
web-sys = { version = "0.3.65", features = [
    "HtmlCanvasElement",
    "OffscreenCanvas",
] }
