wgpu-hal 0.18.0

WebGPU hardware abstraction layer
Documentation
[package]

name = "wgpu-hal"

version = "0.18.0"

authors = ["wgpu developers"]

edition = "2021"

description = "WebGPU hardware abstraction layer"

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]

# Ideally we would enable all the features.

#

# However the metal features fails to be documented because the docs.rs runner cross compiling under

# x86_64-unknown-linux-gnu and metal-rs cannot compile in that environment at the moment. The same applies

# with the dx11 and dx12 features.

features = ["vulkan", "gles", "renderdoc"]

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

metal = ["naga/msl-out", "block"]

vulkan = [

    "naga/spv-out",

    "ash",

    "gpu-alloc",

    "gpu-descriptor",

    "libloading",

    "smallvec",

]

gles = ["naga/glsl-out", "glow", "glutin_wgl_sys", "khronos-egl", "libloading"]

dx11 = [

    "naga/hlsl-out",

    "d3d12",

    "libloading",

    "winapi/d3d11",

    "winapi/std",

    "winapi/d3d11_1",

    "winapi/d3d11_2",

    "winapi/d3d11sdklayers",

    "winapi/dxgi1_6",

]

dx12 = [

    "naga/hlsl-out",

    "d3d12",

    "bit-set",

    "libloading",

    "range-alloc",

    "winapi/std",

    "winapi/winbase",

    "winapi/d3d12",

    "winapi/d3d12shader",

    "winapi/d3d12sdklayers",

    "winapi/dxgi1_6",

]

# TODO: This is a separate feature until Mozilla okays windows-rs, see https://github.com/gfx-rs/wgpu/issues/3207 for the tracking issue.

windows_rs = ["gpu-allocator"]

dxc_shader_compiler = ["hassle-rs"]

renderdoc = ["libloading", "renderdoc-sys"]

fragile-send-sync-non-atomic-wasm = ["wgt/fragile-send-sync-non-atomic-wasm"]

link = ["metal/link"]



[[example]]

name = "halmark"



[[example]]

name = "raw-gles"

required-features = ["gles"]



[dependencies]

bitflags = "2"

parking_lot = ">=0.11,<0.13"

profiling = { version = "1", default-features = false }

raw-window-handle = "0.5"

thiserror = "1"

once_cell = "1.18.0"



# backends common

arrayvec = "0.7"

rustc-hash = "1.1"

log = "0.4"



# backend: Gles

glow = { version = "0.13", optional = true }



[dependencies.wgt]

package = "wgpu-types"

path = "../wgpu-types"

version = "0.18.0"



[target.'cfg(not(target_arch = "wasm32"))'.dependencies]

# backend: Vulkan

ash = { version = "0.37.3", optional = true }

gpu-alloc = { version = "0.6", optional = true }

gpu-descriptor = { version = "0.2", optional = true }

smallvec = { version = "1", optional = true, features = ["union"] }



khronos-egl = { version = "6", features = ["dynamic"], optional = true }

libloading = { version = ">=0.7, <0.9", optional = true }

renderdoc-sys = { version = "1.0.0", optional = true }



[target.'cfg(target_os = "emscripten")'.dependencies]

khronos-egl = { version = "6", features = ["static", "no-pkg-config"] }

#Note: it's unused by emscripten, but we keep it to have single code base in egl.rs

libloading = { version = ">=0.7, <0.9", optional = true }



[target.'cfg(windows)'.dependencies]

# backend: Dx12

bit-set = { version = "0.5", optional = true }

range-alloc = { version = "0.1", optional = true }

gpu-allocator = { version = "0.23", default_features = false, features = [

    "d3d12",

    "public-winapi",

], optional = true }

hassle-rs = { version = "0.10", optional = true }

# backend: Gles

glutin_wgl_sys = { version = "0.5", optional = true }



winapi = { version = "0.3", features = [

    "profileapi",

    "libloaderapi",

    "windef",

    "winuser",

    "dcomp",

] }

d3d12 = { version = "0.7", features = ["libloading"], optional = true }



[target.'cfg(any(target_os="macos", target_os="ios"))'.dependencies]

# backend: Metal

block = { version = "0.1", optional = true }



metal = "0.27.0"

objc = "0.2.5"

core-graphics-types = "0.1"



[target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))'.dependencies]

wasm-bindgen = "0.2.87"

web-sys = { version = "0.3.64", features = [

    "Window",

    "HtmlCanvasElement",

    "WebGl2RenderingContext",

    "OffscreenCanvas",

] }

js-sys = "0.3.64"



[target.'cfg(unix)'.dependencies]

libc = "0.2"



[target.'cfg(target_os = "android")'.dependencies]

android_system_properties = "0.1.1"



[dependencies.naga]

git = "https://github.com/gfx-rs/naga"

rev = "92e41b43e437146b5d946eb238de963be1168016"

version = "0.14.0"

features = ["clone"]



# DEV dependencies

[dev-dependencies.naga]

git = "https://github.com/gfx-rs/naga"

rev = "92e41b43e437146b5d946eb238de963be1168016"

version = "0.14.0"

features = ["wgsl-in"]



[dev-dependencies]

cfg-if = "1"

env_logger = "0.10"

winit = { version = "0.28.7", features = [

    "android-native-activity",

] } # for "halmark" example



[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]

glutin = "0.29.1" # for "gles" example