[package]
name = "wgpu"
version = "0.13.1"
authors = ["wgpu developers"]
edition = "2021"
description = "Rusty WebGPU API wrapper"
homepage = "https://wgpu.rs/"
repository = "https://github.com/gfx-rs/wgpu/tree/v0.13"
keywords = ["graphics"]
license = "MIT OR Apache-2.0"
exclude = [
    "etc/**/*",
    "examples/**/*.png",  # Image comparison test
    "examples/**/*.dds",  # Compressed textures
    "examples/**/*.ktx2", # Compressed textures
    "examples/**/*.mtl",  # Material files
    "examples/**/*.obj",  # Model files
    "tests/**/*",
    "Cargo.lock",
    "target/**/*"
]
autotests = false

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lib]

[[test]]
name = "wgpu-tests"
path = "tests/root.rs"

[[example]]
name = "boids"
test = true

[[example]]
name = "bunnymark"
test = true

[[example]]
name = "conservative-raster"
test = true

[[example]]
name = "cube"
test = true

[[example]]
name = "hello-compute"
test = true

[[example]]
name = "mipmap"
test = true

[[example]]
name = "msaa-line"
test = true

[[example]]
name = "shadow"
test = true

[[example]]
name = "skybox"
test = true

[[example]]
name = "texture-arrays"
test = true

[[example]]
name = "water"
test = true

[features]
default = []
spirv = ["naga/spv-in"]
glsl = ["naga/glsl-in"]
trace = ["serde", "wgc/trace"]
replay = ["serde", "wgc/replay"]
angle = ["wgc/angle"]
webgl = ["wgc"]
emscripten = ["webgl"]
vulkan-portability = ["wgc/vulkan-portability"]

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.wgc]
package = "wgpu-core"
path = "../wgpu-core"
version = "0.13"
features = ["raw-window-handle"]

[target.'cfg(target_arch = "wasm32")'.dependencies.wgc]
package = "wgpu-core"
path = "../wgpu-core"
version = "0.13"
features = ["raw-window-handle"]
optional = true

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

[target.'cfg(any(not(target_arch = "wasm32"), target_os = "emscripten"))'.dependencies.hal]
package = "wgpu-hal"
path = "../wgpu-hal"
version = "0.13"

[dependencies]
arrayvec = "0.7"
log = "0.4"
# parking_lot 0.12 switches from `winapi` to `windows`; permit either
parking_lot = ">=0.11,<0.13"
raw-window-handle = "0.4"
serde = { version = "1", features = ["derive"], optional = true }
smallvec = "1"

[dev-dependencies]
bitflags = "1"
bytemuck = { version = "1.4", features = ["derive"] }
glam = "0.20.2"
ddsfile = "0.5"
futures-intrusive = "0.4"
log = "0.4"
# Opt out of noise's "default-features" to avoid "image" feature as a dependency count optimization.
# This will not be required in the next release since it has been removed from the default feature in https://github.com/Razaekel/noise-rs/commit/1af9e1522236b2c584fb9a02150c9c67a5e6bb04#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542
noise = { version = "0.7", default-features = false }
obj = "0.10"
png = "0.17"
nanorand = { version = "0.7", default-features = false, features = ["wyrand"] }
winit = "0.26"

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
async-executor = "1.0"
pollster = "0.2"
env_logger = "0.9"

[dependencies.naga]
#git = "https://github.com/gfx-rs/naga"
#rev = "27d38aae"
version = "0.9"
optional = true

# used to test all the example shaders
[dev-dependencies.naga]
#git = "https://github.com/gfx-rs/naga"
#rev = "27d38aae"
version = "0.9"
features = ["wgsl-in"]

[target.'cfg(target_arch = "wasm32")'.dependencies.naga]
#git = "https://github.com/gfx-rs/naga"
#rev = "27d38aae"
version = "0.9"
features = ["wgsl-out"]

