diff --git a/Cargo.lock b/Cargo.lock index 86bd7a801..739a2cbaa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -418,7 +418,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" dependencies = [ - "proc-macro2 1.0.18", + "proc-macro2 1.0.24", "quote 1.0.7", "syn", ] @@ -1126,7 +1126,7 @@ dependencies = [ [[package]] name = "naga" version = "0.2.0" -source = "git+https://github.com/gfx-rs/naga?rev=aa35110471ee7915e1f4e1de61ea41f2f32f92c4#aa35110471ee7915e1f4e1de61ea41f2f32f92c4" +source = "git+https://github.com/gfx-rs/naga?rev=4d4e1cd4cbfad2b81264a7239a336b6ec1346611#4d4e1cd4cbfad2b81264a7239a336b6ec1346611" dependencies = [ "bitflags", "fxhash", @@ -1228,7 +1228,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.18", + "proc-macro2 1.0.24", "quote 1.0.7", "syn", ] @@ -1428,9 +1428,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.18" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ "unicode-xid 0.2.0", ] @@ -1456,7 +1456,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" dependencies = [ - "proc-macro2 1.0.18", + "proc-macro2 1.0.24", ] [[package]] @@ -1632,7 +1632,7 @@ version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f2c3ac8e6ca1e9c80b8be1023940162bf81ae3cffbb1809474152f2ce1eb250" dependencies = [ - "proc-macro2 1.0.18", + "proc-macro2 1.0.24", "quote 1.0.7", "syn", ] @@ -1788,11 +1788,11 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.31" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5304cfdf27365b7585c25d4af91b35016ed21ef88f17ced89c7093b43dba8b6" +checksum = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac" dependencies = [ - "proc-macro2 1.0.18", + "proc-macro2 1.0.24", "quote 1.0.7", "unicode-xid 0.2.0", ] @@ -1808,20 +1808,20 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08" +checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793" +checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56" dependencies = [ - "proc-macro2 1.0.18", + "proc-macro2 1.0.24", "quote 1.0.7", "syn", ] @@ -1985,7 +1985,7 @@ dependencies = [ "bumpalo", "lazy_static", "log", - "proc-macro2 1.0.18", + "proc-macro2 1.0.24", "quote 1.0.7", "syn", "wasm-bindgen-shared", @@ -2007,7 +2007,7 @@ version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" dependencies = [ - "proc-macro2 1.0.18", + "proc-macro2 1.0.24", "quote 1.0.7", "syn", "wasm-bindgen-backend", diff --git a/wgpu-core/Cargo.toml b/wgpu-core/Cargo.toml index 3f3e64dbf..79883af3d 100644 --- a/wgpu-core/Cargo.toml +++ b/wgpu-core/Cargo.toml @@ -40,7 +40,7 @@ gpu-alloc = { git = "https://github.com/zakarumych/gpu-alloc", rev = "2bb7ef9474 [dependencies.naga] version = "0.2" git = "https://github.com/gfx-rs/naga" -rev = "aa35110471ee7915e1f4e1de61ea41f2f32f92c4" +rev = "4d4e1cd4cbfad2b81264a7239a336b6ec1346611" features = ["spv-in", "spv-out", "wgsl-in"] [dependencies.wgt] diff --git a/wgpu-core/src/device/mod.rs b/wgpu-core/src/device/mod.rs index 1de87c154..7e65ad3e7 100644 --- a/wgpu-core/src/device/mod.rs +++ b/wgpu-core/src/device/mod.rs @@ -2478,7 +2478,7 @@ impl Global { let module = if device.private_features.shader_validation { // Parse the given shader code and store its representation. let spv_iter = spv.into_iter().cloned(); - naga::front::spv::Parser::new(spv_iter) + naga::front::spv::Parser::new(spv_iter, &Default::default()) .parse() .map_err(|err| { // TODO: eventually, when Naga gets support for all features, diff --git a/wgpu-core/src/validation.rs b/wgpu-core/src/validation.rs index e63cda887..d7d7034f5 100644 --- a/wgpu-core/src/validation.rs +++ b/wgpu-core/src/validation.rs @@ -132,14 +132,18 @@ fn get_aligned_type_size( Ti::Pointer { .. } => 4, Ti::Array { base, - size: naga::ArraySize::Static(count), + size: naga::ArraySize::Constant(const_handle), stride, } => { let base_size = match stride { Some(stride) => stride.get() as wgt::BufferAddress, None => get_aligned_type_size(module, base, false), }; - base_size * count as wgt::BufferAddress + let count = match module.constants[const_handle].inner { + naga::ConstantInner::Uint(value) => value, + ref other => panic!("Invalid array size constant: {:?}", other), + }; + base_size * count } Ti::Array { base, @@ -786,7 +790,7 @@ fn derive_binding_type( dynamic, min_binding_size: wgt::BufferSize::new(actual_size), }, - naga::StorageClass::StorageBuffer => BindingType::StorageBuffer { + naga::StorageClass::Storage => BindingType::StorageBuffer { dynamic, min_binding_size: wgt::BufferSize::new(actual_size), readonly: !usage.contains(naga::GlobalUse::STORE),