From 6d62cc5bc38601e11a471b7323f8b5ac06f70039 Mon Sep 17 00:00:00 2001 From: Gordon-F Date: Thu, 25 Mar 2021 21:46:35 +0300 Subject: [PATCH 1/2] [rs] Update to latest wgpu, naga, gfx. --- wgpu/Cargo.toml | 10 +++++----- wgpu/examples/mipmap/main.rs | 2 +- wgpu/examples/shadow/main.rs | 2 +- wgpu/src/backend/direct.rs | 2 +- wgpu/src/backend/web.rs | 8 +++++--- wgpu/src/lib.rs | 2 +- wgpu/tests/example-wgsl.rs | 6 ++++-- 7 files changed, 18 insertions(+), 14 deletions(-) diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index 96e0538a3a..e0817b303f 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -28,20 +28,20 @@ cross = ["wgc/cross"] [target.'cfg(not(target_arch = "wasm32"))'.dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "9c98ebc48cc53ec696e073da510bef9a819b1916" +rev = "b7ba481a9170e5b9c6364b2eb16080e527462039" features = ["raw-window-handle"] [target.'cfg(target_arch = "wasm32")'.dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "9c98ebc48cc53ec696e073da510bef9a819b1916" +rev = "b7ba481a9170e5b9c6364b2eb16080e527462039" features = ["raw-window-handle"] optional = true [dependencies.wgt] package = "wgpu-types" git = "https://github.com/gfx-rs/wgpu" -rev = "9c98ebc48cc53ec696e073da510bef9a819b1916" +rev = "b7ba481a9170e5b9c6364b2eb16080e527462039" [dependencies] arrayvec = "0.5" @@ -70,13 +70,13 @@ env_logger = "0.8" # used to test all the example shaders [dev-dependencies.naga] git = "https://github.com/gfx-rs/naga" -tag = "gfx-17" +tag = "gfx-18" features = ["wgsl-in"] # used to generate SPIR-V for the Web target [target.'cfg(target_arch = "wasm32")'.dependencies.naga] git = "https://github.com/gfx-rs/naga" -tag = "gfx-17" +tag = "gfx-18" features = ["wgsl-in", "spv-out"] [[example]] diff --git a/wgpu/examples/mipmap/main.rs b/wgpu/examples/mipmap/main.rs index bb096f4bf5..00f1aaccea 100644 --- a/wgpu/examples/mipmap/main.rs +++ b/wgpu/examples/mipmap/main.rs @@ -127,7 +127,7 @@ impl Example { dimension: None, aspect: wgpu::TextureAspect::All, base_mip_level: mip, - level_count: NonZeroU32::new(1), + mip_level_count: NonZeroU32::new(1), base_array_layer: 0, array_layer_count: None, }) diff --git a/wgpu/examples/shadow/main.rs b/wgpu/examples/shadow/main.rs index d6cde07506..b56766477b 100644 --- a/wgpu/examples/shadow/main.rs +++ b/wgpu/examples/shadow/main.rs @@ -369,7 +369,7 @@ impl framework::Example for Example { dimension: Some(wgpu::TextureViewDimension::D2), aspect: wgpu::TextureAspect::All, base_mip_level: 0, - level_count: None, + mip_level_count: None, base_array_layer: i as u32, array_layer_count: NonZeroU32::new(1), })) diff --git a/wgpu/src/backend/direct.rs b/wgpu/src/backend/direct.rs index 75da20ff44..cd7c98533c 100644 --- a/wgpu/src/backend/direct.rs +++ b/wgpu/src/backend/direct.rs @@ -1369,7 +1369,7 @@ impl crate::Context for Context { dimension: desc.dimension, aspect: desc.aspect, base_mip_level: desc.base_mip_level, - level_count: desc.level_count, + mip_level_count: desc.mip_level_count, base_array_layer: desc.base_array_layer, array_layer_count: desc.array_layer_count, }; diff --git a/wgpu/src/backend/web.rs b/wgpu/src/backend/web.rs index 3109d343c5..e8972ae1db 100644 --- a/wgpu/src/backend/web.rs +++ b/wgpu/src/backend/web.rs @@ -1131,7 +1131,7 @@ impl crate::Context for Context { web_sys::GpuShaderModuleDescriptor::new(&js_sys::Uint32Array::from(&**spv)) } crate::ShaderSource::Wgsl(ref code) => { - use naga::{back::spv, front::wgsl, proc::Validator}; + use naga::{back::spv, front::wgsl, valid::Validator}; let module = wgsl::parse_str(code).unwrap(); let mut capabilities = HashSet::default(); capabilities.insert(spv::Capability::Shader); @@ -1140,7 +1140,9 @@ impl crate::Context for Context { flags: spv::WriterFlags::empty(), capabilities, }; - let analysis = Validator::new().validate(&module).unwrap(); + let analysis = Validator::new(naga::valid::ValidationFlags::all()) + .validate(&module) + .unwrap(); let words = spv::write_vec(&module, &analysis, &options).unwrap(); web_sys::GpuShaderModuleDescriptor::new(&js_sys::Uint32Array::from(&words[..])) } @@ -1609,7 +1611,7 @@ impl crate::Context for Context { mapped.array_layer_count(count.get()); } mapped.base_mip_level(desc.base_mip_level); - if let Some(count) = desc.level_count { + if let Some(count) = desc.mip_level_count { mapped.mip_level_count(count.get()); } if let Some(label) = desc.label { diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 7c29a87143..f7fbae245c 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -1068,7 +1068,7 @@ pub struct TextureViewDescriptor<'a> { /// Mip level count. /// If `Some(count)`, `base_mip_level + count` must be less or equal to underlying texture mip count. /// If `None`, considered to include the rest of the mipmap levels, but at least 1 in total. - pub level_count: Option, + pub mip_level_count: Option, /// Base array layer. pub base_array_layer: u32, /// Layer count. diff --git a/wgpu/tests/example-wgsl.rs b/wgpu/tests/example-wgsl.rs index 545987cb8c..a9da3bd2d5 100644 --- a/wgpu/tests/example-wgsl.rs +++ b/wgpu/tests/example-wgsl.rs @@ -1,4 +1,4 @@ -use naga::{front::wgsl, proc::Validator}; +use naga::{front::wgsl, valid::Validator}; use std::{fs, path::PathBuf}; #[test] @@ -41,7 +41,9 @@ fn parse_example_wgsl() { let module = wgsl::parse_str(&shader).unwrap(); //TODO: re-use the validator - Validator::new().validate(&module).unwrap(); + Validator::new(naga::valid::ValidationFlags::all()) + .validate(&module) + .unwrap(); } } } From 6485e81f4bb542c60e931d27e8bb55901578db6f Mon Sep 17 00:00:00 2001 From: Gordon-F Date: Thu, 25 Mar 2021 21:56:22 +0300 Subject: [PATCH 2/2] [rs] Enable EXPERIMENTAL_TRANSLATION with GL backend for some examples --- wgpu/examples/boids/main.rs | 2 +- wgpu/examples/cube/main.rs | 2 +- wgpu/examples/hello-compute/main.rs | 2 +- wgpu/src/backend/error.rs | 3 +-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/wgpu/examples/boids/main.rs b/wgpu/examples/boids/main.rs index c84dd6cd58..7048d6fb18 100644 --- a/wgpu/examples/boids/main.rs +++ b/wgpu/examples/boids/main.rs @@ -37,7 +37,7 @@ impl framework::Example for Example { // load and compile the shader let mut flags = wgpu::ShaderFlags::VALIDATION; match adapter.get_info().backend { - wgt::Backend::Vulkan | wgt::Backend::Metal => { + wgt::Backend::Vulkan | wgt::Backend::Metal | wgt::Backend::Gl => { flags |= wgpu::ShaderFlags::EXPERIMENTAL_TRANSLATION; } _ => {} //TODO diff --git a/wgpu/examples/cube/main.rs b/wgpu/examples/cube/main.rs index bb6670dda0..df565702cc 100644 --- a/wgpu/examples/cube/main.rs +++ b/wgpu/examples/cube/main.rs @@ -250,7 +250,7 @@ impl framework::Example for Example { let mut flags = wgpu::ShaderFlags::VALIDATION; match adapter.get_info().backend { - wgpu::Backend::Metal | wgpu::Backend::Vulkan => { + wgpu::Backend::Metal | wgpu::Backend::Vulkan | wgpu::Backend::Gl => { flags |= wgpu::ShaderFlags::EXPERIMENTAL_TRANSLATION } _ => (), //TODO diff --git a/wgpu/examples/hello-compute/main.rs b/wgpu/examples/hello-compute/main.rs index 6e70c0236c..79523677a2 100644 --- a/wgpu/examples/hello-compute/main.rs +++ b/wgpu/examples/hello-compute/main.rs @@ -58,7 +58,7 @@ async fn execute_gpu(numbers: Vec) -> Vec { // Loads the shader from the SPIR-V file.arrayvec let mut flags = wgpu::ShaderFlags::VALIDATION; match adapter.get_info().backend { - wgpu::Backend::Vulkan | wgpu::Backend::Metal => { + wgpu::Backend::Vulkan | wgpu::Backend::Metal | wgpu::Backend::Gl => { flags |= wgpu::ShaderFlags::EXPERIMENTAL_TRANSLATION; } _ => {} diff --git a/wgpu/src/backend/error.rs b/wgpu/src/backend/error.rs index e02fa2170a..df4ac0e037 100644 --- a/wgpu/src/backend/error.rs +++ b/wgpu/src/backend/error.rs @@ -22,8 +22,7 @@ impl Error for ContextError { impl super::Context { pub(super) fn format_error(&self, err: &(impl Error + 'static)) -> String { - let mut err_descs = Vec::new(); - err_descs.push(self.format_pretty_any(err)); + let mut err_descs = vec![self.format_pretty_any(err)]; let mut source_opt = err.source(); while let Some(source) = source_opt {