commit a5576f10a02db5fe488df7006c304e5f248f2384 parent 2a7ba90adccb99c63d1b1813d2b212a2b2aaac30 Author: Andy Leiserson <aleiserson@mozilla.com> Date: Tue, 7 Oct 2025 17:00:40 +0000 Bug 1992842 - Update wgpu to upstream 1072b878 (2025-10-06) r=webgpu-reviewers,supply-chain-reviewers,ErichDonGubler Differential Revision: https://phabricator.services.mozilla.com/D267661 Diffstat:
57 files changed, 909 insertions(+), 459 deletions(-)
diff --git a/.cargo/config.toml.in b/.cargo/config.toml.in @@ -40,9 +40,9 @@ git = "https://github.com/franziskuskiefer/cose-rust" rev = "43c22248d136c8b38fe42ea709d08da6355cf04b" replace-with = "vendored-sources" -[source."git+https://github.com/gfx-rs/wgpu?rev=8c4aebc0c1b75e3f7412dfc180745a0717fc30ec"] +[source."git+https://github.com/gfx-rs/wgpu?rev=1072b87894b7c3084f80bc9d2679e822435186ba"] git = "https://github.com/gfx-rs/wgpu" -rev = "8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +rev = "1072b87894b7c3084f80bc9d2679e822435186ba" replace-with = "vendored-sources" [source."git+https://github.com/glandium/allocator-api2?rev=ad5f3d56a5a4519eff52af4ff85293431466ef5c"] diff --git a/Cargo.lock b/Cargo.lock @@ -4736,8 +4736,8 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664" [[package]] name = "naga" -version = "26.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=8c4aebc0c1b75e3f7412dfc180745a0717fc30ec#8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +version = "27.0.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=1072b87894b7c3084f80bc9d2679e822435186ba#1072b87894b7c3084f80bc9d2679e822435186ba" dependencies = [ "arrayvec", "bit-set", @@ -7856,8 +7856,8 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "26.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=8c4aebc0c1b75e3f7412dfc180745a0717fc30ec#8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +version = "27.0.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=1072b87894b7c3084f80bc9d2679e822435186ba#1072b87894b7c3084f80bc9d2679e822435186ba" dependencies = [ "arrayvec", "bit-set", @@ -7886,24 +7886,24 @@ dependencies = [ [[package]] name = "wgpu-core-deps-apple" -version = "26.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=8c4aebc0c1b75e3f7412dfc180745a0717fc30ec#8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +version = "27.0.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=1072b87894b7c3084f80bc9d2679e822435186ba#1072b87894b7c3084f80bc9d2679e822435186ba" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "26.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=8c4aebc0c1b75e3f7412dfc180745a0717fc30ec#8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +version = "27.0.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=1072b87894b7c3084f80bc9d2679e822435186ba#1072b87894b7c3084f80bc9d2679e822435186ba" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "26.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=8c4aebc0c1b75e3f7412dfc180745a0717fc30ec#8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +version = "27.0.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=1072b87894b7c3084f80bc9d2679e822435186ba#1072b87894b7c3084f80bc9d2679e822435186ba" dependencies = [ "android_system_properties", "arrayvec", @@ -7940,8 +7940,8 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "26.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=8c4aebc0c1b75e3f7412dfc180745a0717fc30ec#8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +version = "27.0.0" +source = "git+https://github.com/gfx-rs/wgpu?rev=1072b87894b7c3084f80bc9d2679e822435186ba#1072b87894b7c3084f80bc9d2679e822435186ba" dependencies = [ "bitflags 2.9.0", "bytemuck", diff --git a/gfx/wgpu_bindings/Cargo.toml b/gfx/wgpu_bindings/Cargo.toml @@ -17,7 +17,7 @@ default = [] [dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +rev = "1072b87894b7c3084f80bc9d2679e822435186ba" features = ["serde", "trace", "strict_asserts", "wgsl", "api_log_info"] # We want the wgpu-core Metal backend on macOS and iOS. @@ -25,32 +25,32 @@ features = ["serde", "trace", "strict_asserts", "wgsl", "api_log_info"] [target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +rev = "1072b87894b7c3084f80bc9d2679e822435186ba" features = ["metal"] # We want the wgpu-core Direct3D backends on Windows. [target.'cfg(windows)'.dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +rev = "1072b87894b7c3084f80bc9d2679e822435186ba" features = ["dx12"] # We want the wgpu-core Vulkan backend on Linux and Windows. [target.'cfg(any(windows, all(unix, not(any(target_os = "macos", target_os = "ios")))))'.dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +rev = "1072b87894b7c3084f80bc9d2679e822435186ba" features = ["vulkan"] [dependencies.wgt] package = "wgpu-types" git = "https://github.com/gfx-rs/wgpu" -rev = "8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +rev = "1072b87894b7c3084f80bc9d2679e822435186ba" [dependencies.wgh] package = "wgpu-hal" git = "https://github.com/gfx-rs/wgpu" -rev = "8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +rev = "1072b87894b7c3084f80bc9d2679e822435186ba" features = ["device_lost_panic", "internal_error_panic"] [target.'cfg(windows)'.dependencies] diff --git a/gfx/wgpu_bindings/moz.yaml b/gfx/wgpu_bindings/moz.yaml @@ -8,8 +8,8 @@ origin: name: wgpu description: A cross-platform pure-Rust graphics API, modeled on the WebGPU standard url: https://github.com/gfx-rs/wgpu - release: 8c4aebc0c1b75e3f7412dfc180745a0717fc30ec (2025-09-29T17:15:32Z). - revision: 8c4aebc0c1b75e3f7412dfc180745a0717fc30ec + release: 1072b87894b7c3084f80bc9d2679e822435186ba (2025-10-06T18:59:45Z). + revision: 1072b87894b7c3084f80bc9d2679e822435186ba license: ['MIT', 'Apache-2.0'] updatebot: diff --git a/gfx/wgpu_bindings/src/server.rs b/gfx/wgpu_bindings/src/server.rs @@ -25,6 +25,7 @@ use std::os::fd::{FromRawFd, IntoRawFd, OwnedFd, RawFd}; use std::os::raw::c_char; use std::ptr; use std::sync::atomic::{AtomicU32, Ordering}; +use std::time::Duration; #[allow(unused_imports)] use std::ffi::CString; @@ -197,7 +198,10 @@ pub extern "C" fn wgpu_server_device_poll( force_wait: bool, ) { let maintain = if force_wait { - wgt::PollType::Wait + wgt::PollType::Wait { + submission_index: None, + timeout: Some(Duration::from_secs(60)), + } } else { wgt::PollType::Poll }; diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml @@ -4308,7 +4308,12 @@ who = [ "Erich Gubler <erichdongubler@gmail.com>", ] criteria = "safe-to-deploy" -delta = "26.0.0 -> 26.0.0@git:8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +delta = "26.0.0 -> 27.0.0" + +[[audits.naga]] +who = "Andy Leiserson <aleiserson@mozilla.com>" +criteria = "safe-to-deploy" +delta = "27.0.0 -> 27.0.0@git:1072b87894b7c3084f80bc9d2679e822435186ba" importable = false [[audits.net2]] @@ -6829,7 +6834,12 @@ who = [ "Erich Gubler <erichdongubler@gmail.com>", ] criteria = "safe-to-deploy" -delta = "26.0.0 -> 26.0.0@git:8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +delta = "26.0.0 -> 27.0.0" + +[[audits.wgpu-core]] +who = "Andy Leiserson <aleiserson@mozilla.com>" +criteria = "safe-to-deploy" +delta = "27.0.0 -> 27.0.0@git:1072b87894b7c3084f80bc9d2679e822435186ba" importable = false [[audits.wgpu-core-deps-apple]] @@ -6850,7 +6860,12 @@ who = [ "Erich Gubler <erichdongubler@gmail.com>", ] criteria = "safe-to-deploy" -delta = "26.0.0 -> 26.0.0@git:8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +delta = "26.0.0 -> 27.0.0" + +[[audits.wgpu-core-deps-apple]] +who = "Andy Leiserson <aleiserson@mozilla.com>" +criteria = "safe-to-deploy" +delta = "27.0.0 -> 27.0.0@git:1072b87894b7c3084f80bc9d2679e822435186ba" importable = false [[audits.wgpu-core-deps-windows-linux-android]] @@ -6871,7 +6886,12 @@ who = [ "Erich Gubler <erichdongubler@gmail.com>", ] criteria = "safe-to-deploy" -delta = "26.0.0 -> 26.0.0@git:8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +delta = "26.0.0 -> 27.0.0" + +[[audits.wgpu-core-deps-windows-linux-android]] +who = "Andy Leiserson <aleiserson@mozilla.com>" +criteria = "safe-to-deploy" +delta = "27.0.0 -> 27.0.0@git:1072b87894b7c3084f80bc9d2679e822435186ba" importable = false [[audits.wgpu-hal]] @@ -6970,7 +6990,12 @@ who = [ "Erich Gubler <erichdongubler@gmail.com>", ] criteria = "safe-to-deploy" -delta = "26.0.0 -> 26.0.0@git:8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +delta = "26.0.0 -> 27.0.0" + +[[audits.wgpu-hal]] +who = "Andy Leiserson <aleiserson@mozilla.com>" +criteria = "safe-to-deploy" +delta = "27.0.0 -> 27.0.0@git:1072b87894b7c3084f80bc9d2679e822435186ba" importable = false [[audits.wgpu-types]] @@ -7064,7 +7089,12 @@ who = [ "Erich Gubler <erichdongubler@gmail.com>", ] criteria = "safe-to-deploy" -delta = "26.0.0 -> 26.0.0@git:8c4aebc0c1b75e3f7412dfc180745a0717fc30ec" +delta = "26.0.0 -> 27.0.0" + +[[audits.wgpu-types]] +who = "Andy Leiserson <aleiserson@mozilla.com>" +criteria = "safe-to-deploy" +delta = "27.0.0 -> 27.0.0@git:1072b87894b7c3084f80bc9d2679e822435186ba" importable = false [[audits.whatsys]] diff --git a/third_party/rust/naga/.cargo-checksum.json b/third_party/rust/naga/.cargo-checksum.json @@ -1 +1 @@ -{"files":{".cargo/config.toml":"7248ed3bed246d755d7bf9e5d7842d74b5c270ba6c29ad907872b55a67707ee0","CHANGELOG.md":"e60105d413f857e37dae165f819c47491d0a595183d3c9146b259d811b98b14f","Cargo.toml":"ef3bd3969b5ceecb78a246e2b87f61856257697b5b9fe25b95749567737ebe5c","README.md":"9550cbc1a518ad0f624aabe12c342c72f670705cb4a6878c0c87d172f1dacea0","build.rs":"e9098f486e87d91710c07d40f1b32716e5debfe94a0b5e53e37075b0ee997eec","src/arena/handle.rs":"897b2b0eebe0d9ae6a65bf2e8c210c8391924da06ef4c9e2a1225ad622400b6c","src/arena/handle_set.rs":"5c2a0bcf41d85c8173ac68b2d439552e79d0c3c0fe1ff3b1e1a48f0c83a4d48f","src/arena/handlevec.rs":"999de9d55d01213789072a63ad4ae9b4635e6653984d38db8b308d42bb1e7be3","src/arena/mod.rs":"e305d0521233791e181b4b6e7de70175a6bc730811063ea066c3bd3b73d12979","src/arena/range.rs":"b783969dfe32b4937593d871aa5190d561bdd79b6f615da53cb54346e300b9e2","src/arena/unique_arena.rs":"0e2d1c372a7c40b77793dc413b8920e86459e4656775a010f32974b4ad67a7fd","src/back/continue_forward.rs":"8194d238763caa6d5601ec3af56ba39a471c39945f43152b58d582092c99aefa","src/back/dot/mod.rs":"3f63a91f4afde7bedb3163489a347ccfa4b833e1fc7a0f33ccd8817efc7d303a","src/back/glsl/features.rs":"da2c8fd44b25a03ded4a0ff2e16c5039ca77398efa7918b0af5cf055b87365e3","src/back/glsl/keywords.rs":"fee8ed132e44bace54869a7c169a1ab7ed55db1bf590b4b1bce9efa4552e1dd7","src/back/glsl/mod.rs":"86337bb3041b34d4051862665b6858afaf9c1d5bac69ce8e24b81a47e878f0d0","src/back/hlsl/conv.rs":"3e1a78203e8c4efb75986db962cec150c7b2d99f7e48b400e702233de70e8aab","src/back/hlsl/help.rs":"12ddb9d08fe64eb34b66ae2166edffce5106a04ccef0b8cc0391a6fafd676270","src/back/hlsl/keywords.rs":"f7fc06c44d2f0d620bcf1a02b699c98c32059741b771a0d1ba5645d71b2f433f","src/back/hlsl/mod.rs":"e83d54a5741f6f5c89d5e8ac56015021ceb9077262c3b9c47f0bf1a7e35dbab5","src/back/hlsl/ray.rs":"259db3bc8fd5b8ec343fb8620c7cef50048cbea2b9db1f17dc8813ff848269df","src/back/hlsl/storage.rs":"5083d03b1f25fe767e45e0c507bd30424352fccd48484c081620712d3682aae8","src/back/hlsl/writer.rs":"4415d3ce654bae43ffa85d587cbb2b628cbcda387a8bf3237f1450248d423414","src/back/mod.rs":"c9a21fefbf383dca12a44cdf5201beba35384ab175eaa61da05f3a2af5310484","src/back/msl/keywords.rs":"b3e5d86d2586d553ff0fc6d91a25f0f4726c829d280a65dd2deeeb146cbbaf6d","src/back/msl/mod.rs":"f9d05aadd4d6cb6fea165c7e0b31c910b63d8102de60edfe283f8f56b8d4197f","src/back/msl/sampler.rs":"9be8805063258b0ff6b6db2e6856d59326caa18f6f64eaf413c5abfcbd1ad341","src/back/msl/writer.rs":"428b128d841dc62286da91105b282984f69a72b562516ceba9ef6f9b267ce91d","src/back/pipeline_constants.rs":"c2244d7e47a52c01ead61b4b6c7b3d0f29263ca308aca70f213137a0938c9aa4","src/back/spv/block.rs":"7fbe28ab6679070d8960201c97890f2f69d80dc1105eae1a992a5b82f4490d35","src/back/spv/f16_polyfill.rs":"44ce07ef497dff13a9152eb9bc5936c486ef53de6d476da6b0a39396b0e6abdb","src/back/spv/helpers.rs":"6ec40b59d9f0a77e1569a2610cad1f1ca1e02bc78871ce9322e70ecdda0b3eb9","src/back/spv/image.rs":"5fb7e36ffb4236168809978ed8634a4024a910ca5a233833d89e39f9768880d3","src/back/spv/index.rs":"f4cc05768672658780f159ff8280bcf30af081af7a735338789b31f662ad1889","src/back/spv/instructions.rs":"556f1f30ae11c3e01910c354a36ba314280932e3a2928584b06eb0812a2cb81a","src/back/spv/layout.rs":"28ba27739d7c9fa4b9e363ffc112cdc39c5e8ec4236d71a7260039d1bd8321d7","src/back/spv/mod.rs":"86b21da8ec035ab9b27d73b943bb7e7978e8c3539402b5c3d2160e9e171dc81d","src/back/spv/ray.rs":"a31fd66e9497ffd19437bdab53427705b7f28f555ab215c8f0a4c2156283413e","src/back/spv/recyclable.rs":"8ea397d4d8d3f2cd5fbc8e0be94d136c2d6e0f0e8a4b5eb567dcc1be104c9ae5","src/back/spv/selection.rs":"aea4bb4da7c0fa4e907b8f1e185433a48f2f0eb7ded97fdd3225beb3f6c1f249","src/back/spv/subgroup.rs":"68fc3e3153022a0a8bddec20ad9221820678f02921878318e571d5aa2ca13cee","src/back/spv/writer.rs":"e6faaa9ebad5b1a7640a83ab473fda8dacf292ff22844cba5355f3901ef00c83","src/back/wgsl/mod.rs":"1b04d66e8dba609513d43431d1f0ee9a209fbfd8453862d6e8a7aa41f8910997","src/back/wgsl/polyfill/inverse/inverse_2x2_f16.wgsl":"9e7635d04724822931c805a8b35e76d6d294d447e4ea8d57b308ce45609bf736","src/back/wgsl/polyfill/inverse/inverse_2x2_f32.wgsl":"340d491abde07f93996391796db65a5f88402663eaf6b9d2d894d11cb8cf8b6d","src/back/wgsl/polyfill/inverse/inverse_3x3_f16.wgsl":"4f13a1a4b3e1b51f0f992d13c55cf854a80917554a4d13c997819fa1fe776ba4","src/back/wgsl/polyfill/inverse/inverse_3x3_f32.wgsl":"9b16d2f4b9e433c8e03a0cb46ab48508f3bf7e185ce1b4e26106c47e81a677cb","src/back/wgsl/polyfill/inverse/inverse_4x4_f16.wgsl":"86d39d1db5d03995b404950279db7f1698ad9622982aa319fdedb7532673235b","src/back/wgsl/polyfill/inverse/inverse_4x4_f32.wgsl":"dc510525ac2dce66389a8c4bf8b2f31f0dedd9e6debdbe4ffd939a0a7fc533d3","src/back/wgsl/polyfill/mod.rs":"f4ab3c9b9cdc36d16dab00d0f7f07d6e6beda0e27a36053e9b5ffeeb7ca18edc","src/back/wgsl/writer.rs":"d6ed811147b79ed74c2600bfc5485c2821dabb08b70982a4191a6a6c3d2c1a38","src/common/diagnostic_debug.rs":"8c73fe605e5b6162d0485e264287ac50c061cf581743feebbffe1474d1d3516d","src/common/diagnostic_display.rs":"46f1ff8a32179703ef0bcdb704db9f6e6e8b4eaad6cadf94577eeab3d8a16cd1","src/common/mod.rs":"289231637b08407fbe2cc976a1bab4eac4c9e66042c6618aff3af44baaff3e26","src/common/predeclared.rs":"a5f42d55f2e13d8f5a8213d4a881e9155c3994c4054d43edcf7bd7bb7c868ccf","src/common/wgsl/diagnostics.rs":"4fec985b4c5cc6dfae4dd78bd7c850adc88a1761d7b6691de0355ea49300e532","src/common/wgsl/mod.rs":"d944915ff692c96aecca67737bccc2d5d9eb68f475166a2744f29a025f4a4c93","src/common/wgsl/to_wgsl.rs":"215212963faf83c5c931c760b858c6c8b11cc582dda08f8627aefa83b6425135","src/common/wgsl/types.rs":"390323fecff390100fafcc2cb1e5cf349c7aac9da8065e9aec52a56718ab5534","src/compact/expressions.rs":"12653b34c7c7d68ce7d14a9c15e59c469fda4931425d14600fbaa99226af735f","src/compact/functions.rs":"27a0d33e5a8f02778b518c6e0db5a5d41f77a93b64eadef54b6cf0914067d7ad","src/compact/handle_set_map.rs":"b4688bff174487f2da4a1a946af07c80b6ba59f60dc84184c6a30039354209e8","src/compact/mod.rs":"7627b587f9ada7771728d0248113213ef0750e1ab9290e2a1a312a693c574568","src/compact/statements.rs":"85b2faf6a4caaebc0372e773ca3be2904db5bb0e691ac7ea845720ef0864a22b","src/compact/types.rs":"a955ce5e336afa8d26f750c14d4a6638dcee6b0b5e0fcd7c446d8f88a35d8277","src/diagnostic_filter.rs":"5e3d14a774974148b7d2918617ba3e2c3a07493e0f90485a7de9db86e05a7cd0","src/error.rs":"46180b139b60cca1e46a8848f9eecc5cab8220a022e4c6f8ce297d1d968e87e7","src/front/atomic_upgrade.rs":"86ce9f9628d92a1a09802cb534bb4310236b83f2799c921b81c687f009c589be","src/front/glsl/ast.rs":"15a4f7c56aa44529373c7aa2a266d1582b7775833de6adc6b8f5bfd54d85a669","src/front/glsl/builtins.rs":"76821d82b315ab6812e8411908885f0687ad98abfe0ea9f007e2deefed10cc0a","src/front/glsl/context.rs":"8314e1ed58b509788adbda82a8f4c7fbd2767522d0352ca1ebd11d86b4bfd10d","src/front/glsl/error.rs":"f445297e0357919e2345ae15f2d23c58d36a64c9a666f1cf1b09cbcfd6e4627a","src/front/glsl/functions.rs":"fb76ba4922898700d6b156d4f214566e60931954219d22ff2ff47689b3666613","src/front/glsl/lex.rs":"24706628b600b5ce435cef464c84196ac5d58013122a97e7b59d509cc25f85a2","src/front/glsl/mod.rs":"f4f1cce6911935b305c415afe3c15f84c7824a3bb828a5d15e6f9ae4b0316df0","src/front/glsl/offset.rs":"66bd524a2d17dc44f431430dcbbb74a771fdab43c9581e88bb1123e6cfec516b","src/front/glsl/parser.rs":"6a13b4737f53b09d5bbc0add01f8fc1b2633b7957f0318374edfe0b903939912","src/front/glsl/parser/declarations.rs":"9949649fba43636d03eaf7f7560d3bb3743b19c7204fb95859283ee84b5dd239","src/front/glsl/parser/expressions.rs":"e056fbdde3bc7c8473acbd485aecd14120d3dbefbabd813ddbc5cfedaf605889","src/front/glsl/parser/functions.rs":"302e24e06190aff555131c33f9a80b15df6a0390d6c776f888a44d5ef7df697e","src/front/glsl/parser/types.rs":"ee242048a65cd3709e16b70a3882e9296e615327480f2ad779e3d2523778181f","src/front/glsl/parser_tests.rs":"6834f0d595f4077266054e5da43e4f1b60e5c6780611ab0f530d9964cc62fad3","src/front/glsl/token.rs":"83780c0c1954ef216896c9d8a48e412b357783e00ccd4909a7a249935c742629","src/front/glsl/types.rs":"286395d82707a09d28b4c1a8bade917822478e53d8eb277ceec5fa9e71649ba2","src/front/glsl/variables.rs":"75d3e203a07befd011f5693ab8f2789e4f06821badb4974043cc4ee10bd5c6c9","src/front/interpolator.rs":"4d6c6639c01fba78ffb8d0af298094cc2d6bb33f8054dad4379fd9fe3af5a4c8","src/front/mod.rs":"fddd2be54ff44b52743ac8eb4a19e153a8a169af8e65d9061a9b9fc9857f64db","src/front/spv/convert.rs":"16b8281fc1ae75dc62a02893db2c5b6d8994166e78b3b6b8cac7a01e0da4eae2","src/front/spv/error.rs":"44cf0f9c41cc20dc858e96dbcf0766a030d47a8d2e577d1c3273be0d2d53d307","src/front/spv/function.rs":"26323687512d18c74c16e82b3aca3f5a65f1eae8a0e7e218b195f0051fe3012e","src/front/spv/image.rs":"c39ffdb19a19861cec009de39431a879be99bdd4d9d08c0ecdef397c2f3f6fa5","src/front/spv/mod.rs":"5e54af3cc50ed33bc573c5fb758b68be5a077d57f0f059899be2b67b30ad0313","src/front/spv/null.rs":"ee20287365e025e8bcc91f29df930ff8b63cb6d7f26db0b1789d54de614a7353","src/front/type_gen.rs":"111832af89a268ae3206d2ba2159b9b9d64224ed09375a29eec142725ea7fb34","src/front/wgsl/error.rs":"60c7113a98f5642dc31ff23d20d8f533ee3fa80e88246a6e277615e7b9efa0f1","src/front/wgsl/index.rs":"1db1bee7074a3fe9668d2c2ba0bd5053d6443f4ea19a56e4cccf2aa2bc8a33c9","src/front/wgsl/lower/construction.rs":"24e0eb2181974651ab9d13497cceaa126ee816c38848e9dbbd88f1e7b5f5c53c","src/front/wgsl/lower/conversion.rs":"d4a66519b38caa208b011846cdc3459e8a0b6bae8027235692b30188ae88e110","src/front/wgsl/lower/mod.rs":"5473b4607ac7f89ab10cdd2bfeb59a47b52dd591ba19d85c8795d45ab4ca72de","src/front/wgsl/mod.rs":"967a045c9b5adb3904d33a273e5e284aee123f3db1bf52a0a9d83b676d568f88","src/front/wgsl/parse/ast.rs":"ca893c1cfbd76df5d4faaa43baad988c59129dd1f756b1637e7e329600c42ac5","src/front/wgsl/parse/conv.rs":"d76de215e3fea00776b5a0e8f979c074ac35a2f16892522c1a6bfe5a051c438a","src/front/wgsl/parse/directive.rs":"c96f33cef2c1d8a374fe1b3827538f7db33d6b7811a6e0914d29de80b8963257","src/front/wgsl/parse/directive/enable_extension.rs":"0618459b51fbbcf36f90d10119ed13b60f21d8b6c7c53f18b21daad4b190fa15","src/front/wgsl/parse/directive/language_extension.rs":"f82ae1c1f1d82e9e27e336b6a6975e21c7c08e5f1700f28f8d351b7f03a1621c","src/front/wgsl/parse/lexer.rs":"2194d38da1dc803ffb850202023350a07b6a3b80af68857d772c76ea49bc6344","src/front/wgsl/parse/mod.rs":"560870a843951191dcb422be6e083f16c6e0109b97fa77d225bf588124822f57","src/front/wgsl/parse/number.rs":"7af92c71031e4c4258e9d8d323f7ee99a2fd4be3b6975ab9b8b53b95431845d9","src/front/wgsl/tests.rs":"05bf78f672e54ca335ed8be59ddfb1504289ee7444258cf2d30823687a418864","src/ir/block.rs":"b562a83a4fa53002d2ca21b4553ed8e2fa77f61e687f24fd4bbd90f1597b2a9d","src/ir/mod.rs":"2933daabb5e22d023682ad5368d9c65a136000ad85f48a29104a562326a91a40","src/keywords/mod.rs":"47a6fde012bf7d1e70f0fac7762f6a8e7dca6b9bbb99e2cada773c61527cfbfe","src/keywords/wgsl.rs":"7236f0e751066712970b4f3dc9942b41d678c6a6e202c7da834f4f398e7cc657","src/lib.rs":"5d90151615cb3914bf4044a09d47e2292d1f647c26185cc49dd65c9d7c066f18","src/non_max_u32.rs":"b2d81efda0e1e5ace9e2fad990a7adf628f1dec63273b069c93d5423eb78350d","src/path_like.rs":"2740c65fc61e490b24066cdefc8ae2822650bd0c9323f83054e18005a28dfc48","src/proc/constant_evaluator.rs":"7a39635e81f2fd2e56acd8b845d50667dbfc3b107c4529b3feed283001b1d1fd","src/proc/emitter.rs":"39ac886c651e2ad33c06a676a7e4826a0e93de0af660c01e8e4b1f7406742f88","src/proc/index.rs":"17c22571251996583b724af87c7d238f584cd39104256c8e90de7b18e737bb09","src/proc/keyword_set.rs":"928414d2b79ee48735d532e03d3f0a58427c3f27a2a0c6938425749b00943784","src/proc/layouter.rs":"78a91c2c9406c0319a344cc8ec9eda33ed7812ef4a4e73e25f7709afde580381","src/proc/mod.rs":"3674ef30174a6110bad461a4208f16ed208b7347f1a8c58654b87e14558cf99c","src/proc/namer.rs":"b2318d41113b7bfdb99eda3693ca32fb3057cbd8e49db8a669ba18062a5a4992","src/proc/overloads/any_overload_set.rs":"877cd637d979abc08caa021dabb9821a79fc9109eb97024a230bcfac82830388","src/proc/overloads/constructor_set.rs":"b702f866ac1472bcc075bd0bede450388123b5899431934fd60a29865498c68b","src/proc/overloads/list.rs":"7cfbf66a3619fdd66f9acf652d56cd2a9451f7905c5d4637cdb9f77f4ef2af51","src/proc/overloads/mathfunction.rs":"d5801d64d1a6fd10e0da30a7c0ac7368954654e5f3d0b022fa806ff9a2ab61b8","src/proc/overloads/mod.rs":"0e96479cbd0ec9fa8200a5e88c16a22ee7ed2021ecf6f80a7e4ded69cad5239f","src/proc/overloads/one_bits_iter.rs":"6b98769fdec777d311248084f13958c5cca44659d0928603ece8618387ea58b2","src/proc/overloads/regular.rs":"73d64fab79019d589cb0595d0ef606fd6af732c42a418c60c81da4c96e113c89","src/proc/overloads/rule.rs":"b7f87d5ca0cffdaa8ee0db0110918f5a726359fd8a72bc638d8ce27a4b0ae3b2","src/proc/overloads/scalar_set.rs":"3729bc754dbf29a2337379ecb46568fdc3149a48074a354244da91e3d9cb5cef","src/proc/overloads/utils.rs":"4b5e02f20611bd24c6849e1f2c01aad4b271388407e8eb866d5a34983538ef8f","src/proc/terminator.rs":"61df2289408be24f69b6c23da469ca3f63f913568f8c314427c3571b826632dd","src/proc/type_methods.rs":"fef829acb2da08a22a2e30dc356e7a8b9149ef13582525bea0143c687a1c57dd","src/proc/typifier.rs":"a31a97013838e43d31cef69b032680187ac709e13db0bf8fc85f4e8e11f236cf","src/racy_lock.rs":"6c541795172660e02bac86c3808cf7346b4791910febc0d289bf93d36271d416","src/span.rs":"38b673c3c75b2e04948530cded77f5f166866ee917ae2f13feba768a2525ec30","src/valid/analyzer.rs":"9e0479bee5d2ac15704f69d8852400cd1bcd35bc01c056cb9a510db6dec63a39","src/valid/compose.rs":"46eeed8c4d5b66fc043ddb701074bd864a9fdd24e38b88e282046230acefb747","src/valid/expression.rs":"f8d9e3e20d21ddb9ade2e793d590631bcf4e7c135804a0130302d57212521f6f","src/valid/function.rs":"e97ddecd0369f192fd25c59aeeef3bdd04f86858f5ed625dc384c2d00030ebbc","src/valid/handles.rs":"59f96f672f57e253006f330a3b9a540564dfb462a543e5cad6d20231de29538f","src/valid/interface.rs":"d6bddc8c722ed6e36371bc7796922a524f443f870a06b8f874f2aa49bde682d3","src/valid/mod.rs":"83a51f1e5d30dc1b3118218e21d1ac87d4c16ebb962fd71d50534d258fef8d7d","src/valid/type.rs":"65d2c02000e8038d9adab6ea94741fea61844d0626d7fa4389c54dcaa594704b"},"package":null} -\ No newline at end of file +{"files":{".cargo/config.toml":"7248ed3bed246d755d7bf9e5d7842d74b5c270ba6c29ad907872b55a67707ee0","CHANGELOG.md":"e60105d413f857e37dae165f819c47491d0a595183d3c9146b259d811b98b14f","Cargo.toml":"16c70c2205a241af1934fa82693b68dd82b53777e349465be5b79991b8374848","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"9550cbc1a518ad0f624aabe12c342c72f670705cb4a6878c0c87d172f1dacea0","build.rs":"e9098f486e87d91710c07d40f1b32716e5debfe94a0b5e53e37075b0ee997eec","src/arena/handle.rs":"897b2b0eebe0d9ae6a65bf2e8c210c8391924da06ef4c9e2a1225ad622400b6c","src/arena/handle_set.rs":"5c2a0bcf41d85c8173ac68b2d439552e79d0c3c0fe1ff3b1e1a48f0c83a4d48f","src/arena/handlevec.rs":"999de9d55d01213789072a63ad4ae9b4635e6653984d38db8b308d42bb1e7be3","src/arena/mod.rs":"e305d0521233791e181b4b6e7de70175a6bc730811063ea066c3bd3b73d12979","src/arena/range.rs":"b783969dfe32b4937593d871aa5190d561bdd79b6f615da53cb54346e300b9e2","src/arena/unique_arena.rs":"0e2d1c372a7c40b77793dc413b8920e86459e4656775a010f32974b4ad67a7fd","src/back/continue_forward.rs":"8194d238763caa6d5601ec3af56ba39a471c39945f43152b58d582092c99aefa","src/back/dot/mod.rs":"3f63a91f4afde7bedb3163489a347ccfa4b833e1fc7a0f33ccd8817efc7d303a","src/back/glsl/features.rs":"da2c8fd44b25a03ded4a0ff2e16c5039ca77398efa7918b0af5cf055b87365e3","src/back/glsl/keywords.rs":"fee8ed132e44bace54869a7c169a1ab7ed55db1bf590b4b1bce9efa4552e1dd7","src/back/glsl/mod.rs":"86337bb3041b34d4051862665b6858afaf9c1d5bac69ce8e24b81a47e878f0d0","src/back/hlsl/conv.rs":"3e1a78203e8c4efb75986db962cec150c7b2d99f7e48b400e702233de70e8aab","src/back/hlsl/help.rs":"12ddb9d08fe64eb34b66ae2166edffce5106a04ccef0b8cc0391a6fafd676270","src/back/hlsl/keywords.rs":"f7fc06c44d2f0d620bcf1a02b699c98c32059741b771a0d1ba5645d71b2f433f","src/back/hlsl/mod.rs":"e83d54a5741f6f5c89d5e8ac56015021ceb9077262c3b9c47f0bf1a7e35dbab5","src/back/hlsl/ray.rs":"259db3bc8fd5b8ec343fb8620c7cef50048cbea2b9db1f17dc8813ff848269df","src/back/hlsl/storage.rs":"5083d03b1f25fe767e45e0c507bd30424352fccd48484c081620712d3682aae8","src/back/hlsl/writer.rs":"4415d3ce654bae43ffa85d587cbb2b628cbcda387a8bf3237f1450248d423414","src/back/mod.rs":"c9a21fefbf383dca12a44cdf5201beba35384ab175eaa61da05f3a2af5310484","src/back/msl/keywords.rs":"b3e5d86d2586d553ff0fc6d91a25f0f4726c829d280a65dd2deeeb146cbbaf6d","src/back/msl/mod.rs":"f9d05aadd4d6cb6fea165c7e0b31c910b63d8102de60edfe283f8f56b8d4197f","src/back/msl/sampler.rs":"9be8805063258b0ff6b6db2e6856d59326caa18f6f64eaf413c5abfcbd1ad341","src/back/msl/writer.rs":"0d9bacb72fdee1768ff9a6b02e799607331788b557d44ad8d4c4f00e67c822a2","src/back/pipeline_constants.rs":"c2244d7e47a52c01ead61b4b6c7b3d0f29263ca308aca70f213137a0938c9aa4","src/back/spv/block.rs":"7fbe28ab6679070d8960201c97890f2f69d80dc1105eae1a992a5b82f4490d35","src/back/spv/f16_polyfill.rs":"44ce07ef497dff13a9152eb9bc5936c486ef53de6d476da6b0a39396b0e6abdb","src/back/spv/helpers.rs":"6ec40b59d9f0a77e1569a2610cad1f1ca1e02bc78871ce9322e70ecdda0b3eb9","src/back/spv/image.rs":"5fb7e36ffb4236168809978ed8634a4024a910ca5a233833d89e39f9768880d3","src/back/spv/index.rs":"f4cc05768672658780f159ff8280bcf30af081af7a735338789b31f662ad1889","src/back/spv/instructions.rs":"556f1f30ae11c3e01910c354a36ba314280932e3a2928584b06eb0812a2cb81a","src/back/spv/layout.rs":"28ba27739d7c9fa4b9e363ffc112cdc39c5e8ec4236d71a7260039d1bd8321d7","src/back/spv/mod.rs":"20ab263c44ce41ebc39b5fe120116cd42b8543fa0471e60b8344e39c15834fe1","src/back/spv/ray.rs":"a31fd66e9497ffd19437bdab53427705b7f28f555ab215c8f0a4c2156283413e","src/back/spv/recyclable.rs":"8ea397d4d8d3f2cd5fbc8e0be94d136c2d6e0f0e8a4b5eb567dcc1be104c9ae5","src/back/spv/selection.rs":"aea4bb4da7c0fa4e907b8f1e185433a48f2f0eb7ded97fdd3225beb3f6c1f249","src/back/spv/subgroup.rs":"68fc3e3153022a0a8bddec20ad9221820678f02921878318e571d5aa2ca13cee","src/back/spv/writer.rs":"18f103c0d5c728036b5cb133677a301f51fe9702abb0b975ae618365b304158f","src/back/wgsl/mod.rs":"1b04d66e8dba609513d43431d1f0ee9a209fbfd8453862d6e8a7aa41f8910997","src/back/wgsl/polyfill/inverse/inverse_2x2_f16.wgsl":"9e7635d04724822931c805a8b35e76d6d294d447e4ea8d57b308ce45609bf736","src/back/wgsl/polyfill/inverse/inverse_2x2_f32.wgsl":"340d491abde07f93996391796db65a5f88402663eaf6b9d2d894d11cb8cf8b6d","src/back/wgsl/polyfill/inverse/inverse_3x3_f16.wgsl":"4f13a1a4b3e1b51f0f992d13c55cf854a80917554a4d13c997819fa1fe776ba4","src/back/wgsl/polyfill/inverse/inverse_3x3_f32.wgsl":"9b16d2f4b9e433c8e03a0cb46ab48508f3bf7e185ce1b4e26106c47e81a677cb","src/back/wgsl/polyfill/inverse/inverse_4x4_f16.wgsl":"86d39d1db5d03995b404950279db7f1698ad9622982aa319fdedb7532673235b","src/back/wgsl/polyfill/inverse/inverse_4x4_f32.wgsl":"dc510525ac2dce66389a8c4bf8b2f31f0dedd9e6debdbe4ffd939a0a7fc533d3","src/back/wgsl/polyfill/mod.rs":"f4ab3c9b9cdc36d16dab00d0f7f07d6e6beda0e27a36053e9b5ffeeb7ca18edc","src/back/wgsl/writer.rs":"d6ed811147b79ed74c2600bfc5485c2821dabb08b70982a4191a6a6c3d2c1a38","src/common/diagnostic_debug.rs":"8c73fe605e5b6162d0485e264287ac50c061cf581743feebbffe1474d1d3516d","src/common/diagnostic_display.rs":"46f1ff8a32179703ef0bcdb704db9f6e6e8b4eaad6cadf94577eeab3d8a16cd1","src/common/mod.rs":"289231637b08407fbe2cc976a1bab4eac4c9e66042c6618aff3af44baaff3e26","src/common/predeclared.rs":"a5f42d55f2e13d8f5a8213d4a881e9155c3994c4054d43edcf7bd7bb7c868ccf","src/common/wgsl/diagnostics.rs":"4fec985b4c5cc6dfae4dd78bd7c850adc88a1761d7b6691de0355ea49300e532","src/common/wgsl/mod.rs":"d944915ff692c96aecca67737bccc2d5d9eb68f475166a2744f29a025f4a4c93","src/common/wgsl/to_wgsl.rs":"215212963faf83c5c931c760b858c6c8b11cc582dda08f8627aefa83b6425135","src/common/wgsl/types.rs":"390323fecff390100fafcc2cb1e5cf349c7aac9da8065e9aec52a56718ab5534","src/compact/expressions.rs":"12653b34c7c7d68ce7d14a9c15e59c469fda4931425d14600fbaa99226af735f","src/compact/functions.rs":"27a0d33e5a8f02778b518c6e0db5a5d41f77a93b64eadef54b6cf0914067d7ad","src/compact/handle_set_map.rs":"b4688bff174487f2da4a1a946af07c80b6ba59f60dc84184c6a30039354209e8","src/compact/mod.rs":"7627b587f9ada7771728d0248113213ef0750e1ab9290e2a1a312a693c574568","src/compact/statements.rs":"85b2faf6a4caaebc0372e773ca3be2904db5bb0e691ac7ea845720ef0864a22b","src/compact/types.rs":"a955ce5e336afa8d26f750c14d4a6638dcee6b0b5e0fcd7c446d8f88a35d8277","src/diagnostic_filter.rs":"5e3d14a774974148b7d2918617ba3e2c3a07493e0f90485a7de9db86e05a7cd0","src/error.rs":"46180b139b60cca1e46a8848f9eecc5cab8220a022e4c6f8ce297d1d968e87e7","src/front/atomic_upgrade.rs":"86ce9f9628d92a1a09802cb534bb4310236b83f2799c921b81c687f009c589be","src/front/glsl/ast.rs":"15a4f7c56aa44529373c7aa2a266d1582b7775833de6adc6b8f5bfd54d85a669","src/front/glsl/builtins.rs":"76821d82b315ab6812e8411908885f0687ad98abfe0ea9f007e2deefed10cc0a","src/front/glsl/context.rs":"8314e1ed58b509788adbda82a8f4c7fbd2767522d0352ca1ebd11d86b4bfd10d","src/front/glsl/error.rs":"f445297e0357919e2345ae15f2d23c58d36a64c9a666f1cf1b09cbcfd6e4627a","src/front/glsl/functions.rs":"fb76ba4922898700d6b156d4f214566e60931954219d22ff2ff47689b3666613","src/front/glsl/lex.rs":"24706628b600b5ce435cef464c84196ac5d58013122a97e7b59d509cc25f85a2","src/front/glsl/mod.rs":"f4f1cce6911935b305c415afe3c15f84c7824a3bb828a5d15e6f9ae4b0316df0","src/front/glsl/offset.rs":"66bd524a2d17dc44f431430dcbbb74a771fdab43c9581e88bb1123e6cfec516b","src/front/glsl/parser.rs":"6a13b4737f53b09d5bbc0add01f8fc1b2633b7957f0318374edfe0b903939912","src/front/glsl/parser/declarations.rs":"9949649fba43636d03eaf7f7560d3bb3743b19c7204fb95859283ee84b5dd239","src/front/glsl/parser/expressions.rs":"e056fbdde3bc7c8473acbd485aecd14120d3dbefbabd813ddbc5cfedaf605889","src/front/glsl/parser/functions.rs":"302e24e06190aff555131c33f9a80b15df6a0390d6c776f888a44d5ef7df697e","src/front/glsl/parser/types.rs":"ee242048a65cd3709e16b70a3882e9296e615327480f2ad779e3d2523778181f","src/front/glsl/parser_tests.rs":"6834f0d595f4077266054e5da43e4f1b60e5c6780611ab0f530d9964cc62fad3","src/front/glsl/token.rs":"83780c0c1954ef216896c9d8a48e412b357783e00ccd4909a7a249935c742629","src/front/glsl/types.rs":"286395d82707a09d28b4c1a8bade917822478e53d8eb277ceec5fa9e71649ba2","src/front/glsl/variables.rs":"75d3e203a07befd011f5693ab8f2789e4f06821badb4974043cc4ee10bd5c6c9","src/front/interpolator.rs":"4d6c6639c01fba78ffb8d0af298094cc2d6bb33f8054dad4379fd9fe3af5a4c8","src/front/mod.rs":"fddd2be54ff44b52743ac8eb4a19e153a8a169af8e65d9061a9b9fc9857f64db","src/front/spv/convert.rs":"16b8281fc1ae75dc62a02893db2c5b6d8994166e78b3b6b8cac7a01e0da4eae2","src/front/spv/error.rs":"d08e1d65716ccc0f2a94a1285a1d034fa4840dc79ca60a5ec7481697bdec74d1","src/front/spv/function.rs":"26323687512d18c74c16e82b3aca3f5a65f1eae8a0e7e218b195f0051fe3012e","src/front/spv/image.rs":"c39ffdb19a19861cec009de39431a879be99bdd4d9d08c0ecdef397c2f3f6fa5","src/front/spv/mod.rs":"ed64895ebb2050f9b401f9f98a69f1ddf80a361d8ac98e1bda780b6e1c02086b","src/front/spv/null.rs":"ee20287365e025e8bcc91f29df930ff8b63cb6d7f26db0b1789d54de614a7353","src/front/type_gen.rs":"111832af89a268ae3206d2ba2159b9b9d64224ed09375a29eec142725ea7fb34","src/front/wgsl/error.rs":"60c7113a98f5642dc31ff23d20d8f533ee3fa80e88246a6e277615e7b9efa0f1","src/front/wgsl/index.rs":"1db1bee7074a3fe9668d2c2ba0bd5053d6443f4ea19a56e4cccf2aa2bc8a33c9","src/front/wgsl/lower/construction.rs":"24e0eb2181974651ab9d13497cceaa126ee816c38848e9dbbd88f1e7b5f5c53c","src/front/wgsl/lower/conversion.rs":"d4a66519b38caa208b011846cdc3459e8a0b6bae8027235692b30188ae88e110","src/front/wgsl/lower/mod.rs":"5473b4607ac7f89ab10cdd2bfeb59a47b52dd591ba19d85c8795d45ab4ca72de","src/front/wgsl/mod.rs":"95d38b0a49833638a06ac35c6df30c8fd3dcfa5494871e6d166f7e70f54b8fa3","src/front/wgsl/parse/ast.rs":"ca893c1cfbd76df5d4faaa43baad988c59129dd1f756b1637e7e329600c42ac5","src/front/wgsl/parse/conv.rs":"d76de215e3fea00776b5a0e8f979c074ac35a2f16892522c1a6bfe5a051c438a","src/front/wgsl/parse/directive.rs":"c96f33cef2c1d8a374fe1b3827538f7db33d6b7811a6e0914d29de80b8963257","src/front/wgsl/parse/directive/enable_extension.rs":"99aaeb71f33363a6a57acdbb94ffedcace3ab2ebba2d7841e9444f8ce0fca749","src/front/wgsl/parse/directive/language_extension.rs":"f82ae1c1f1d82e9e27e336b6a6975e21c7c08e5f1700f28f8d351b7f03a1621c","src/front/wgsl/parse/lexer.rs":"2194d38da1dc803ffb850202023350a07b6a3b80af68857d772c76ea49bc6344","src/front/wgsl/parse/mod.rs":"560870a843951191dcb422be6e083f16c6e0109b97fa77d225bf588124822f57","src/front/wgsl/parse/number.rs":"7af92c71031e4c4258e9d8d323f7ee99a2fd4be3b6975ab9b8b53b95431845d9","src/front/wgsl/tests.rs":"05bf78f672e54ca335ed8be59ddfb1504289ee7444258cf2d30823687a418864","src/ir/block.rs":"b562a83a4fa53002d2ca21b4553ed8e2fa77f61e687f24fd4bbd90f1597b2a9d","src/ir/mod.rs":"2933daabb5e22d023682ad5368d9c65a136000ad85f48a29104a562326a91a40","src/keywords/mod.rs":"47a6fde012bf7d1e70f0fac7762f6a8e7dca6b9bbb99e2cada773c61527cfbfe","src/keywords/wgsl.rs":"7236f0e751066712970b4f3dc9942b41d678c6a6e202c7da834f4f398e7cc657","src/lib.rs":"1e40237435eebd4a91fd5c9b2e8a58664ebd1c40a0d27c0c5220047f0221704a","src/non_max_u32.rs":"b2d81efda0e1e5ace9e2fad990a7adf628f1dec63273b069c93d5423eb78350d","src/proc/constant_evaluator.rs":"7a39635e81f2fd2e56acd8b845d50667dbfc3b107c4529b3feed283001b1d1fd","src/proc/emitter.rs":"39ac886c651e2ad33c06a676a7e4826a0e93de0af660c01e8e4b1f7406742f88","src/proc/index.rs":"17c22571251996583b724af87c7d238f584cd39104256c8e90de7b18e737bb09","src/proc/keyword_set.rs":"928414d2b79ee48735d532e03d3f0a58427c3f27a2a0c6938425749b00943784","src/proc/layouter.rs":"78a91c2c9406c0319a344cc8ec9eda33ed7812ef4a4e73e25f7709afde580381","src/proc/mod.rs":"3674ef30174a6110bad461a4208f16ed208b7347f1a8c58654b87e14558cf99c","src/proc/namer.rs":"f2c11c6d29d4a991fc9a08cf4531acdd309b6a9fef1c06198cc08193dc03a01d","src/proc/overloads/any_overload_set.rs":"877cd637d979abc08caa021dabb9821a79fc9109eb97024a230bcfac82830388","src/proc/overloads/constructor_set.rs":"b702f866ac1472bcc075bd0bede450388123b5899431934fd60a29865498c68b","src/proc/overloads/list.rs":"7cfbf66a3619fdd66f9acf652d56cd2a9451f7905c5d4637cdb9f77f4ef2af51","src/proc/overloads/mathfunction.rs":"d5801d64d1a6fd10e0da30a7c0ac7368954654e5f3d0b022fa806ff9a2ab61b8","src/proc/overloads/mod.rs":"0e96479cbd0ec9fa8200a5e88c16a22ee7ed2021ecf6f80a7e4ded69cad5239f","src/proc/overloads/one_bits_iter.rs":"6b98769fdec777d311248084f13958c5cca44659d0928603ece8618387ea58b2","src/proc/overloads/regular.rs":"73d64fab79019d589cb0595d0ef606fd6af732c42a418c60c81da4c96e113c89","src/proc/overloads/rule.rs":"b7f87d5ca0cffdaa8ee0db0110918f5a726359fd8a72bc638d8ce27a4b0ae3b2","src/proc/overloads/scalar_set.rs":"3729bc754dbf29a2337379ecb46568fdc3149a48074a354244da91e3d9cb5cef","src/proc/overloads/utils.rs":"4b5e02f20611bd24c6849e1f2c01aad4b271388407e8eb866d5a34983538ef8f","src/proc/terminator.rs":"61df2289408be24f69b6c23da469ca3f63f913568f8c314427c3571b826632dd","src/proc/type_methods.rs":"fef829acb2da08a22a2e30dc356e7a8b9149ef13582525bea0143c687a1c57dd","src/proc/typifier.rs":"a31a97013838e43d31cef69b032680187ac709e13db0bf8fc85f4e8e11f236cf","src/racy_lock.rs":"6c541795172660e02bac86c3808cf7346b4791910febc0d289bf93d36271d416","src/span.rs":"e91190a7cd116fb811a295dcf9cd796a25b886cc5d35c3756771e3bc61768455","src/valid/analyzer.rs":"9e0479bee5d2ac15704f69d8852400cd1bcd35bc01c056cb9a510db6dec63a39","src/valid/compose.rs":"46eeed8c4d5b66fc043ddb701074bd864a9fdd24e38b88e282046230acefb747","src/valid/expression.rs":"f8d9e3e20d21ddb9ade2e793d590631bcf4e7c135804a0130302d57212521f6f","src/valid/function.rs":"e97ddecd0369f192fd25c59aeeef3bdd04f86858f5ed625dc384c2d00030ebbc","src/valid/handles.rs":"59f96f672f57e253006f330a3b9a540564dfb462a543e5cad6d20231de29538f","src/valid/interface.rs":"d6bddc8c722ed6e36371bc7796922a524f443f870a06b8f874f2aa49bde682d3","src/valid/mod.rs":"83a51f1e5d30dc1b3118218e21d1ac87d4c16ebb962fd71d50534d258fef8d7d","src/valid/type.rs":"65d2c02000e8038d9adab6ea94741fea61844d0626d7fa4389c54dcaa594704b"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/naga/Cargo.toml b/third_party/rust/naga/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.82.0" name = "naga" -version = "26.0.0" +version = "27.0.0" authors = ["gfx-rs developers"] build = "build.rs" exclude = [ @@ -210,7 +210,6 @@ path = "hlsl-snapshots" version = "0.14" [dev-dependencies.naga-test] -version = "26.0.0" path = "../naga-test" [dev-dependencies.ron] diff --git a/third_party/rust/naga/LICENSE.APACHE b/third_party/rust/naga/LICENSE.APACHE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/third_party/rust/naga/LICENSE.MIT b/third_party/rust/naga/LICENSE.MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 The gfx-rs developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/rust/naga/src/back/msl/writer.rs b/third_party/rust/naga/src/back/msl/writer.rs @@ -6904,16 +6904,25 @@ template <typename A> // Write the entry point function's name, and begin its argument list. writeln!(self.out, "{em_str} {result_type_name} {fun_name}(")?; + let mut is_first_argument = true; + let mut separator = || { + if is_first_argument { + is_first_argument = false; + ' ' + } else { + ',' + } + }; // If we have produced a struct holding the `EntryPoint`'s // `Function`'s arguments' varyings, pass that struct first. if has_varyings { writeln!( self.out, - " {stage_in_name} {varyings_member_name} [[stage_in]]" + "{} {stage_in_name} {varyings_member_name} [[stage_in]]", + separator() )?; - is_first_argument = false; } let mut local_invocation_id = None; @@ -6953,13 +6962,7 @@ template <typename A> }; let resolved = options.resolve_local_binding(binding, in_mode)?; - let separator = if is_first_argument { - is_first_argument = false; - ' ' - } else { - ',' - }; - write!(self.out, "{separator} {ty_name} {name}")?; + write!(self.out, "{} {ty_name} {name}", separator())?; resolved.try_fmt(&mut self.out)?; writeln!(self.out)?; } @@ -6968,15 +6971,9 @@ template <typename A> self.need_workgroup_variables_initialization(options, ep, module, fun_info); if need_workgroup_variables_initialization && local_invocation_id.is_none() { - let separator = if is_first_argument { - is_first_argument = false; - ' ' - } else { - ',' - }; writeln!( self.out, - "{separator} {NAMESPACE}::uint3 __local_invocation_id [[thread_position_in_threadgroup]]" + "{} {NAMESPACE}::uint3 __local_invocation_id [[thread_position_in_threadgroup]]", separator() )?; } @@ -7123,15 +7120,6 @@ template <typename A> } } - let mut separator = || { - if is_first_argument { - is_first_argument = false; - ' ' - } else { - ',' - } - }; - match module.types[var.ty].inner { crate::TypeInner::Image { class: crate::ImageClass::External, @@ -7203,21 +7191,13 @@ template <typename A> } if do_vertex_pulling { - let mut separator = if is_first_argument { - is_first_argument = false; - ' ' - } else { - ',' - }; - if needs_vertex_id && v_existing_id.is_none() { // Write the [[vertex_id]] argument. - writeln!(self.out, "{separator} uint {v_id} [[vertex_id]]")?; - separator = ','; + writeln!(self.out, "{} uint {v_id} [[vertex_id]]", separator())?; } if needs_instance_id && i_existing_id.is_none() { - writeln!(self.out, "{separator} uint {i_id} [[instance_id]]")?; + writeln!(self.out, "{} uint {i_id} [[instance_id]]", separator())?; } // Iterate vbm_resolved, output one argument for every vertex buffer, @@ -7228,7 +7208,8 @@ template <typename A> let param_name = &vbm.param_name; writeln!( self.out, - ", const device {ty_name}* {param_name} [[buffer({id})]]" + "{} const device {ty_name}* {param_name} [[buffer({id})]]", + separator() )?; } } @@ -7238,10 +7219,10 @@ template <typename A> if needs_buffer_sizes { // this is checked earlier let resolved = options.resolve_sizes_buffer(ep).unwrap(); - let separator = if is_first_argument { ' ' } else { ',' }; write!( self.out, - "{separator} constant _mslBufferSizes& _buffer_sizes", + "{} constant _mslBufferSizes& _buffer_sizes", + separator() )?; resolved.try_fmt(&mut self.out)?; writeln!(self.out)?; diff --git a/third_party/rust/naga/src/back/spv/mod.rs b/third_party/rust/naga/src/back/spv/mod.rs @@ -26,7 +26,6 @@ use spirv::Word; use thiserror::Error; use crate::arena::{Handle, HandleVec}; -use crate::path_like::PathLikeRef; use crate::proc::{BoundsCheckPolicies, TypeResolution}; #[derive(Clone)] @@ -96,7 +95,7 @@ impl IdGenerator { #[derive(Debug, Clone)] pub struct DebugInfo<'a> { pub source_code: &'a str, - pub file_name: PathLikeRef<'a>, + pub file_name: &'a str, pub language: SourceLanguage, } diff --git a/third_party/rust/naga/src/back/spv/writer.rs b/third_party/rust/naga/src/back/spv/writer.rs @@ -14,7 +14,6 @@ use super::{ use crate::{ arena::{Handle, HandleVec, UniqueArena}, back::spv::{BindingInfo, WrappedFunction}, - path_like::PathLike, proc::{Alignment, TypeResolution}, valid::{FunctionInfo, ModuleInfo}, }; @@ -2519,10 +2518,8 @@ impl Writer { if self.flags.contains(WriterFlags::DEBUG) { if let Some(debug_info) = debug_info.as_ref() { let source_file_id = self.id_gen.next(); - self.debugs.push(Instruction::string( - &debug_info.file_name.to_string_lossy(), - source_file_id, - )); + self.debugs + .push(Instruction::string(debug_info.file_name, source_file_id)); debug_info_inner = Some(DebugInfoInner { source_code: debug_info.source_code, diff --git a/third_party/rust/naga/src/front/spv/error.rs b/third_party/rust/naga/src/front/spv/error.rs @@ -107,6 +107,8 @@ pub enum Error { InvalidGlobalVar(crate::Expression), #[error("invalid image/sampler expression {0:?}")] InvalidImageExpression(crate::Expression), + #[error("image write without format is not currently supported. See https://github.com/gfx-rs/wgpu/issues/6797")] + InvalidImageWriteType, #[error("invalid image base type {0:?}")] InvalidImageBaseType(Handle<crate::Type>), #[error("invalid image {0:?}")] diff --git a/third_party/rust/naga/src/front/spv/mod.rs b/third_party/rust/naga/src/front/spv/mod.rs @@ -44,7 +44,6 @@ use petgraph::graphmap::GraphMap; use super::atomic_upgrade::Upgrades; use crate::{ arena::{Arena, Handle, UniqueArena}, - path_like::PathLikeOwned, proc::{Alignment, Layouter}, FastHashMap, FastHashSet, FastIndexMap, }; @@ -384,7 +383,7 @@ pub struct Options { pub adjust_coordinate_space: bool, /// Only allow shaders with the known set of capabilities. pub strict_capabilities: bool, - pub block_ctx_dump_prefix: Option<PathLikeOwned>, + pub block_ctx_dump_prefix: Option<String>, } impl Default for Options { @@ -5636,7 +5635,7 @@ impl<I: Iterator<Item = u32>> Frontend<I> { let is_depth = self.next()?; let is_array = self.next()? != 0; let is_msaa = self.next()? != 0; - let _is_sampled = self.next()?; + let is_sampled = self.next()?; let format = self.next()?; let dim = map_image_dim(dim)?; @@ -5671,6 +5670,8 @@ impl<I: Iterator<Item = u32>> Frontend<I> { format: map_image_format(format)?, access: crate::StorageAccess::default(), } + } else if is_sampled == 2 { + return Err(Error::InvalidImageWriteType); } else { crate::ImageClass::Sampled { kind, diff --git a/third_party/rust/naga/src/front/wgsl/mod.rs b/third_party/rust/naga/src/front/wgsl/mod.rs @@ -11,7 +11,9 @@ mod parse; #[cfg(test)] mod tests; -pub use parse::directive::enable_extension::{EnableExtension, ImplementedEnableExtension}; +pub use parse::directive::enable_extension::{ + EnableExtension, ImplementedEnableExtension, UnimplementedEnableExtension, +}; pub use crate::front::wgsl::error::ParseError; pub use crate::front::wgsl::parse::directive::language_extension::{ diff --git a/third_party/rust/naga/src/front/wgsl/parse/directive/enable_extension.rs b/third_party/rust/naga/src/front/wgsl/parse/directive/enable_extension.rs @@ -71,6 +71,7 @@ impl EnableExtension { const CLIP_DISTANCES: &'static str = "clip_distances"; const DUAL_SOURCE_BLENDING: &'static str = "dual_source_blending"; const SUBGROUPS: &'static str = "subgroups"; + const PRIMITIVE_INDEX: &'static str = "primitive_index"; /// Convert from a sentinel word in WGSL into its associated [`EnableExtension`], if possible. pub(crate) fn from_ident(word: &str, span: Span) -> Result<'_, Self> { @@ -81,6 +82,9 @@ impl EnableExtension { Self::Implemented(ImplementedEnableExtension::DualSourceBlending) } Self::SUBGROUPS => Self::Unimplemented(UnimplementedEnableExtension::Subgroups), + Self::PRIMITIVE_INDEX => { + Self::Unimplemented(UnimplementedEnableExtension::PrimitiveIndex) + } _ => return Err(Box::new(Error::UnknownEnableExtension(span, word))), }) } @@ -95,6 +99,7 @@ impl EnableExtension { }, Self::Unimplemented(kind) => match kind { UnimplementedEnableExtension::Subgroups => Self::SUBGROUPS, + UnimplementedEnableExtension::PrimitiveIndex => Self::PRIMITIVE_INDEX, }, } } @@ -132,12 +137,19 @@ pub enum UnimplementedEnableExtension { /// /// [`enable subgroups;`]: https://www.w3.org/TR/WGSL/#extension-subgroups Subgroups, + /// Enables the `@builtin(primitive_index)` attribute in WGSL. + /// + /// In the WGSL standard, this corresponds to [`enable primitive-index;`]. + /// + /// [`enable primitive-index;`]: https://www.w3.org/TR/WGSL/#extension-primitive_index + PrimitiveIndex, } impl UnimplementedEnableExtension { pub(crate) const fn tracking_issue_num(self) -> u16 { match self { Self::Subgroups => 5555, + Self::PrimitiveIndex => 8236, } } } diff --git a/third_party/rust/naga/src/lib.rs b/third_party/rust/naga/src/lib.rs @@ -116,7 +116,6 @@ pub mod front; pub mod ir; pub mod keywords; mod non_max_u32; -mod path_like; pub mod proc; mod racy_lock; mod span; diff --git a/third_party/rust/naga/src/path_like.rs b/third_party/rust/naga/src/path_like.rs @@ -1,238 +0,0 @@ -//! [`PathLike`] and its supporting items, such as [`PathLikeRef`] and [`PathLikeOwned`]. -//! This trait and these types provide a common denominator API for `Path`-like -//! types and operations in `std` and `no_std` contexts. -//! -//! # Usage -//! -//! - Store a [`PathLikeRef<'a>`] instead of a `&'a Path` in structs and enums. -//! - Store a [`PathLikeOwned`] instead of a `PathBuf` in structs and enums. -//! - Accept `impl PathLike` instead of `impl AsRef<Path>` for methods which directly -//! work with `Path`-like values. -//! - Accept `Into<PathLikeRef<'_>>` and/or `Into<PathLikeOwned>` in methods which -//! will store a `Path`-like value. - -use alloc::{borrow::Cow, string::String}; -use core::fmt; - -mod sealed { - /// Seal for [`PathLike`](super::PathLike). - pub trait Sealed {} -} - -/// A trait that abstracts over types accepted for conversion to the most -/// featureful path representation possible; that is: -/// -/// - When `no_std` is active, this is implemented for: -/// - [`str`], -/// - [`String`], -/// - [`Cow<'_, str>`], and -/// - [`PathLikeRef`] -/// - Otherwise, types that implement `AsRef<Path>` (to extract a `&Path`). -/// -/// This type is used as the type bounds for various diagnostic rendering methods, i.e., -/// [`WithSpan::emit_to_string_with_path`](crate::span::WithSpan::emit_to_string_with_path). -pub trait PathLike: sealed::Sealed { - fn to_string_lossy(&self) -> Cow<'_, str>; -} - -/// Abstraction over `Path` which falls back to [`str`] for `no_std` compatibility. -/// -/// This type should be used for _storing_ a reference to a [`PathLike`]. -/// Functions which accept a `Path` should prefer to use `impl PathLike` -/// or `impl Into<PathLikeRef<'_>>`. -#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct PathLikeRef<'a>(&'a path_like_impls::PathInner); - -impl fmt::Debug for PathLikeRef<'_> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Debug::fmt(self.0, f) - } -} - -impl<'a> From<&'a str> for PathLikeRef<'a> { - fn from(value: &'a str) -> Self { - cfg_if::cfg_if! { - if #[cfg(std)] { - Self(std::path::Path::new(value)) - } else { - Self(value) - } - } - } -} - -/// Abstraction over `PathBuf` which falls back to [`String`] for `no_std` compatibility. -/// -/// This type should be used for _storing_ an owned [`PathLike`]. -/// Functions which accept a `PathBuf` should prefer to use `impl PathLike` -/// or `impl Into<PathLikeOwned>`. -#[derive(Clone, Default, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct PathLikeOwned(<path_like_impls::PathInner as alloc::borrow::ToOwned>::Owned); - -impl fmt::Debug for PathLikeOwned { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Debug::fmt(&self.0, f) - } -} - -impl From<String> for PathLikeOwned { - fn from(value: String) -> Self { - cfg_if::cfg_if! { - if #[cfg(std)] { - Self(value.into()) - } else { - Self(value) - } - } - } -} - -#[cfg(std)] -mod path_like_impls { - //! Implementations of [`PathLike`] within an `std` context. - //! - //! Since `std` is available, we blanket implement [`PathLike`] for all types - //! implementing [`AsRef<Path>`]. - - use alloc::borrow::Cow; - use std::path::Path; - - use super::{sealed, PathLike}; - - pub(super) type PathInner = Path; - - impl<T: AsRef<Path> + ?Sized> PathLike for T { - fn to_string_lossy(&self) -> Cow<'_, str> { - self.as_ref().to_string_lossy() - } - } - - impl<T: AsRef<Path> + ?Sized> sealed::Sealed for T {} -} - -#[cfg(no_std)] -mod path_like_impls { - //! Implementations of [`PathLike`] within a `no_std` context. - //! - //! Without `std`, we cannot blanket implement on [`AsRef<Path>`]. - //! Instead, we manually implement for a subset of types which are known - //! to implement [`AsRef<Path>`] when `std` is available. - //! - //! Implementing [`PathLike`] for a type which does _not_ implement [`AsRef<Path>`] - //! with `std` enabled breaks the additive requirement of Cargo features. - - use alloc::{borrow::Cow, string::String}; - use core::borrow::Borrow; - - use super::{sealed, PathLike, PathLikeOwned, PathLikeRef}; - - pub(super) type PathInner = str; - - impl PathLike for String { - fn to_string_lossy(&self) -> Cow<'_, str> { - Cow::Borrowed(self.as_str()) - } - } - - impl sealed::Sealed for String {} - - impl PathLike for str { - fn to_string_lossy(&self) -> Cow<'_, str> { - Cow::Borrowed(self) - } - } - - impl sealed::Sealed for str {} - - impl PathLike for Cow<'_, str> { - fn to_string_lossy(&self) -> Cow<'_, str> { - Cow::Borrowed(self.borrow()) - } - } - - impl sealed::Sealed for Cow<'_, str> {} - - impl<T: PathLike + ?Sized> PathLike for &T { - fn to_string_lossy(&self) -> Cow<'_, str> { - (*self).to_string_lossy() - } - } - - impl<T: PathLike + ?Sized> sealed::Sealed for &T {} - - impl PathLike for PathLikeRef<'_> { - fn to_string_lossy(&self) -> Cow<'_, str> { - Cow::Borrowed(self.0) - } - } - - impl sealed::Sealed for PathLikeRef<'_> {} - - impl PathLike for PathLikeOwned { - fn to_string_lossy(&self) -> Cow<'_, str> { - Cow::Borrowed(self.0.borrow()) - } - } - - impl sealed::Sealed for PathLikeOwned {} -} - -#[cfg(std)] -mod path_like_owned_std_impls { - //! Traits which can only be implemented for [`PathLikeOwned`] with `std`. - - use std::path::{Path, PathBuf}; - - use super::PathLikeOwned; - - impl AsRef<Path> for PathLikeOwned { - fn as_ref(&self) -> &Path { - self.0.as_ref() - } - } - - impl From<PathBuf> for PathLikeOwned { - fn from(value: PathBuf) -> Self { - Self(value) - } - } - - impl From<PathLikeOwned> for PathBuf { - fn from(value: PathLikeOwned) -> Self { - value.0 - } - } - - impl AsRef<PathBuf> for PathLikeOwned { - fn as_ref(&self) -> &PathBuf { - &self.0 - } - } -} - -#[cfg(std)] -mod path_like_ref_std_impls { - //! Traits which can only be implemented for [`PathLikeRef`] with `std`. - - use std::path::Path; - - use super::PathLikeRef; - - impl AsRef<Path> for PathLikeRef<'_> { - fn as_ref(&self) -> &Path { - self.0 - } - } - - impl<'a> From<&'a Path> for PathLikeRef<'a> { - fn from(value: &'a Path) -> Self { - Self(value) - } - } - - impl<'a> From<PathLikeRef<'a>> for &'a Path { - fn from(value: PathLikeRef<'a>) -> Self { - value.0 - } - } -} diff --git a/third_party/rust/naga/src/proc/namer.rs b/third_party/rust/naga/src/proc/namer.rs @@ -118,20 +118,37 @@ impl Namer { { Cow::Borrowed(string) } else { - let mut filtered = string - .chars() - .filter(|&c| c.is_ascii_alphanumeric() || c == '_') - .fold(String::new(), |mut s, c| { - if s.ends_with('_') && c == '_' { - return s; - } + let mut filtered = string.chars().fold(String::new(), |mut s, c| { + let c = match c { + // Make several common characters in C++-ish types become snake case + // separators. + ':' | '<' | '>' | ',' => '_', + c => c, + }; + let had_underscore_at_end = s.ends_with('_'); + if had_underscore_at_end && c == '_' { + return s; + } + if c.is_ascii_alphanumeric() || c == '_' { s.push(c); - s - }); + } else { + use core::fmt::Write as _; + if !s.is_empty() && !had_underscore_at_end { + s.push('_'); + } + write!(s, "u{:04x}_", c as u32).unwrap(); + } + s + }); let stripped_len = filtered.trim_end_matches(SEPARATOR).len(); filtered.truncate(stripped_len); if filtered.is_empty() { filtered.push_str("unnamed"); + } else if filtered.starts_with(|c: char| c.is_ascii_digit()) { + unreachable!( + "internal error: invalid identifier starting with ASCII digit {:?}", + filtered.chars().nth(0) + ) } Cow::Owned(filtered) }; diff --git a/third_party/rust/naga/src/span.rs b/third_party/rust/naga/src/span.rs @@ -6,7 +6,7 @@ use alloc::{ }; use core::{error::Error, fmt, ops::Range}; -use crate::{error::replace_control_chars, path_like::PathLike, Arena, Handle, UniqueArena}; +use crate::{error::replace_control_chars, Arena, Handle, UniqueArena}; /// A source code span, used for error reporting. #[derive(Clone, Copy, Debug, PartialEq, Default)] @@ -283,14 +283,12 @@ impl<E> WithSpan<E> { /// Emits a summary of the error to standard error stream. #[cfg(feature = "stderr")] - pub fn emit_to_stderr_with_path<P>(&self, source: &str, path: P) + pub fn emit_to_stderr_with_path(&self, source: &str, path: &str) where E: Error, - P: PathLike, { use codespan_reporting::{files, term}; - let path = path.to_string_lossy(); let files = files::SimpleFile::new(path, replace_control_chars(source)); let config = term::Config::default(); @@ -315,14 +313,12 @@ impl<E> WithSpan<E> { } /// Emits a summary of the error to a string. - pub fn emit_to_string_with_path<P>(&self, source: &str, path: P) -> String + pub fn emit_to_string_with_path(&self, source: &str, path: &str) -> String where E: Error, - P: PathLike, { use codespan_reporting::{files, term}; - let path = path.to_string_lossy(); let files = files::SimpleFile::new(path, replace_control_chars(source)); let config = term::Config::default(); diff --git a/third_party/rust/wgpu-core-deps-apple/.cargo-checksum.json b/third_party/rust/wgpu-core-deps-apple/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"7a8c769f2eb7ea6b5a24f430264b36c878413198a87a8b9faa65002d7be95f96","README.md":"729fdd16cb87ad318ed2bfc70593363aa324c804c825ffea7c42670dff681255","src/lib.rs":"54ef7b7d746c6b26b0ee65552cc969d69c6204d0d38b3678c40bffbfbc5a146c"},"package":null} -\ No newline at end of file +{"files":{"Cargo.toml":"6c96bef3ae237c938710184702abb14d8ffb8b7d02a3af5d63a0a388879e7ecf","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"729fdd16cb87ad318ed2bfc70593363aa324c804c825ffea7c42670dff681255","src/lib.rs":"54ef7b7d746c6b26b0ee65552cc969d69c6204d0d38b3678c40bffbfbc5a146c"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/wgpu-core-deps-apple/Cargo.toml b/third_party/rust/wgpu-core-deps-apple/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.76" name = "wgpu-core-deps-apple" -version = "26.0.0" +version = "27.0.0" authors = ["gfx-rs developers"] build = false autolib = false @@ -44,5 +44,5 @@ name = "wgpu_core_deps_apple" path = "src/lib.rs" [target.'cfg(target_vendor = "apple")'.dependencies.wgpu-hal] -version = "26.0.0" +version = "27.0.0" path = "../../../wgpu-hal" diff --git a/third_party/rust/wgpu-core-deps-apple/LICENSE.APACHE b/third_party/rust/wgpu-core-deps-apple/LICENSE.APACHE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/third_party/rust/wgpu-core-deps-apple/LICENSE.MIT b/third_party/rust/wgpu-core-deps-apple/LICENSE.MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 The gfx-rs developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/rust/wgpu-core-deps-windows-linux-android/.cargo-checksum.json b/third_party/rust/wgpu-core-deps-windows-linux-android/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"0830990748013fbda96fe8a5b1c58be9fafd2c6680f025f50082be3817c10f90","README.md":"38086a02e134ac959bd061f1161c141a848a1b05a6bf31874035908217ad3eed","src/lib.rs":"a99034037e9c9ddf912f44c05b98af2c11e0ed0d09bb7cb69577826f46062ab9"},"package":null} -\ No newline at end of file +{"files":{"Cargo.toml":"28ba3f78bab861041fa7ba583eff4967fce611252ca87d9eb364df7822f9cdae","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"38086a02e134ac959bd061f1161c141a848a1b05a6bf31874035908217ad3eed","src/lib.rs":"a99034037e9c9ddf912f44c05b98af2c11e0ed0d09bb7cb69577826f46062ab9"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/wgpu-core-deps-windows-linux-android/Cargo.toml b/third_party/rust/wgpu-core-deps-windows-linux-android/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.76" name = "wgpu-core-deps-windows-linux-android" -version = "26.0.0" +version = "27.0.0" authors = ["gfx-rs developers"] build = false autolib = false @@ -39,5 +39,5 @@ name = "wgpu_core_deps_windows_linux_android" path = "src/lib.rs" [target.'cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd"))'.dependencies.wgpu-hal] -version = "26.0.0" +version = "27.0.0" path = "../../../wgpu-hal" diff --git a/third_party/rust/wgpu-core-deps-windows-linux-android/LICENSE.APACHE b/third_party/rust/wgpu-core-deps-windows-linux-android/LICENSE.APACHE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/third_party/rust/wgpu-core-deps-windows-linux-android/LICENSE.MIT b/third_party/rust/wgpu-core-deps-windows-linux-android/LICENSE.MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 The gfx-rs developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/rust/wgpu-core/.cargo-checksum.json b/third_party/rust/wgpu-core/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"aece940ca117dac54de0c9eaa557f82ee2b200e11741c798256711dd96837dd3","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"c7fea58d1cfe49634cd92e54fc10a9d871f4b275321a4cd8c09e449122caaeb4","build.rs":"5e3619e28faeac243cbae1a5f739ad15035dc9e1254957b64fd1deed6f393c8a","src/as_hal.rs":"473936fe2c26563f9fea71bbafdb7eb3d8ff5f4fe9376052d18db3ea8e2908ff","src/binding_model.rs":"9943f0814b697f446ee374343a980e49ca2f8fae1bb1955ba889eb0bee4b1f3b","src/command/allocator.rs":"386cb6e60bd332a881dbbe57ff66a0fa83f35e3ee924559f1689418ac6c7273a","src/command/bind.rs":"c88aa87bf3052fe0993b79ff047339fac4557ead85973f4a37bf236fba401222","src/command/bundle.rs":"d078bb708cbdea42ebebc5c5a510bff3cad982b67be3682ed5956bfb212114f1","src/command/clear.rs":"932afc6e1858f8c93d3ecf721215a0bc584a8e613444641a98f5cb98e3061b4b","src/command/compute.rs":"3c2d8e6cf2ff53c94f7d25f42d1a74ea656ea6122f8022d90d0f43b0f82a29ed","src/command/compute_command.rs":"18aa0b8e389a5d345243b876b1abbacfc998a19d23069e092183fa7be10fa0ab","src/command/draw.rs":"e7bf195d33683a19b077e64d181cb27b8acde724732ac9af3c94d83c3f21559e","src/command/encoder.rs":"7655f8c248120f39e37f3ad0f84bd9816df78a75657790ab12d5aba144fef65f","src/command/encoder_command.rs":"4e1d28040d9330a803644e377bd7675ec503cd0396c31394658dc67d71a4b50f","src/command/ffi.rs":"1fb626579a7726a32d571a17a14f2656def0c170f4f6297e7e51772a6fc5a566","src/command/memory_init.rs":"f68a796c4262d261620cf85e5762e267dee013f4ef5d61f67fcb173b59048983","src/command/mod.rs":"8fa942354820b79c78040e4da0fd6e7f4423486f691f4545490c79857904f106","src/command/pass.rs":"5ee6e7a68329b716b5a5231b27794682b5b17a6ee2c237f658bb9b71dd2efeca","src/command/query.rs":"fa7cb51fbbaa50febe0e61c473891d4131125c290180a05d49b60f5138931fb4","src/command/ray_tracing.rs":"4768a6dba5f737d3550a90ca35fe75c39fe241fc2d41c3795eb329139c5e6ec6","src/command/render.rs":"4a5409a4ffe48252bd44061c96baa948cc8cd13912e2cc5dec6e40c8d7c259b6","src/command/render_command.rs":"3f1bc2fec688fa3f33052867eeb2e194020a643f7d16f6111b8b128594c38570","src/command/timestamp_writes.rs":"da06fb07b8d0917be3e7fb9212d0ffc6b16526e1c1df617213ef354c3e1fb446","src/command/transfer.rs":"28fdca903934d7e2e5d12d28f952ad3e9ef804c8452f9d020831b5e6aca7e19d","src/command/transition_resources.rs":"753cb02adfee4758404c403d19fd76e6c8de77de01435a2cbe2f60bdbe44bde1","src/conv.rs":"c3354002c8c69994692c923d3772744a0f634b760ca73d79634041190d06453a","src/device/bgl.rs":"fcb1d53b692970912781748379df675268981c97352872abf2e7bb0b1ebdd533","src/device/global.rs":"234b463b95382909ce9b514464d4618a38229751ddd3cb9caca4176b89b44a5b","src/device/life.rs":"44bd34cf5ab1c1a21729f2188df6d2ca0238f11c5f723380c8a4a16fbbd90b88","src/device/mod.rs":"729d9aeddb9c2bbc134e495526b9923c03e11cbb06055e0d3f81e36b20c874da","src/device/queue.rs":"e4d93d857cb7cf1d43365d73d0711ebdbedcf4052b72135fc203bb5a8197ef3a","src/device/ray_tracing.rs":"cb13bc0caf54113ca12ce5db147af339474ec4b2423f2556600b5ea936b408cc","src/device/resource.rs":"6c45f76cad7ea4b43c5dde578a4b3eb6e85626db9d4430d62b3798927e88b657","src/device/trace.rs":"39e52ee5b220eb6a13d949582f1f87756189648bf2f05ea7148b0a67b73c226f","src/error.rs":"4f07a0b09b30b2d6cbc855d0091d724000f492018af3b41e80befbeccf2a6f4e","src/global.rs":"bd76f9552496996f9eba6502e5caf1bcd6ca33bf3d5008795b5335f74e56fd55","src/hash_utils.rs":"9f57a627fe3f00659391670141df62f68d67922c7b186f2a9a5958ab16fb576f","src/hub.rs":"308c53e05134e5a48294c61511e43077adfdb5c334237de2016ed4537d562382","src/id.rs":"134974aa304d1d0eb7349438b9660519886c513f01d5868cd4331d2bc78f2cb8","src/identity.rs":"712ccda267eb602655c53672a94346aa4c9f88c0044ae6edcd658a814c9a50cf","src/indirect_validation/dispatch.rs":"b15d926e0de732c3c39c965f168f99598fa508ca4b0883061993d99dd644b31a","src/indirect_validation/draw.rs":"6d8338f37f406c6e2cf89713e8493f167e1d8e999737f2976de298810c2ada76","src/indirect_validation/mod.rs":"79466e4f9a59386e833958b3537beed6ffb6a7ee62aaabcf35382c2683998e43","src/indirect_validation/utils.rs":"e6a3b636dd71ff6b01d5abd5a589a0136fb30aa1d517a43f45cf2e5ad54da245","src/indirect_validation/validate_draw.wgsl":"fa7bba5f28c6c181f2d55ecfe386a5e5cd276bcb3c36aa7f963f43c535a9bf9a","src/init_tracker/buffer.rs":"6167a400ab271ba857f1c507e60a46fbd318c185aff87eecf7eb05f7f09b6963","src/init_tracker/mod.rs":"aa87df3428e3b23507377c71eae92dc1dd9f5d5374aa0b03906fb81507fc6ce6","src/init_tracker/texture.rs":"ffdc67d4be23bcd48b22945de94ac0ea8ee571f91eb6d00323b9afe6fa91eef3","src/instance.rs":"ea7f8e9e1dff27c19e6ddfd0842d001e057e2cb856b1ec1443ab717ac13de276","src/lib.rs":"b5f2a8cf9e37476f9730e0dfc0b55160114d0c969620105bad732e3f374bf9eb","src/lock/mod.rs":"8d3ae3f8d004d7f7d8a3aefe9f30b35669cb8e2409f5fba27b1fcb116b2429c4","src/lock/observing.rs":"f2df071927940e34e808d718c890caea0c3b70c56c2499c98efbddc052eda46f","src/lock/rank.rs":"238e6a97c58ee1a804863c8011bb257864301170344d18596bdaab09f3f74b54","src/lock/ranked.rs":"a95d6bf7f2ef510047a4c33687076beccf38a0148aac3261bd29fa7555e3f488","src/lock/vanilla.rs":"ca8156d4c981473d437db1056487a44c714760d685819eaff8cf82fb0098a608","src/pipeline.rs":"b7aae46522bc6843b0f47dac7e73e33197c76e9724cfb4be3b949bfa27a99fb1","src/pipeline_cache.rs":"256bf8df58d8ab904afddc132349d03e4f659b6bd6882bc8df582dcfd05ae3d5","src/pool.rs":"e11bfdc73a66321d26715465fa74657dcd26a9b856b80b8369b4aac2132a4295","src/present.rs":"bf0c6c47e58496199955013170f41cbf10755c1572583d5af4b88686c28ffb66","src/ray_tracing.rs":"a4261ccd978e8fab1fef48a168d2d33f8a9f2dae89f285ecd9ec8a6d0894fa3b","src/registry.rs":"ecd457e8956e065050bb9c63ca404505e56ffed6d540b3f14f745d7c4010b205","src/resource.rs":"729534761eccf965758ed82a21c7ffd357d7378c9216b25d0649185ce714b8b2","src/scratch.rs":"ea5c40e4d18a12f09cc1038f2dcdddb69b13e99275ac987d826658229a39b326","src/snatch.rs":"bf422810afd952894e365cd397763d42d6365ce3c5a5b4c1170566432f462939","src/storage.rs":"29427dea035d03abc8b8abdebecc5591378f1366088d1468ab2beb8536e7d675","src/timestamp_normalization/common.wgsl":"9f65aef0526ff9dde945fae70cef064ad961b0aee4291759ae82974cd2ead0a7","src/timestamp_normalization/mod.rs":"89444ad79900c12c2dc44780f1525cd0554d6ed1d9038938dd0075e8173ae59d","src/timestamp_normalization/timestamp_normalization.wgsl":"4b2202b965e4c67482d03a546ac38c72a602d79ed9a60e6f7217393c49afad49","src/track/blas.rs":"18c7b5b89a60ab49bbc0f4f8b85a24502c1d968714ef4c586095e119848d902a","src/track/buffer.rs":"1ab5310367606fc74f0791733ea5ba2e09acc92ff7f4f4773f66bcfb3138c52f","src/track/metadata.rs":"04b8bcf8ded7c7c805d9336cfc874da9d8de7d12d99f7525f0540780a1dffc45","src/track/mod.rs":"a66ce12a4dc430a63bd6a3e05818695e407cfb079b320a5cd000bd1b45ceb6a3","src/track/range.rs":"2688b05a0c6e8510ff6ba3a9623e8b83f433a05ba743129928c56c93d9a9c233","src/track/stateless.rs":"3db699f5f48a319fa07fb16cdf51e1623d6ecac7a476467ee366e014ea665b89","src/track/texture.rs":"754c54f3051c8c780f3904c8c9213fc91ea1838ee14301731dd069a98c8c6695","src/validation.rs":"39a38eb27487d1510d883253539c68a45ecb1cfb8f2afb65ac065b84108b7b55","src/weak_vec.rs":"a4193add5912b91226a3155cc613365b7fafdf2e7929d21d68bc19d149696e85"},"package":null} -\ No newline at end of file +{"files":{"Cargo.toml":"14fc314e094524575e12773badac343c650bfd0c983d828539a4ac887a64bbf6","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","build.rs":"5e3619e28faeac243cbae1a5f739ad15035dc9e1254957b64fd1deed6f393c8a","src/as_hal.rs":"473936fe2c26563f9fea71bbafdb7eb3d8ff5f4fe9376052d18db3ea8e2908ff","src/binding_model.rs":"9943f0814b697f446ee374343a980e49ca2f8fae1bb1955ba889eb0bee4b1f3b","src/command/allocator.rs":"386cb6e60bd332a881dbbe57ff66a0fa83f35e3ee924559f1689418ac6c7273a","src/command/bind.rs":"c88aa87bf3052fe0993b79ff047339fac4557ead85973f4a37bf236fba401222","src/command/bundle.rs":"d078bb708cbdea42ebebc5c5a510bff3cad982b67be3682ed5956bfb212114f1","src/command/clear.rs":"932afc6e1858f8c93d3ecf721215a0bc584a8e613444641a98f5cb98e3061b4b","src/command/compute.rs":"3c2d8e6cf2ff53c94f7d25f42d1a74ea656ea6122f8022d90d0f43b0f82a29ed","src/command/compute_command.rs":"18aa0b8e389a5d345243b876b1abbacfc998a19d23069e092183fa7be10fa0ab","src/command/draw.rs":"e7bf195d33683a19b077e64d181cb27b8acde724732ac9af3c94d83c3f21559e","src/command/encoder.rs":"7655f8c248120f39e37f3ad0f84bd9816df78a75657790ab12d5aba144fef65f","src/command/encoder_command.rs":"4e1d28040d9330a803644e377bd7675ec503cd0396c31394658dc67d71a4b50f","src/command/ffi.rs":"1fb626579a7726a32d571a17a14f2656def0c170f4f6297e7e51772a6fc5a566","src/command/memory_init.rs":"f68a796c4262d261620cf85e5762e267dee013f4ef5d61f67fcb173b59048983","src/command/mod.rs":"8fa942354820b79c78040e4da0fd6e7f4423486f691f4545490c79857904f106","src/command/pass.rs":"5ee6e7a68329b716b5a5231b27794682b5b17a6ee2c237f658bb9b71dd2efeca","src/command/query.rs":"fa7cb51fbbaa50febe0e61c473891d4131125c290180a05d49b60f5138931fb4","src/command/ray_tracing.rs":"4768a6dba5f737d3550a90ca35fe75c39fe241fc2d41c3795eb329139c5e6ec6","src/command/render.rs":"4a5409a4ffe48252bd44061c96baa948cc8cd13912e2cc5dec6e40c8d7c259b6","src/command/render_command.rs":"3f1bc2fec688fa3f33052867eeb2e194020a643f7d16f6111b8b128594c38570","src/command/timestamp_writes.rs":"da06fb07b8d0917be3e7fb9212d0ffc6b16526e1c1df617213ef354c3e1fb446","src/command/transfer.rs":"28fdca903934d7e2e5d12d28f952ad3e9ef804c8452f9d020831b5e6aca7e19d","src/command/transition_resources.rs":"753cb02adfee4758404c403d19fd76e6c8de77de01435a2cbe2f60bdbe44bde1","src/conv.rs":"c3354002c8c69994692c923d3772744a0f634b760ca73d79634041190d06453a","src/device/bgl.rs":"fcb1d53b692970912781748379df675268981c97352872abf2e7bb0b1ebdd533","src/device/global.rs":"8911123058c91e2695c5712b4e106c6175060adf0c2c2ebd0a28c2751c91ec31","src/device/life.rs":"44bd34cf5ab1c1a21729f2188df6d2ca0238f11c5f723380c8a4a16fbbd90b88","src/device/mod.rs":"dc8271ae7b62e1096f1a9068f671e6ed8cf7a11b5f9987066d5c173c6e4c4ad8","src/device/queue.rs":"598048a8cf2597a9f737144193743e3a4290d92aeca7a9de21bd8ca38d8a65d1","src/device/ray_tracing.rs":"cb13bc0caf54113ca12ce5db147af339474ec4b2423f2556600b5ea936b408cc","src/device/resource.rs":"bbf63c260edbfdf3522c1c8cda41f447a4b00caec3c41cc66d8dabd282f6ec1b","src/device/trace.rs":"39e52ee5b220eb6a13d949582f1f87756189648bf2f05ea7148b0a67b73c226f","src/error.rs":"4f07a0b09b30b2d6cbc855d0091d724000f492018af3b41e80befbeccf2a6f4e","src/global.rs":"bd76f9552496996f9eba6502e5caf1bcd6ca33bf3d5008795b5335f74e56fd55","src/hash_utils.rs":"9f57a627fe3f00659391670141df62f68d67922c7b186f2a9a5958ab16fb576f","src/hub.rs":"308c53e05134e5a48294c61511e43077adfdb5c334237de2016ed4537d562382","src/id.rs":"134974aa304d1d0eb7349438b9660519886c513f01d5868cd4331d2bc78f2cb8","src/identity.rs":"712ccda267eb602655c53672a94346aa4c9f88c0044ae6edcd658a814c9a50cf","src/indirect_validation/dispatch.rs":"b15d926e0de732c3c39c965f168f99598fa508ca4b0883061993d99dd644b31a","src/indirect_validation/draw.rs":"6d8338f37f406c6e2cf89713e8493f167e1d8e999737f2976de298810c2ada76","src/indirect_validation/mod.rs":"79466e4f9a59386e833958b3537beed6ffb6a7ee62aaabcf35382c2683998e43","src/indirect_validation/utils.rs":"e6a3b636dd71ff6b01d5abd5a589a0136fb30aa1d517a43f45cf2e5ad54da245","src/indirect_validation/validate_draw.wgsl":"fa7bba5f28c6c181f2d55ecfe386a5e5cd276bcb3c36aa7f963f43c535a9bf9a","src/init_tracker/buffer.rs":"6167a400ab271ba857f1c507e60a46fbd318c185aff87eecf7eb05f7f09b6963","src/init_tracker/mod.rs":"aa87df3428e3b23507377c71eae92dc1dd9f5d5374aa0b03906fb81507fc6ce6","src/init_tracker/texture.rs":"ffdc67d4be23bcd48b22945de94ac0ea8ee571f91eb6d00323b9afe6fa91eef3","src/instance.rs":"ea7f8e9e1dff27c19e6ddfd0842d001e057e2cb856b1ec1443ab717ac13de276","src/lib.rs":"57d2562e33b04113cc6c2ca3bc9a215ec779a291be82b680ff037fac7d7a8a15","src/lock/mod.rs":"8d3ae3f8d004d7f7d8a3aefe9f30b35669cb8e2409f5fba27b1fcb116b2429c4","src/lock/observing.rs":"f2df071927940e34e808d718c890caea0c3b70c56c2499c98efbddc052eda46f","src/lock/rank.rs":"238e6a97c58ee1a804863c8011bb257864301170344d18596bdaab09f3f74b54","src/lock/ranked.rs":"a95d6bf7f2ef510047a4c33687076beccf38a0148aac3261bd29fa7555e3f488","src/lock/vanilla.rs":"ca8156d4c981473d437db1056487a44c714760d685819eaff8cf82fb0098a608","src/pipeline.rs":"b7aae46522bc6843b0f47dac7e73e33197c76e9724cfb4be3b949bfa27a99fb1","src/pipeline_cache.rs":"256bf8df58d8ab904afddc132349d03e4f659b6bd6882bc8df582dcfd05ae3d5","src/pool.rs":"e11bfdc73a66321d26715465fa74657dcd26a9b856b80b8369b4aac2132a4295","src/present.rs":"bf0c6c47e58496199955013170f41cbf10755c1572583d5af4b88686c28ffb66","src/ray_tracing.rs":"a4261ccd978e8fab1fef48a168d2d33f8a9f2dae89f285ecd9ec8a6d0894fa3b","src/registry.rs":"ecd457e8956e065050bb9c63ca404505e56ffed6d540b3f14f745d7c4010b205","src/resource.rs":"729534761eccf965758ed82a21c7ffd357d7378c9216b25d0649185ce714b8b2","src/scratch.rs":"ea5c40e4d18a12f09cc1038f2dcdddb69b13e99275ac987d826658229a39b326","src/snatch.rs":"bf422810afd952894e365cd397763d42d6365ce3c5a5b4c1170566432f462939","src/storage.rs":"29427dea035d03abc8b8abdebecc5591378f1366088d1468ab2beb8536e7d675","src/timestamp_normalization/common.wgsl":"9f65aef0526ff9dde945fae70cef064ad961b0aee4291759ae82974cd2ead0a7","src/timestamp_normalization/mod.rs":"89444ad79900c12c2dc44780f1525cd0554d6ed1d9038938dd0075e8173ae59d","src/timestamp_normalization/timestamp_normalization.wgsl":"4b2202b965e4c67482d03a546ac38c72a602d79ed9a60e6f7217393c49afad49","src/track/blas.rs":"18c7b5b89a60ab49bbc0f4f8b85a24502c1d968714ef4c586095e119848d902a","src/track/buffer.rs":"1ab5310367606fc74f0791733ea5ba2e09acc92ff7f4f4773f66bcfb3138c52f","src/track/metadata.rs":"04b8bcf8ded7c7c805d9336cfc874da9d8de7d12d99f7525f0540780a1dffc45","src/track/mod.rs":"a66ce12a4dc430a63bd6a3e05818695e407cfb079b320a5cd000bd1b45ceb6a3","src/track/range.rs":"2688b05a0c6e8510ff6ba3a9623e8b83f433a05ba743129928c56c93d9a9c233","src/track/stateless.rs":"3db699f5f48a319fa07fb16cdf51e1623d6ecac7a476467ee366e014ea665b89","src/track/texture.rs":"754c54f3051c8c780f3904c8c9213fc91ea1838ee14301731dd069a98c8c6695","src/validation.rs":"39a38eb27487d1510d883253539c68a45ecb1cfb8f2afb65ac065b84108b7b55","src/weak_vec.rs":"a4193add5912b91226a3155cc613365b7fafdf2e7929d21d68bc19d149696e85"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/wgpu-core/Cargo.toml b/third_party/rust/wgpu-core/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.82.0" name = "wgpu-core" -version = "26.0.0" +version = "27.0.0" authors = ["gfx-rs developers"] build = "build.rs" autolib = false @@ -144,7 +144,7 @@ default-features = false version = "0.4.21" [dependencies.naga] -version = "26.0.0" +version = "27.0.0" path = "../naga" [dependencies.once_cell] @@ -189,11 +189,11 @@ version = "2.0.12" default-features = false [dependencies.wgpu-hal] -version = "26.0.0" +version = "27.0.0" path = "../wgpu-hal" [dependencies.wgpu-types] -version = "26.0.0" +version = "27.0.0" path = "../wgpu-types" default-features = false @@ -201,12 +201,12 @@ default-features = false version = "0.2.1" [target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))'.dependencies.wgpu-core-deps-wasm] -version = "26.0.0" +version = "27.0.0" path = "platform-deps/wasm" optional = true [target.'cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd"))'.dependencies.wgpu-core-deps-windows-linux-android] -version = "26.0.0" +version = "27.0.0" path = "platform-deps/windows-linux-android" optional = true @@ -215,12 +215,12 @@ version = "1.8" optional = true [target.'cfg(target_os = "emscripten")'.dependencies.wgpu-core-deps-emscripten] -version = "26.0.0" +version = "27.0.0" path = "platform-deps/emscripten" optional = true [target.'cfg(target_vendor = "apple")'.dependencies.wgpu-core-deps-apple] -version = "26.0.0" +version = "27.0.0" path = "platform-deps/apple" optional = true diff --git a/third_party/rust/wgpu-core/LICENSE.MIT b/third_party/rust/wgpu-core/LICENSE.MIT @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 The gfx-rs developers +Copyright (c) 2025 The gfx-rs developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/third_party/rust/wgpu-core/src/device/global.rs b/third_party/rust/wgpu-core/src/device/global.rs @@ -1995,7 +1995,7 @@ impl Global { let maintain_result; (user_callbacks, maintain_result) = - device.maintain(fence, wgt::PollType::Wait, snatch_guard); + device.maintain(fence, wgt::PollType::wait_indefinitely(), snatch_guard); match maintain_result { // We're happy @@ -2121,7 +2121,8 @@ impl Global { for (_id, device) in device_guard.iter() { let poll_type = if force_wait { - wgt::PollType::Wait + // TODO(#8286): Should expose timeout to poll_all. + wgt::PollType::wait_indefinitely() } else { wgt::PollType::Poll }; diff --git a/third_party/rust/wgpu-core/src/device/mod.rs b/third_party/rust/wgpu-core/src/device/mod.rs @@ -35,10 +35,6 @@ pub const SHADER_STAGE_COUNT: usize = hal::MAX_CONCURRENT_SHADER_STAGES; // value is enough for a 16k texture with float4 format. pub(crate) const ZERO_BUFFER_SIZE: BufferAddress = 512 << 10; -// If a submission is not completed within this time, we go off into UB land. -// See https://github.com/gfx-rs/wgpu/issues/4589. 60s to reduce the chances of this. -const CLEANUP_WAIT_MS: u32 = 60000; - pub(crate) const ENTRYPOINT_FAILURE_ERROR: &str = "The given EntryPoint is Invalid"; pub type DeviceDescriptor<'a> = wgt::DeviceDescriptor<Label<'a>>; diff --git a/third_party/rust/wgpu-core/src/device/queue.rs b/third_party/rust/wgpu-core/src/device/queue.rs @@ -183,9 +183,9 @@ impl Drop for Queue { fence.as_ref(), last_successful_submission_index, #[cfg(not(target_arch = "wasm32"))] - timeout_ms, + Some(core::time::Duration::from_millis(timeout_ms)), #[cfg(target_arch = "wasm32")] - 0, // WebKit and Chromium don't support a non-0 timeout + Some(core::time::Duration::ZERO), // WebKit and Chromium don't support a non-0 timeout ) }; // Note: If we don't panic below we are in UB land (destroying resources while they are still in use by the GPU). diff --git a/third_party/rust/wgpu-core/src/device/resource.rs b/third_party/rust/wgpu-core/src/device/resource.rs @@ -29,7 +29,6 @@ use crate::{ device::{ bgl, create_validator, life::WaitIdleError, map_buffer, AttachmentData, DeviceLostInvocation, HostMap, MissingDownlevelFlags, MissingFeatures, RenderPassContext, - CLEANUP_WAIT_MS, }, hal_label, init_tracker::{ @@ -712,7 +711,10 @@ impl Device { // If a wait was requested, determine which submission index to wait for. let wait_submission_index = match poll_type { - wgt::PollType::WaitForSubmissionIndex(submission_index) => { + wgt::PollType::Wait { + submission_index: Some(submission_index), + .. + } => { let last_successful_submission_index = self .last_successful_submission_index .load(Ordering::Acquire); @@ -728,7 +730,10 @@ impl Device { Some(submission_index) } - wgt::PollType::Wait => Some( + wgt::PollType::Wait { + submission_index: None, + .. + } => Some( self.last_successful_submission_index .load(Ordering::Acquire), ), @@ -739,9 +744,16 @@ impl Device { if let Some(target_submission_index) = wait_submission_index { log::trace!("Device::maintain: waiting for submission index {target_submission_index}"); + let wait_timeout = match poll_type { + wgt::PollType::Wait { timeout, .. } => timeout, + wgt::PollType::Poll => unreachable!( + "`wait_submission_index` index for poll type `Poll` should be None" + ), + }; + let wait_result = unsafe { self.raw() - .wait(fence.as_ref(), target_submission_index, CLEANUP_WAIT_MS) + .wait(fence.as_ref(), target_submission_index, wait_timeout) }; // This error match is only about `DeviceErrors`. At this stage we do not care if @@ -4051,6 +4063,8 @@ impl Device { }; } pipeline::RenderPipelineVertexProcessor::Mesh(ref task, ref mesh) => { + self.require_features(wgt::Features::EXPERIMENTAL_MESH_SHADER)?; + task_stage = if let Some(task) = task { let stage_desc = &task.stage; let stage = wgt::ShaderStages::TASK; @@ -4499,7 +4513,7 @@ impl Device { let last_done_index = unsafe { self.raw().get_fence_value(fence.as_ref()) } .map_err(|e| self.handle_hal_error(e))?; if last_done_index < submission_index { - unsafe { self.raw().wait(fence.as_ref(), submission_index, !0) } + unsafe { self.raw().wait(fence.as_ref(), submission_index, None) } .map_err(|e| self.handle_hal_error(e))?; drop(fence); if let Some(queue) = self.get_queue() { diff --git a/third_party/rust/wgpu-core/src/lib.rs b/third_party/rust/wgpu-core/src/lib.rs @@ -17,7 +17,7 @@ ), allow(unused, clippy::let_and_return) )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![allow( // It is much clearer to assert negative conditions with eq! false clippy::bool_assert_comparison, diff --git a/third_party/rust/wgpu-hal/.cargo-checksum.json b/third_party/rust/wgpu-hal/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"2518cac140b7be3931ec2cafcc838e8a7e90ff1912b859cca9cf6f7fddf39e92","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"c7fea58d1cfe49634cd92e54fc10a9d871f4b275321a4cd8c09e449122caaeb4","README.md":"cf9e84804a635e4a8a9fefc596be9da6bf7354dde0d105e27d56a12cb20dd8e3","build.rs":"e720cf033fecfdc7e4f34010af2a86340c99b8aaabf69559d32391521e25de6c","examples/halmark/main.rs":"171c7f68df3884f9db09ca9034e2842be5e608984613d067f1af548b7b68b0e7","examples/halmark/shader.wgsl":"26c256ec36d6f0e9a1647431ca772766bee4382d64eaa718ba7b488dcfb6bcca","examples/raw-gles.em.html":"70fbe68394a1a4522192de1dcfaf7d399f60d7bdf5de70b708f9bb0417427546","examples/raw-gles.rs":"5f4cfa893e99dfec559803bc513457793dcc549154c604385fb287f99a3ea675","examples/ray-traced-triangle/main.rs":"ac1a631a98afae34970bb4446b229961d1371debcb389c8fae96761e5f581d55","examples/ray-traced-triangle/shader.wgsl":"cc10caf92746724a71f6dd0dbc3a71e57b37c7d1d83278556805a535c0728a9d","src/auxil/dxgi/conv.rs":"3ca856c93916c0be714924ff077aa1f366be5557cc164210154d252e7e49fb77","src/auxil/dxgi/exception.rs":"7138831914a59dc7cbb71512068e9134144b9bc8f43312682edccb0b3ee24a48","src/auxil/dxgi/factory.rs":"81e479e550a09127384d8080e43d5f5bae8e8dda6082fe41a87bea8f872eb0f1","src/auxil/dxgi/mod.rs":"e6c5cc3b73bb97742135d6f35308c42f0822304764978fb8dabb0e848863352a","src/auxil/dxgi/name.rs":"ff942da0da1a497ee4d2be21604f7ba9fae963588105b3d1f63aae1a0c536e82","src/auxil/dxgi/result.rs":"e7a9dfb48d8ef8cbe58b28b1ace5caf7818ee50505ba3220bb0509e66ae469b7","src/auxil/dxgi/time.rs":"b6911800be3873cbe277b2534b3839c6f005f3d9a09341aace4752e207d584a2","src/auxil/mod.rs":"540b9250d9f0e0af709245ce1e284eaca15b27d47550b0ebba2a512da1666c48","src/auxil/renderdoc.rs":"94898f747476e269b2910d42e769f2bbb6be0cb466ad92f9d381f55799d2756e","src/dx12/adapter.rs":"9923abf84344c9ec2719ce4a0829bbc9b78307721b485bfd65c2912062037fe5","src/dx12/command.rs":"4bbbfa0583d0670a4cdefe55ec0513e84ac955b2c06dc2ee59fcb89d1e63fad1","src/dx12/conv.rs":"ef5fa91bbe8b044b7f7949452a04eefbf4b0d3a97f6d89665e021efae8568643","src/dx12/dcomp.rs":"53bde57557d80e571257f76933d66475a765e063d8b635675f9dd2563039a4c5","src/dx12/descriptor.rs":"ccd4feb6bd3e0a0ffc26142f8a81fca26180d0f50146b6eb2f670cbc89ea7064","src/dx12/device.rs":"f797941a33c5d973dd79a7633ef65db9aafab1dcc12d53370050c5470858b943","src/dx12/instance.rs":"75bddc3807756c691ede3ff944915e443a8bb2b5ac6d0d99babd4ed50d1e3fb9","src/dx12/mod.rs":"6b49fdcdb0220a1297859916c55df647bc23a6891eacbc92874f0e1a0f806299","src/dx12/sampler.rs":"d18d243efe4fa667dbab5b75b5b91d47de94d441976d9f44a46a2b49ba38473d","src/dx12/shader_compilation.rs":"c901a797c69e08c8c0ec93ea37c5f31084eb21c26c7d703d7031f987f2243509","src/dx12/suballocation.rs":"014e9ec4a94519b877ad3adc2ea5d182aa6cdf502248009d28dc5833a9edb93c","src/dx12/types.rs":"3fc7619fc09303eb3c936d4ded6889f94ce9e8b9aa62742ce900baa1b1e1cca7","src/dx12/view.rs":"79b3f7331d9795e60f9b53023cbf0df46c3a05b1e8bd5c7bcca8acdd235b124f","src/dynamic/adapter.rs":"e93f7d082a3950c9e8ccff8a631d251c7598b4b25dda9fe6347dadfa3ba07829","src/dynamic/command.rs":"9635dea15d8a885011d2b8b6b9cc5ffe2126cc3f141f47f7aaf46e1f201abea9","src/dynamic/device.rs":"4c8368a5ba6947f982f16accef75e15cbef2dcb6e4bd5995783b7d6fdf131ff6","src/dynamic/instance.rs":"7b515c201e1ca24f24439544dbfa1d19ea1412a4f89bd803e009aed13b021e55","src/dynamic/mod.rs":"2577d3aef6441f5b42b427d80ba3cf7fee2a97b2fc12335a1fba383e8a79a9b2","src/dynamic/queue.rs":"d76abb4797e90253386d24584f186dbe1909e772560156b2e891fa043cfefbdc","src/dynamic/surface.rs":"4328c2fe86931f50aa00ac3d6982d0879b774eebf7a507903d1b1898c891fb4d","src/gles/adapter.rs":"7cbe1b3dda180d0eee69af3474308175dfb964db071ec9779baf21ffd641f679","src/gles/command.rs":"c13d50eeb1a4aaab367a3b4a7fe6c25c8c73377e68d0d8cc43791d1a7202d23b","src/gles/conv.rs":"de1ad6c07d26e8f9f3be8a7a51bca212e92fd5449aaa85c6ad9c37b91afa6994","src/gles/device.rs":"0ab205747f317d517204def9281cb3561241a53bb2233252adfb7581c015c1ba","src/gles/egl.rs":"2a336cd6bf3cc6660677ac2621f903c9dd72a1cf484d41c7b69c341b809844c4","src/gles/emscripten.rs":"316d2bb6f2a4bb126dbe68a223f7393399080d116b61c39504454acdf4f9cfaf","src/gles/fence.rs":"083cd49747aba6272002aba0b0c37e5768cdbc2a1b8bacd1a244ee905d3f7b0f","src/gles/mod.rs":"24a29ca8f7a5c3c7601d74b3fd8a9d4b402e7b794b6fd70bda36acf5960ae828","src/gles/queue.rs":"5152f5698a2998a55125d13f04788b960726fd4b49ae4d2ec8f9642c8825c7fd","src/gles/shaders/clear.frag":"9133ed8ed97d3641fbb6b5f5ea894a3554c629ccc1b80a5fc9221d7293aa1954","src/gles/shaders/clear.vert":"a543768725f4121ff2e9e1fb5b00644931e9d6f2f946c0ef01968afb5a135abd","src/gles/shaders/srgb_present.frag":"dd9a43c339a2fa4ccf7f6a1854c6f400cabf271a7d5e9230768e9f39d47f3ff5","src/gles/shaders/srgb_present.vert":"6e85d489403d80b81cc94790730bb53b309dfc5eeede8f1ea3412a660f31d357","src/gles/web.rs":"cb5940bf7b2381811675011b640040274f407a7d1908d0f82c813d6a9d3b00f7","src/gles/wgl.rs":"ed0cee8844447b461ed5340f81eb55bb051ceaac67a5768985318ceac133cbe4","src/lib.rs":"857e57ce6d1dc95f6b1aa05c30e52423ff488ed892b5ad1c010a14252633d436","src/metal/adapter.rs":"9184c7658efe5dd43224d23294ebd3fe98a19b0290c41703496de276dad5f996","src/metal/command.rs":"20bf613b67ccc043de6e8ad3f3d332bbb678cc06c1593cf1880083de090574ba","src/metal/conv.rs":"85e8168be334ba24d109575a0a7e91b2ad3459403173e99e5cdd5d977cc5c18f","src/metal/device.rs":"b4a7aba8b9bfc348cd127a242ac7254b661600982e2cede4c9286799311d4867","src/metal/layer_observer.rs":"8370a6e443d01739b951b8538ee719a03b69fc0cbac92c748db418fbcc8837b5","src/metal/mod.rs":"82d7e8b96ba04fab5b42722574e9f081def9e50c92dcc7d554d8111b9d0aa2a1","src/metal/surface.rs":"22dc6da86ac74b044b6498764920f0467bb5060f4dffb156b6c1e260db0c48b7","src/metal/time.rs":"c32d69f30e846dfcc0e39e01097fb80df63b2bebb6586143bb62494999850246","src/noop/buffer.rs":"b5edc5e2c52287dfbd4f619e36097ac233041eb9ab287b889b6ee477d740fa09","src/noop/command.rs":"3de99a1a260cfea2e6ca2e76797c1923cc26b069b08362c38798ce27cdc75543","src/noop/mod.rs":"85253d9c36fca50e14c562fb35928e69342bcd367a78d9c512d6ce15702c74a5","src/validation_canary.rs":"2e8f84e5f85671b3e55ddd410476171c762e34cbea315b37921cbb6ff18bfb4f","src/vulkan/adapter.rs":"0c973c328064c509e2c05cf7d72fff881aad3d75234aa6040f09869e986eec17","src/vulkan/command.rs":"22fd05428c141ce58000c8f3541d39195023ffdfb72c4b00379a5c50a3ecea82","src/vulkan/conv.rs":"b89788f8f89283a80ee99b2d4231c4fe2ad36906f8743f6e9e1eaa974edd4816","src/vulkan/device.rs":"3c319b40853fea9bd1f4a0ee9677caabea8c8bbfa267f09651ae0424735c0224","src/vulkan/drm.rs":"45f7bf1dd854688a65261e4674d80f90c997b193a162fd2ae658acf4e2003552","src/vulkan/instance.rs":"6740bc9ca240aa512509520d2b5a9cd2129330c413d94fce786b8301fa5f2202","src/vulkan/mod.rs":"ee5b76246621e4e5d78ead70f49c94b5e3d48b616f8524e669213b9adaed31bb","src/vulkan/sampler.rs":"f65729d6df5cce681b7756b3e48074017f0c7f42da69ca55e26cc723cd14ad59","src/vulkan/semaphore_list.rs":"102266d8e1b9f2ec1decf681bcc9e1a4cbff29533a258f2699fb6c573c434771"},"package":null} -\ No newline at end of file +{"files":{"Cargo.toml":"e237617065b309c62aa46857a2429372e306e200e70250060b80056c6685e437","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"cf9e84804a635e4a8a9fefc596be9da6bf7354dde0d105e27d56a12cb20dd8e3","build.rs":"e720cf033fecfdc7e4f34010af2a86340c99b8aaabf69559d32391521e25de6c","examples/halmark/main.rs":"3dbc158d925da6ef4450b9a1d335cb0d748c5d71ef517f110701d73aea185454","examples/halmark/shader.wgsl":"26c256ec36d6f0e9a1647431ca772766bee4382d64eaa718ba7b488dcfb6bcca","examples/raw-gles.em.html":"70fbe68394a1a4522192de1dcfaf7d399f60d7bdf5de70b708f9bb0417427546","examples/raw-gles.rs":"5f4cfa893e99dfec559803bc513457793dcc549154c604385fb287f99a3ea675","examples/ray-traced-triangle/main.rs":"8cbfdf3e4cd29d23e2c9fd543a36976d849a7161670e094baeda390db9306b57","examples/ray-traced-triangle/shader.wgsl":"cc10caf92746724a71f6dd0dbc3a71e57b37c7d1d83278556805a535c0728a9d","src/auxil/dxgi/conv.rs":"3ca856c93916c0be714924ff077aa1f366be5557cc164210154d252e7e49fb77","src/auxil/dxgi/exception.rs":"7138831914a59dc7cbb71512068e9134144b9bc8f43312682edccb0b3ee24a48","src/auxil/dxgi/factory.rs":"81e479e550a09127384d8080e43d5f5bae8e8dda6082fe41a87bea8f872eb0f1","src/auxil/dxgi/mod.rs":"e6c5cc3b73bb97742135d6f35308c42f0822304764978fb8dabb0e848863352a","src/auxil/dxgi/name.rs":"ff942da0da1a497ee4d2be21604f7ba9fae963588105b3d1f63aae1a0c536e82","src/auxil/dxgi/result.rs":"e7a9dfb48d8ef8cbe58b28b1ace5caf7818ee50505ba3220bb0509e66ae469b7","src/auxil/dxgi/time.rs":"b6911800be3873cbe277b2534b3839c6f005f3d9a09341aace4752e207d584a2","src/auxil/mod.rs":"540b9250d9f0e0af709245ce1e284eaca15b27d47550b0ebba2a512da1666c48","src/auxil/renderdoc.rs":"94898f747476e269b2910d42e769f2bbb6be0cb466ad92f9d381f55799d2756e","src/dx12/adapter.rs":"9923abf84344c9ec2719ce4a0829bbc9b78307721b485bfd65c2912062037fe5","src/dx12/command.rs":"c1882f684b2e2bdb659ced0b5a1e353825c7b220998009d07dafdd1841af3ecf","src/dx12/conv.rs":"ef5fa91bbe8b044b7f7949452a04eefbf4b0d3a97f6d89665e021efae8568643","src/dx12/dcomp.rs":"53bde57557d80e571257f76933d66475a765e063d8b635675f9dd2563039a4c5","src/dx12/descriptor.rs":"ccd4feb6bd3e0a0ffc26142f8a81fca26180d0f50146b6eb2f670cbc89ea7064","src/dx12/device.rs":"435427d5377c3d298c0dcbad46fb390b13e4448e3e74f24863d6a546b8e57307","src/dx12/instance.rs":"75bddc3807756c691ede3ff944915e443a8bb2b5ac6d0d99babd4ed50d1e3fb9","src/dx12/mod.rs":"60076d7b4afc45418bb7b0b2952b7766aaf785670822628cb2bf9f1d9fe08cf1","src/dx12/sampler.rs":"d18d243efe4fa667dbab5b75b5b91d47de94d441976d9f44a46a2b49ba38473d","src/dx12/shader_compilation.rs":"c901a797c69e08c8c0ec93ea37c5f31084eb21c26c7d703d7031f987f2243509","src/dx12/suballocation.rs":"014e9ec4a94519b877ad3adc2ea5d182aa6cdf502248009d28dc5833a9edb93c","src/dx12/types.rs":"3fc7619fc09303eb3c936d4ded6889f94ce9e8b9aa62742ce900baa1b1e1cca7","src/dx12/view.rs":"79b3f7331d9795e60f9b53023cbf0df46c3a05b1e8bd5c7bcca8acdd235b124f","src/dynamic/adapter.rs":"e93f7d082a3950c9e8ccff8a631d251c7598b4b25dda9fe6347dadfa3ba07829","src/dynamic/command.rs":"9635dea15d8a885011d2b8b6b9cc5ffe2126cc3f141f47f7aaf46e1f201abea9","src/dynamic/device.rs":"f77c2406f2c42fed77fce29d731b490ac615dae2c5ddb9e01fee4f8ece1b3a34","src/dynamic/instance.rs":"7b515c201e1ca24f24439544dbfa1d19ea1412a4f89bd803e009aed13b021e55","src/dynamic/mod.rs":"2577d3aef6441f5b42b427d80ba3cf7fee2a97b2fc12335a1fba383e8a79a9b2","src/dynamic/queue.rs":"d76abb4797e90253386d24584f186dbe1909e772560156b2e891fa043cfefbdc","src/dynamic/surface.rs":"4328c2fe86931f50aa00ac3d6982d0879b774eebf7a507903d1b1898c891fb4d","src/gles/adapter.rs":"7cbe1b3dda180d0eee69af3474308175dfb964db071ec9779baf21ffd641f679","src/gles/command.rs":"c13d50eeb1a4aaab367a3b4a7fe6c25c8c73377e68d0d8cc43791d1a7202d23b","src/gles/conv.rs":"de1ad6c07d26e8f9f3be8a7a51bca212e92fd5449aaa85c6ad9c37b91afa6994","src/gles/device.rs":"745d94da0eff6f580425932983b9182e52437b7fa1443c92c5d63f3a14bebb5b","src/gles/egl.rs":"2a336cd6bf3cc6660677ac2621f903c9dd72a1cf484d41c7b69c341b809844c4","src/gles/emscripten.rs":"316d2bb6f2a4bb126dbe68a223f7393399080d116b61c39504454acdf4f9cfaf","src/gles/fence.rs":"a2e7b6abd2fd4a438de90b9f58452c64cd8bba83999c90fd6390e3db128b9c6c","src/gles/mod.rs":"24a29ca8f7a5c3c7601d74b3fd8a9d4b402e7b794b6fd70bda36acf5960ae828","src/gles/queue.rs":"5152f5698a2998a55125d13f04788b960726fd4b49ae4d2ec8f9642c8825c7fd","src/gles/shaders/clear.frag":"9133ed8ed97d3641fbb6b5f5ea894a3554c629ccc1b80a5fc9221d7293aa1954","src/gles/shaders/clear.vert":"a543768725f4121ff2e9e1fb5b00644931e9d6f2f946c0ef01968afb5a135abd","src/gles/shaders/srgb_present.frag":"dd9a43c339a2fa4ccf7f6a1854c6f400cabf271a7d5e9230768e9f39d47f3ff5","src/gles/shaders/srgb_present.vert":"6e85d489403d80b81cc94790730bb53b309dfc5eeede8f1ea3412a660f31d357","src/gles/web.rs":"cb5940bf7b2381811675011b640040274f407a7d1908d0f82c813d6a9d3b00f7","src/gles/wgl.rs":"ed0cee8844447b461ed5340f81eb55bb051ceaac67a5768985318ceac133cbe4","src/lib.rs":"b3f23ecd0152da354d91ef01af558b3ad65f0040bbdfd8574c297071d3c97445","src/metal/adapter.rs":"9184c7658efe5dd43224d23294ebd3fe98a19b0290c41703496de276dad5f996","src/metal/command.rs":"20bf613b67ccc043de6e8ad3f3d332bbb678cc06c1593cf1880083de090574ba","src/metal/conv.rs":"85e8168be334ba24d109575a0a7e91b2ad3459403173e99e5cdd5d977cc5c18f","src/metal/device.rs":"5ff22c78a8ef905a2c265818bdb63e522ec6622becc20f1eee01adf8f0a6f77f","src/metal/layer_observer.rs":"8370a6e443d01739b951b8538ee719a03b69fc0cbac92c748db418fbcc8837b5","src/metal/mod.rs":"82d7e8b96ba04fab5b42722574e9f081def9e50c92dcc7d554d8111b9d0aa2a1","src/metal/surface.rs":"22dc6da86ac74b044b6498764920f0467bb5060f4dffb156b6c1e260db0c48b7","src/metal/time.rs":"c32d69f30e846dfcc0e39e01097fb80df63b2bebb6586143bb62494999850246","src/noop/buffer.rs":"b5edc5e2c52287dfbd4f619e36097ac233041eb9ab287b889b6ee477d740fa09","src/noop/command.rs":"3de99a1a260cfea2e6ca2e76797c1923cc26b069b08362c38798ce27cdc75543","src/noop/mod.rs":"f658892b80640c2061b0028013c23041a1b12033a928a347a02e40aeb9e819a6","src/validation_canary.rs":"2e8f84e5f85671b3e55ddd410476171c762e34cbea315b37921cbb6ff18bfb4f","src/vulkan/adapter.rs":"0c973c328064c509e2c05cf7d72fff881aad3d75234aa6040f09869e986eec17","src/vulkan/command.rs":"22fd05428c141ce58000c8f3541d39195023ffdfb72c4b00379a5c50a3ecea82","src/vulkan/conv.rs":"b89788f8f89283a80ee99b2d4231c4fe2ad36906f8743f6e9e1eaa974edd4816","src/vulkan/device.rs":"3ad27857637708fff85c52f9270e4e87b30408030c48092b2744cf229aaea287","src/vulkan/drm.rs":"45f7bf1dd854688a65261e4674d80f90c997b193a162fd2ae658acf4e2003552","src/vulkan/instance.rs":"6740bc9ca240aa512509520d2b5a9cd2129330c413d94fce786b8301fa5f2202","src/vulkan/mod.rs":"bff4adbad402e7bdaabe69b20425e250a2c1117154dbc365c3a12f59bf9034e3","src/vulkan/sampler.rs":"f65729d6df5cce681b7756b3e48074017f0c7f42da69ca55e26cc723cd14ad59","src/vulkan/semaphore_list.rs":"102266d8e1b9f2ec1decf681bcc9e1a4cbff29533a258f2699fb6c573c434771"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/wgpu-hal/Cargo.toml b/third_party/rust/wgpu-hal/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.82.0" name = "wgpu-hal" -version = "26.0.0" +version = "27.0.0" authors = ["gfx-rs developers"] build = "build.rs" autolib = false @@ -203,7 +203,7 @@ version = "0.4.21" optional = true [dependencies.naga] -version = "26.0.0" +version = "27.0.0" path = "../naga" [dependencies.ordered-float] @@ -234,7 +234,7 @@ version = "2.0.12" default-features = false [dependencies.wgpu-types] -version = "26.0.0" +version = "27.0.0" path = "../wgpu-types" default-features = false @@ -246,7 +246,7 @@ default-features = false version = "0.30.7" [dev-dependencies.naga] -version = "26.0.0" +version = "27.0.0" path = "../naga" features = [ "wgsl-in", diff --git a/third_party/rust/wgpu-hal/LICENSE.MIT b/third_party/rust/wgpu-hal/LICENSE.MIT @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 The gfx-rs developers +Copyright (c) 2025 The gfx-rs developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/third_party/rust/wgpu-hal/examples/halmark/main.rs b/third_party/rust/wgpu-hal/examples/halmark/main.rs @@ -54,7 +54,7 @@ struct ExecutionContext<A: hal::Api> { impl<A: hal::Api> ExecutionContext<A> { unsafe fn wait_and_clear(&mut self, device: &A::Device) { - device.wait(&self.fence, self.fence_value, !0).unwrap(); + device.wait(&self.fence, self.fence_value, None).unwrap(); self.encoder.reset_all(self.used_cmd_bufs.drain(..)); for view in self.used_views.drain(..) { device.destroy_texture_view(view); @@ -519,7 +519,7 @@ impl<A: hal::Api> Example<A> { queue .submit(&[&init_cmd], &[], (&mut fence, init_fence_value)) .unwrap(); - device.wait(&fence, init_fence_value, !0).unwrap(); + device.wait(&fence, init_fence_value, None).unwrap(); device.destroy_buffer(staging_buffer); cmd_encoder.reset_all(iter::once(init_cmd)); fence diff --git a/third_party/rust/wgpu-hal/examples/ray-traced-triangle/main.rs b/third_party/rust/wgpu-hal/examples/ray-traced-triangle/main.rs @@ -181,7 +181,7 @@ struct ExecutionContext<A: hal::Api> { impl<A: hal::Api> ExecutionContext<A> { unsafe fn wait_and_clear(&mut self, device: &A::Device) { - device.wait(&self.fence, self.fence_value, !0).unwrap(); + device.wait(&self.fence, self.fence_value, None).unwrap(); self.encoder.reset_all(self.used_cmd_bufs.drain(..)); for view in self.used_views.drain(..) { device.destroy_texture_view(view); @@ -816,7 +816,7 @@ impl<A: hal::Api> Example<A> { queue .submit(&[&init_cmd], &[], (&mut fence, init_fence_value)) .unwrap(); - device.wait(&fence, init_fence_value, !0).unwrap(); + device.wait(&fence, init_fence_value, None).unwrap(); cmd_encoder.reset_all(iter::once(init_cmd)); fence }; diff --git a/third_party/rust/wgpu-hal/src/dx12/command.rs b/third_party/rust/wgpu-hal/src/dx12/command.rs @@ -1338,14 +1338,17 @@ impl crate::CommandEncoder for super::CommandEncoder { let cmd_list6: Direct3D12::ID3D12GraphicsCommandList6 = self.list.as_ref().unwrap().cast().unwrap(); - let cmd_signature = &self + let Some(cmd_signature) = &self .pass .layout .special_constants .as_ref() .and_then(|sc| sc.indirect_cmd_signatures.as_ref()) .unwrap_or_else(|| &self.shared.cmd_signatures) - .draw_mesh; + .draw_mesh + else { + panic!("Feature `MESH_SHADING` not enabled"); + }; unsafe { cmd_list6.ExecuteIndirect(cmd_signature, draw_count, &buffer.resource, offset, None, 0); } @@ -1401,9 +1404,12 @@ impl crate::CommandEncoder for super::CommandEncoder { self.prepare_dispatch([0; 3]); let cmd_list6: Direct3D12::ID3D12GraphicsCommandList6 = self.list.as_ref().unwrap().cast().unwrap(); + let Some(ref command_signature) = self.shared.cmd_signatures.draw_mesh else { + panic!("Feature `MESH_SHADING` not enabled"); + }; unsafe { cmd_list6.ExecuteIndirect( - &self.shared.cmd_signatures.draw_mesh, + command_signature, max_count, &buffer.resource, offset, diff --git a/third_party/rust/wgpu-hal/src/dx12/device.rs b/third_party/rust/wgpu-hal/src/dx12/device.rs @@ -116,6 +116,24 @@ impl super::Device { // maximum number of CBV/SRV/UAV descriptors in heap for Tier 1 let capacity_views = limits.max_non_sampler_bindings as u64; + let draw_mesh = if features + .features_wgpu + .contains(wgt::FeaturesWGPU::EXPERIMENTAL_MESH_SHADER) + { + Some(Self::create_command_signature( + &raw, + None, + size_of::<wgt::DispatchIndirectArgs>(), + &[Direct3D12::D3D12_INDIRECT_ARGUMENT_DESC { + Type: Direct3D12::D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH, + ..Default::default() + }], + 0, + )?) + } else { + None + }; + let shared = super::DeviceShared { adapter, zero_buffer, @@ -140,16 +158,7 @@ impl super::Device { }], 0, )?, - draw_mesh: Self::create_command_signature( - &raw, - None, - size_of::<wgt::DispatchIndirectArgs>(), - &[Direct3D12::D3D12_INDIRECT_ARGUMENT_DESC { - Type: Direct3D12::D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH, - ..Default::default() - }], - 0, - )?, + draw_mesh, dispatch: Self::create_command_signature( &raw, None, @@ -1371,47 +1380,58 @@ impl crate::Device for super::Device { }; size_of_val(&first_vertex) + size_of_val(&first_instance) + size_of_val(&other) }; - Some(super::CommandSignatures { - draw: Self::create_command_signature( + + let draw_mesh = if self + .features + .features_wgpu + .contains(wgt::FeaturesWGPU::EXPERIMENTAL_MESH_SHADER) + { + Some(Self::create_command_signature( &self.raw, Some(&raw), - special_constant_buffer_args_len + size_of::<wgt::DrawIndirectArgs>(), + special_constant_buffer_args_len + size_of::<wgt::DispatchIndirectArgs>(), &[ constant_indirect_argument_desc, Direct3D12::D3D12_INDIRECT_ARGUMENT_DESC { - Type: Direct3D12::D3D12_INDIRECT_ARGUMENT_TYPE_DRAW, + Type: Direct3D12::D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH, ..Default::default() }, ], 0, - )?, - draw_indexed: Self::create_command_signature( + )?) + } else { + None + }; + + Some(super::CommandSignatures { + draw: Self::create_command_signature( &self.raw, Some(&raw), - special_constant_buffer_args_len - + size_of::<wgt::DrawIndexedIndirectArgs>(), + special_constant_buffer_args_len + size_of::<wgt::DrawIndirectArgs>(), &[ constant_indirect_argument_desc, Direct3D12::D3D12_INDIRECT_ARGUMENT_DESC { - Type: Direct3D12::D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED, + Type: Direct3D12::D3D12_INDIRECT_ARGUMENT_TYPE_DRAW, ..Default::default() }, ], 0, )?, - draw_mesh: Self::create_command_signature( + draw_indexed: Self::create_command_signature( &self.raw, Some(&raw), - special_constant_buffer_args_len + size_of::<wgt::DispatchIndirectArgs>(), + special_constant_buffer_args_len + + size_of::<wgt::DrawIndexedIndirectArgs>(), &[ constant_indirect_argument_desc, Direct3D12::D3D12_INDIRECT_ARGUMENT_DESC { - Type: Direct3D12::D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH, + Type: Direct3D12::D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED, ..Default::default() }, ], 0, )?, + draw_mesh, dispatch: Self::create_command_signature( &self.raw, Some(&raw), @@ -2237,9 +2257,9 @@ impl crate::Device for super::Device { &self, fence: &super::Fence, value: crate::FenceValue, - timeout_ms: u32, + timeout: Option<Duration>, ) -> Result<bool, crate::DeviceError> { - let timeout_duration = Duration::from_millis(timeout_ms as u64); + let timeout = timeout.unwrap_or(Duration::MAX); // We first check if the fence has already reached the value we're waiting for. let mut fence_value = unsafe { fence.raw.GetCompletedValue() }; @@ -2273,7 +2293,7 @@ impl crate::Device for super::Device { // // This happens when a previous iteration WaitForSingleObject succeeded with a previous fence value, // right before the timeout would have been hit. - let remaining_wait_duration = match timeout_duration.checked_sub(elapsed) { + let remaining_wait_duration = match timeout.checked_sub(elapsed) { Some(remaining) => remaining, None => { log::trace!("Timeout elapsed in between waits!"); @@ -2286,7 +2306,7 @@ impl crate::Device for super::Device { match unsafe { Threading::WaitForSingleObject( event.0, - remaining_wait_duration.as_millis().try_into().unwrap(), + remaining_wait_duration.as_millis().min(u32::MAX as u128) as u32, ) } { Foundation::WAIT_OBJECT_0 => {} diff --git a/third_party/rust/wgpu-hal/src/dx12/mod.rs b/third_party/rust/wgpu-hal/src/dx12/mod.rs @@ -659,7 +659,7 @@ struct Idler { struct CommandSignatures { draw: Direct3D12::ID3D12CommandSignature, draw_indexed: Direct3D12::ID3D12CommandSignature, - draw_mesh: Direct3D12::ID3D12CommandSignature, + draw_mesh: Option<Direct3D12::ID3D12CommandSignature>, dispatch: Direct3D12::ID3D12CommandSignature, } diff --git a/third_party/rust/wgpu-hal/src/dynamic/device.rs b/third_party/rust/wgpu-hal/src/dynamic/device.rs @@ -135,7 +135,7 @@ pub trait DynDevice: DynResource { &self, fence: &dyn DynFence, value: FenceValue, - timeout_ms: u32, + timeout: Option<core::time::Duration>, ) -> Result<bool, DeviceError>; unsafe fn start_graphics_debugger_capture(&self) -> bool; @@ -486,10 +486,10 @@ impl<D: Device + DynResource> DynDevice for D { &self, fence: &dyn DynFence, value: FenceValue, - timeout_ms: u32, + timeout: Option<core::time::Duration>, ) -> Result<bool, DeviceError> { let fence = fence.expect_downcast_ref(); - unsafe { D::wait(self, fence, value, timeout_ms) } + unsafe { D::wait(self, fence, value, timeout) } } unsafe fn start_graphics_debugger_capture(&self) -> bool { diff --git a/third_party/rust/wgpu-hal/src/gles/device.rs b/third_party/rust/wgpu-hal/src/gles/device.rs @@ -1564,7 +1564,7 @@ impl crate::Device for super::Device { &self, fence: &super::Fence, wait_value: crate::FenceValue, - timeout_ms: u32, + timeout: Option<core::time::Duration>, ) -> Result<bool, crate::DeviceError> { if fence.satisfied(wait_value) { return Ok(true); @@ -1578,7 +1578,9 @@ impl crate::Device for super::Device { let timeout_ns = if cfg!(any(webgl, Emscripten)) { 0 } else { - (timeout_ms as u64 * 1_000_000).min(!0u32 as u64) + timeout + .map(|t| t.as_nanos().min(u32::MAX as u128) as u32) + .unwrap_or(u32::MAX) }; fence.wait(gl, wait_value, timeout_ns) } diff --git a/third_party/rust/wgpu-hal/src/gles/fence.rs b/third_party/rust/wgpu-hal/src/gles/fence.rs @@ -102,7 +102,7 @@ impl Fence { &self, gl: &glow::Context, wait_value: crate::FenceValue, - timeout_ns: u64, + timeout_ns: u32, ) -> Result<bool, crate::DeviceError> { let last_completed = self.last_completed.load(Ordering::Acquire); @@ -134,7 +134,7 @@ impl Fence { gl.client_wait_sync( gl_fence.sync, glow::SYNC_FLUSH_COMMANDS_BIT, - timeout_ns as i32, + timeout_ns.min(i32::MAX as u32) as i32, ) }; diff --git a/third_party/rust/wgpu-hal/src/lib.rs b/third_party/rust/wgpu-hal/src/lib.rs @@ -203,7 +203,7 @@ //! [wiki-debug]: https://github.com/gfx-rs/wgpu/wiki/Debugging-wgpu-Applications #![no_std] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![allow( // this happens on the GL backend, where it is both thread safe and non-thread safe in the same code. clippy::arc_with_non_send_sync, @@ -981,6 +981,9 @@ pub trait Device: WasmNotSendSync { /// Calling `wait` with a lower [`FenceValue`] than `fence`'s current value /// returns immediately. /// + /// If `timeout` is provided, the function will block indefinitely or until + /// an error is encountered. + /// /// Returns `Ok(true)` on success and `Ok(false)` on timeout. /// /// [`Fence`]: Api::Fence @@ -989,7 +992,7 @@ pub trait Device: WasmNotSendSync { &self, fence: &<Self::A as Api>::Fence, value: FenceValue, - timeout_ms: u32, + timeout: Option<core::time::Duration>, ) -> Result<bool, DeviceError>; /// Start a graphics debugger capture. diff --git a/third_party/rust/wgpu-hal/src/metal/device.rs b/third_party/rust/wgpu-hal/src/metal/device.rs @@ -1580,7 +1580,7 @@ impl crate::Device for super::Device { &self, fence: &super::Fence, wait_value: crate::FenceValue, - timeout_ms: u32, + timeout: Option<core::time::Duration>, ) -> DeviceResult<bool> { if wait_value <= fence.completed_value.load(atomic::Ordering::Acquire) { return Ok(true); @@ -1603,8 +1603,10 @@ impl crate::Device for super::Device { if let MTLCommandBufferStatus::Completed = cmd_buf.status() { return Ok(true); } - if start.elapsed().as_millis() >= timeout_ms as u128 { - return Ok(false); + if let Some(timeout) = timeout { + if start.elapsed() >= timeout { + return Ok(false); + } } thread::sleep(core::time::Duration::from_millis(1)); } diff --git a/third_party/rust/wgpu-hal/src/noop/mod.rs b/third_party/rust/wgpu-hal/src/noop/mod.rs @@ -429,7 +429,7 @@ impl crate::Device for Context { &self, fence: &Fence, value: crate::FenceValue, - timeout_ms: u32, + timeout: Option<Duration>, ) -> DeviceResult<bool> { // The relevant commands must have already been submitted, and noop-backend commands are // executed synchronously, so there is no waiting — either it is already done, diff --git a/third_party/rust/wgpu-hal/src/vulkan/device.rs b/third_party/rust/wgpu-hal/src/vulkan/device.rs @@ -4,6 +4,7 @@ use core::{ mem::{self, MaybeUninit}, num::NonZeroU32, ptr, + time::Duration, }; use arrayvec::ArrayVec; @@ -895,7 +896,7 @@ impl super::Device { if let Some(ref debug) = naga_shader.debug_source { temp_options.debug_info = Some(naga::back::spv::DebugInfo { source_code: &debug.source_code, - file_name: debug.file_name.as_ref().into(), + file_name: debug.file_name.as_ref(), language: naga::back::spv::SourceLanguage::WGSL, }) } @@ -1931,7 +1932,7 @@ impl crate::Device for super::Device { .as_ref() .map(|d| naga::back::spv::DebugInfo { source_code: d.source_code.as_ref(), - file_name: d.file_name.as_ref().into(), + file_name: d.file_name.as_ref(), language: naga::back::spv::SourceLanguage::WGSL, }); if !desc.runtime_checks.bounds_checks { @@ -2443,9 +2444,12 @@ impl crate::Device for super::Device { &self, fence: &super::Fence, wait_value: crate::FenceValue, - timeout_ms: u32, + timeout: Option<Duration>, ) -> Result<bool, crate::DeviceError> { - let timeout_ns = timeout_ms as u64 * super::MILLIS_TO_NANOS; + let timeout_ns = timeout + .unwrap_or(Duration::MAX) + .as_nanos() + .min(u64::MAX as _) as u64; self.shared.wait_for_fence(fence, wait_value, timeout_ns) } diff --git a/third_party/rust/wgpu-hal/src/vulkan/mod.rs b/third_party/rust/wgpu-hal/src/vulkan/mod.rs @@ -49,7 +49,6 @@ use wgt::InternalCounter; use semaphore_list::SemaphoreList; -const MILLIS_TO_NANOS: u64 = 1_000_000; const MAX_TOTAL_ATTACHMENTS: usize = crate::MAX_COLOR_ATTACHMENTS * 2 + 1; #[derive(Clone, Debug)] diff --git a/third_party/rust/wgpu-types/.cargo-checksum.json b/third_party/rust/wgpu-types/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"1a325adbdf1fe020a0a93af94f247ea95e32a4d0d4c3a439c1bdb7e6dd32300a","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"c7fea58d1cfe49634cd92e54fc10a9d871f4b275321a4cd8c09e449122caaeb4","src/assertions.rs":"e4d2d40bc1e870a59637f4b9574743e19565a62f6dbcc21cb18a76b666b796eb","src/cast_utils.rs":"33f03a57ccbedef2699f2305bec584c623db1fd28bfdf584d1260da4fbecd529","src/counters.rs":"e2a1c69126bdb6a35f74d5062e89e242eb955014d95c2b9e6e1b03f7b4b5bd98","src/env.rs":"26ffc91867625784159bcf391881187aa92cf92b81b1f40959ce1b96ae6d554d","src/error.rs":"0109e6209cf152abbfd0cee85dd934fb24f2304bf6adad6fb684b77f151fb158","src/features.rs":"ab880ecf55be2a93244d1a03119d10ee15eddc076f100ae03d13b51eaa815b57","src/instance.rs":"deeb5ca694163baf46c386316a498cee011cf960d48b749d4cd01125e9fca57f","src/lib.rs":"bfb7d267d55e87b9d77c7ac2a822caba0554af26060a2cd37a25440d5c82be4f","src/math.rs":"3046121800bded318b7d219aea401907e7d3bba3b998df6745a71e76f0734de2","src/tokens.rs":"cdf192e0c9b4ea4f3cd4148d07be2e895f937f8154acbf52caf67f7fb4df11dc","src/transfers.rs":"25f47e9cbc5887f849f5eb4d8952d89de6377df40f480ebbea61c58d2e0e7fc6"},"package":null} -\ No newline at end of file +{"files":{"Cargo.toml":"6ce40662479cee74a188bfb2a7cd9101b4216628c09f5112574334d1c66e556c","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","src/assertions.rs":"e4d2d40bc1e870a59637f4b9574743e19565a62f6dbcc21cb18a76b666b796eb","src/cast_utils.rs":"33f03a57ccbedef2699f2305bec584c623db1fd28bfdf584d1260da4fbecd529","src/counters.rs":"e2a1c69126bdb6a35f74d5062e89e242eb955014d95c2b9e6e1b03f7b4b5bd98","src/env.rs":"26ffc91867625784159bcf391881187aa92cf92b81b1f40959ce1b96ae6d554d","src/error.rs":"0109e6209cf152abbfd0cee85dd934fb24f2304bf6adad6fb684b77f151fb158","src/features.rs":"ab880ecf55be2a93244d1a03119d10ee15eddc076f100ae03d13b51eaa815b57","src/instance.rs":"deeb5ca694163baf46c386316a498cee011cf960d48b749d4cd01125e9fca57f","src/lib.rs":"ba614fe0a0e47ba29f09d3e2e110dc8fe0007a026af1c8fae3cdd3f65f3342cf","src/math.rs":"3046121800bded318b7d219aea401907e7d3bba3b998df6745a71e76f0734de2","src/tokens.rs":"cdf192e0c9b4ea4f3cd4148d07be2e895f937f8154acbf52caf67f7fb4df11dc","src/transfers.rs":"25f47e9cbc5887f849f5eb4d8952d89de6377df40f480ebbea61c58d2e0e7fc6"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/wgpu-types/Cargo.toml b/third_party/rust/wgpu-types/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.82.0" name = "wgpu-types" -version = "26.0.0" +version = "27.0.0" authors = ["gfx-rs developers"] build = false autolib = false diff --git a/third_party/rust/wgpu-types/LICENSE.MIT b/third_party/rust/wgpu-types/LICENSE.MIT @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 The gfx-rs developers +Copyright (c) 2025 The gfx-rs developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/third_party/rust/wgpu-types/src/lib.rs b/third_party/rust/wgpu-types/src/lib.rs @@ -1,7 +1,7 @@ //! This library describes the API surface of WebGPU that is agnostic of the backend. //! This API is used for targeting both Web and Native. -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![allow( // We don't use syntax sugar where it's not necessary. clippy::match_like_matches_macro, @@ -16,13 +16,14 @@ extern crate alloc; use alloc::borrow::Cow; use alloc::{string::String, vec, vec::Vec}; -use core::cmp::Ordering; use core::{ + cmp::Ordering, fmt, hash::{Hash, Hasher}, mem, num::NonZeroU32, ops::Range, + time::Duration, }; use bytemuck::{Pod, Zeroable}; @@ -4502,37 +4503,42 @@ pub enum PollType<T> { /// /// On WebGPU, this has no effect. Callbacks are invoked from the /// window event loop. - WaitForSubmissionIndex(T), - /// Same as `WaitForSubmissionIndex` but waits for the most recent submission. - Wait, + Wait { + /// Submission index to wait for. + /// + /// If not specified, will wait for the most recent submission at the time of the poll. + /// By the time the method returns, more submissions may have taken place. + submission_index: Option<T>, + + /// Max time to wait for the submission to complete. + /// + /// If not specified, will wait indefinitely (or until an error is detected). + /// If waiting for the GPU device takes this long or longer, the poll will return [`PollError::Timeout`]. + timeout: Option<Duration>, + }, + /// Check the device for a single time without blocking. Poll, } impl<T> PollType<T> { - /// Construct a [`Self::Wait`] variant - #[must_use] - pub fn wait() -> Self { - // This function seems a little silly, but it is useful to allow - // <https://github.com/gfx-rs/wgpu/pull/5012> to be split up, as - // it has meaning in that PR. - Self::Wait - } - - /// Construct a [`Self::WaitForSubmissionIndex`] variant + /// Wait indefinitely until for the most recent submission to complete. + /// + /// This is a convenience function that creates a [`Self::Wait`] variant with + /// no timeout and no submission index. #[must_use] - pub fn wait_for(submission_index: T) -> Self { - // This function seems a little silly, but it is useful to allow - // <https://github.com/gfx-rs/wgpu/pull/5012> to be split up, as - // it has meaning in that PR. - Self::WaitForSubmissionIndex(submission_index) + pub const fn wait_indefinitely() -> Self { + Self::Wait { + submission_index: None, + timeout: None, + } } /// This `PollType` represents a wait of some kind. #[must_use] pub fn is_wait(&self) -> bool { match *self { - Self::WaitForSubmissionIndex(..) | Self::Wait => true, + Self::Wait { .. } => true, Self::Poll => false, } } @@ -4544,8 +4550,13 @@ impl<T> PollType<T> { F: FnOnce(T) -> U, { match self { - Self::WaitForSubmissionIndex(i) => PollType::WaitForSubmissionIndex(func(i)), - Self::Wait => PollType::Wait, + Self::Wait { + submission_index, + timeout, + } => PollType::Wait { + submission_index: submission_index.map(func), + timeout, + }, Self::Poll => PollType::Poll, } } @@ -7824,7 +7835,7 @@ pub struct ShaderRuntimeChecks { impl ShaderRuntimeChecks { /// Creates a new configuration where the shader is fully checked. #[must_use] - pub fn checked() -> Self { + pub const fn checked() -> Self { unsafe { Self::all(true) } } @@ -7835,7 +7846,7 @@ impl ShaderRuntimeChecks { /// See the documentation for the `set_*` methods for the safety requirements /// of each sub-configuration. #[must_use] - pub fn unchecked() -> Self { + pub const fn unchecked() -> Self { unsafe { Self::all(false) } } @@ -7847,7 +7858,7 @@ impl ShaderRuntimeChecks { /// See the documentation for the `set_*` methods for the safety requirements /// of each sub-configuration. #[must_use] - pub unsafe fn all(all_checks: bool) -> Self { + pub const unsafe fn all(all_checks: bool) -> Self { Self { bounds_checks: all_checks, force_loop_bounding: all_checks,