Files
moonwell-client-core/third_party/wgpu-hal/Cargo.toml
T
Sam Sung 0bd7d0531c A Vulkan presentation stall waits instead of losing the device (#2393)
On Vulkan, the Windows default, a presentation stall longer than a second crashed the client. wgpu-hal 27.0.4's `acquire_texture` maps a `VK_TIMEOUT` from its post-acquire fence wait to `DeviceError::Unexpected`. wgpu-core treats that as a lost device, and Bevy then panics on "Couldn't get swap chain texture". Upstream tracks this as gfx-rs/wgpu#9029, still open in wgpu 30.

wgpu-hal 27.0.4 is now vendored under `third_party/wgpu-hal` through `[patch.crates-io]`, as `kira` is. Only `src/vulkan/instance.rs` differs. A timeout of the previous submission's wait, of the acquire, or of the acquired image's fence now waits again within a 30 s budget, then fails as upstream does. The Vulkan spec leaves the semaphore and fence unaffected by a timed-out call, so the retry is legal. Each retry logs, with the raw result. `BENILLA.md` says how to check the patch and when to drop it.

Tests: the lock resolves to the patch. Built for Linux and Windows.

Fixes #2373

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 11:59:54 +07:00

421 lines
9.2 KiB
TOML

# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package]
edition = "2021"
rust-version = "1.82.0"
name = "wgpu-hal"
version = "27.0.4"
authors = ["gfx-rs developers"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Hardware abstraction layer for wgpu, the cross-platform, safe, pure-rust graphics API"
homepage = "https://wgpu.rs/"
readme = "README.md"
keywords = ["graphics"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/gfx-rs/wgpu"
[package.metadata.cargo-machete]
ignored = ["cfg_aliases"]
[package.metadata.docs.rs]
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",
]
[features]
cargo-clippy = []
device_lost_panic = []
dx12 = [
"naga/hlsl-out",
"dep:arrayvec",
"dep:bit-set",
"dep:bytemuck",
"dep:hashbrown",
"dep:libloading",
"dep:log",
"dep:ordered-float",
"dep:once_cell",
"dep:parking_lot",
"dep:profiling",
"dep:range-alloc",
"dep:windows-core",
"gpu-allocator/d3d12",
"windows/Win32_Graphics_Direct3D_Fxc",
"windows/Win32_Graphics_Direct3D_Dxc",
"windows/Win32_Graphics_Direct3D",
"windows/Win32_Graphics_Direct3D12",
"windows/Win32_Graphics_DirectComposition",
"windows/Win32_Graphics_Dxgi_Common",
"windows/Win32_Security",
"windows/Win32_System_Diagnostics_Debug",
"windows/Win32_System_Kernel",
"windows/Win32_System_Performance",
"windows/Win32_System_Threading",
"windows/Win32_UI_WindowsAndMessaging",
]
fragile-send-sync-non-atomic-wasm = ["wgpu-types/fragile-send-sync-non-atomic-wasm"]
gles = [
"naga/glsl-out",
"dep:arrayvec",
"dep:bytemuck",
"dep:glow",
"dep:glutin_wgl_sys",
"dep:hashbrown",
"dep:js-sys",
"dep:khronos-egl",
"dep:libloading",
"dep:log",
"dep:ndk-sys",
"dep:objc",
"dep:parking_lot",
"dep:profiling",
"dep:wasm-bindgen",
"dep:web-sys",
"wgpu-types/web",
"windows/Win32_Graphics_OpenGL",
"windows/Win32_Graphics_Gdi",
"windows/Win32_System_LibraryLoader",
"windows/Win32_UI_WindowsAndMessaging",
]
internal_error_panic = []
metal = [
"naga/msl-out",
"dep:arrayvec",
"dep:block",
"dep:core-graphics-types",
"dep:hashbrown",
"dep:libc",
"dep:log",
"dep:metal",
"dep:objc",
"dep:parking_lot",
"dep:profiling",
]
portable-atomic = [
"dep:portable-atomic",
"dep:portable-atomic-util",
]
renderdoc = [
"dep:libloading",
"dep:renderdoc-sys",
"dep:log",
]
static-dxc = ["dep:mach-dxcompiler-rs"]
validation_canary = ["dep:parking_lot"]
vulkan = [
"naga/spv-out",
"dep:android_system_properties",
"dep:arrayvec",
"dep:ash",
"dep:bytemuck",
"dep:gpu-alloc",
"dep:gpu-descriptor",
"dep:hashbrown",
"dep:libc",
"dep:libloading",
"dep:log",
"dep:ordered-float",
"dep:parking_lot",
"dep:profiling",
"dep:smallvec",
"dep:windows",
"windows/Win32",
]
[lib]
name = "wgpu_hal"
path = "src/lib.rs"
[dependencies.arrayvec]
version = "0.7.1"
optional = true
default-features = false
[dependencies.bitflags]
version = "2.9"
[dependencies.bytemuck]
version = "1.22"
features = [
"extern_crate_alloc",
"min_const_generics",
"derive",
]
optional = true
[dependencies.cfg-if]
version = "1"
[dependencies.glow]
version = "0.16"
optional = true
[dependencies.hashbrown]
version = "0.16"
features = [
"default-hasher",
"inline-more",
]
optional = true
default-features = false
[dependencies.log]
version = "0.4.21"
optional = true
[dependencies.naga]
version = "27.0.0"
[dependencies.ordered-float]
version = ">=3, <6.0"
optional = true
default-features = false
[dependencies.parking_lot]
version = "0.12.3"
optional = true
[dependencies.profiling]
version = "1.0.1"
optional = true
default-features = false
[dependencies.raw-window-handle]
version = "0.6.2"
default-features = false
[dependencies.rustc-hash]
version = "1.1"
optional = true
default-features = false
[dependencies.thiserror]
version = "2.0.12"
default-features = false
[dependencies.wgpu-types]
version = "27.0.0"
default-features = false
[dev-dependencies.env_logger]
version = "0.11"
default-features = false
[dev-dependencies.glam]
version = "0.30.7"
[dev-dependencies.naga]
version = "27.0.0"
features = [
"wgsl-in",
"termcolor",
]
[dev-dependencies.winit]
version = "0.29"
features = ["android-native-activity"]
[build-dependencies.cfg_aliases]
version = "0.2.1"
[target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))'.dependencies.js-sys]
version = "0.3.77"
optional = true
default-features = true
[target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))'.dependencies.wasm-bindgen]
version = "0.2.100"
optional = true
[target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))'.dependencies.web-sys]
version = "0.3.77"
features = [
"default",
"Window",
"HtmlCanvasElement",
"WebGl2RenderingContext",
"OffscreenCanvas",
]
optional = true
default-features = false
[target.'cfg(all(windows, not(target_arch = "aarch64")))'.dependencies.mach-dxcompiler-rs]
version = "0.1.4"
optional = true
default-features = false
[target.'cfg(any(not(target_has_atomic = "64"), not(target_has_atomic = "ptr")))'.dependencies.portable-atomic]
version = "1.8"
optional = true
[target.'cfg(not(any(target_arch = "wasm32", target_os = "ios", target_os = "visionos")))'.dev-dependencies.glutin]
version = "0.31"
features = [
"egl",
"wgl",
"wayland",
"x11",
]
default-features = false
[target.'cfg(not(any(target_arch = "wasm32", target_os = "ios", target_os = "visionos")))'.dev-dependencies.glutin-winit]
version = "0.4"
features = [
"egl",
"wgl",
"wayland",
"x11",
]
default-features = false
[target.'cfg(not(any(target_arch = "wasm32", target_os = "ios", target_os = "visionos")))'.dev-dependencies.rwh_05]
version = "0.5.2"
package = "raw-window-handle"
[target.'cfg(not(any(target_arch = "wasm32", target_os = "ios", target_os = "visionos")))'.dev-dependencies.winit]
version = "0.29"
features = [
"android-native-activity",
"rwh_05",
]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.ash]
version = "0.38"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gpu-alloc]
version = "0.6"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.gpu-descriptor]
version = "0.3.2"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.khronos-egl]
version = "6"
features = ["dynamic"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.libloading]
version = "0.8"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.renderdoc-sys]
version = "1"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.smallvec]
version = "1.14"
features = ["union"]
optional = true
[target.'cfg(not(target_has_atomic = "ptr"))'.dependencies.portable-atomic-util]
version = "0.2.4"
features = ["alloc"]
optional = true
[target.'cfg(target_os = "android")'.dependencies.android_system_properties]
version = "0.1.1"
optional = true
[target.'cfg(target_os = "android")'.dependencies.ndk-sys]
version = "0.6"
optional = true
[target.'cfg(target_os = "emscripten")'.dependencies.khronos-egl]
version = "6"
features = [
"static",
"no-pkg-config",
]
optional = true
[target.'cfg(target_os = "emscripten")'.dependencies.libloading]
version = "0.8"
optional = true
[target.'cfg(target_vendor = "apple")'.dependencies.block]
version = "0.1.6"
optional = true
[target.'cfg(target_vendor = "apple")'.dependencies.core-graphics-types]
version = "0.2"
optional = true
[target.'cfg(target_vendor = "apple")'.dependencies.metal]
version = "0.32"
optional = true
[target.'cfg(target_vendor = "apple")'.dependencies.objc]
version = "0.2.5"
optional = true
[target."cfg(unix)".dependencies.libc]
version = "0.2.171"
optional = true
default-features = false
[target."cfg(windows)".dependencies.bit-set]
version = "0.8"
optional = true
default-features = false
[target."cfg(windows)".dependencies.glutin_wgl_sys]
version = "0.6"
optional = true
[target."cfg(windows)".dependencies.gpu-allocator]
version = "0.27"
optional = true
default-features = false
[target."cfg(windows)".dependencies.once_cell]
version = "1.21"
optional = true
default-features = false
[target."cfg(windows)".dependencies.range-alloc]
version = "0.1"
optional = true
[target."cfg(windows)".dependencies.windows]
version = "0.58"
optional = true
default-features = false
[target."cfg(windows)".dependencies.windows-core]
version = "0.58"
optional = true
default-features = false
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(web_sys_unstable_apis)"]