[target.'cfg(target_arch = "wasm32")'.dependencies]
web-sys = { version = "0.3.58", features = [
    "Document",
    "Navigator",
    "Node",
    "NodeList",
    "Gpu",
    "GpuAdapter",
    "GpuAddressMode",
    "GpuAutoLayoutMode",
    "GpuBindGroup",
    "GpuBindGroupDescriptor",
    "GpuBindGroupEntry",
    "GpuBindGroupLayout",
    "GpuBindGroupLayoutDescriptor",
    "GpuBindGroupLayoutEntry",
    "GpuBlendComponent",
    "GpuBlendFactor",
    "GpuBlendOperation",
    "GpuBlendState",
    "GpuBuffer",
    "GpuBufferBinding",
    "GpuBufferBindingLayout",
    "GpuBufferBindingType",
    "GpuBufferDescriptor",
    "GpuCanvasContext",
    "GpuCanvasConfiguration",
    "GpuColorDict",
    "GpuColorTargetState",
    "GpuCommandBuffer",
    "GpuCommandBufferDescriptor",
    "GpuCommandEncoder",
    "GpuCommandEncoderDescriptor",
    "GpuCompareFunction",
    "GpuCompilationInfo",
    "GpuCompilationMessage",
    "GpuCompilationMessageType",
    "GpuComputePassDescriptor",
    "GpuComputePassEncoder",
    "GpuComputePipeline",
    "GpuComputePipelineDescriptor",
    "GpuCullMode",
    "GpuDepthStencilState",
    "GpuDevice",
    "GpuDeviceDescriptor",
    "GpuDeviceLostInfo",
    "GpuDeviceLostReason",
    "GpuError",
    "GpuErrorFilter",
    "GpuExtent3dDict",
    "GpuFeatureName",
    "GpuFilterMode",
    "GpuFragmentState",
    "GpuFrontFace",
    "GpuImageCopyBuffer",
    "GpuImageCopyTexture",
    "GpuImageDataLayout",
    "GpuIndexFormat",
    "GpuLoadOp",
    "gpu_map_mode",
    "GpuMipmapFilterMode",
    "GpuMultisampleState",
    "GpuObjectDescriptorBase",
    "GpuOrigin2dDict",
    "GpuOrigin3dDict",
    "GpuOutOfMemoryError",
    "GpuPipelineDescriptorBase",
    "GpuPipelineLayout",
    "GpuPipelineLayoutDescriptor",
    "GpuPowerPreference",
    "GpuPrimitiveState",
    "GpuPrimitiveTopology",
    "GpuProgrammableStage",
    "GpuQuerySet",
    "GpuQuerySetDescriptor",
    "GpuQueryType",
    "GpuQueue",
    "GpuRenderBundle",
    "GpuRenderBundleDescriptor",
    "GpuRenderBundleEncoder",
    "GpuRenderBundleEncoderDescriptor",
    "GpuRenderPassColorAttachment",
    "GpuRenderPassDepthStencilAttachment",
    "GpuRenderPassDescriptor",
    "GpuRenderPassEncoder",
    "GpuRenderPipeline",
    "GpuRenderPipelineDescriptor",
    "GpuRequestAdapterOptions",
    "GpuSampler",
    "GpuSamplerBindingLayout",
    "GpuSamplerBindingType",
    "GpuSamplerDescriptor",
    "GpuShaderModule",
    "GpuShaderModuleDescriptor",
    "GpuStencilFaceState",
    "GpuStencilOperation",
    "GpuStorageTextureAccess",
    "GpuStorageTextureBindingLayout",
    "GpuStoreOp",
    "GpuSupportedFeatures",
    "GpuSupportedLimits",
    "GpuTexture",
    "GpuTextureAspect",
    "GpuTextureBindingLayout",
    "GpuTextureDescriptor",
    "GpuTextureDimension",
    "GpuTextureFormat",
    "GpuTextureSampleType",
    "GpuTextureView",
    "GpuTextureViewDescriptor",
    "GpuTextureViewDimension",
    "GpuUncapturedErrorEvent",
    "GpuUncapturedErrorEventInit",
    "GpuValidationError",
    "GpuVertexAttribute",
    "GpuVertexBufferLayout",
    "GpuVertexFormat",
    "GpuVertexState",
    "GpuVertexStepMode",
    "HtmlCanvasElement",
    "OffscreenCanvas",
    "ImageBitmap",
    "ImageBitmapRenderingContext",
    "Window"
] }
wasm-bindgen = "0.2.81"
js-sys = "0.3.58"
wasm-bindgen-futures = "0.4.31"
# parking_lot 0.12 switches from `winapi` to `windows`; permit either
parking_lot = ">=0.11,<0.13"

[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
console_error_panic_hook = "0.1.6"
console_log = "0.1.2"
# We need the Location feature in the framework examples
web-sys = { version = "0.3.58", features = ["Location"] }
