diff --git a/Cargo.toml b/Cargo.toml index 267e88f..4bfc3b3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,8 +16,6 @@ glsl = ["naga/glsl-in", "naga/glsl-out"] override_any = [] prune = [] allow_deprecated = [] -# forces composable modules to include "enable wgpu_ray_query" -override_enable_ray_query = [] [dependencies] naga = { version = "28", features = ["wgsl-in", "wgsl-out", "termcolor"] } diff --git a/src/compose/mod.rs b/src/compose/mod.rs index b76667b..3e03e6e 100644 --- a/src/compose/mod.rs +++ b/src/compose/mod.rs @@ -275,6 +275,8 @@ pub struct ComposableModuleDefinition { modules: HashMap, // used in spans when this module is included module_index: usize, + // any directives used in this module + wgsl_directives: WgslDirectives, } impl ComposableModuleDefinition { @@ -585,17 +587,12 @@ impl Composer { language: ShaderLanguage, imports: &[ImportDefinition], shader_defs: &HashMap, - wgsl_directives: Option, + wgsl_directives: &WgslDirectives, ) -> Result { debug!("creating IR for {} with defs: {:?}", name, shader_defs); - let mut wgsl_string = String::new(); - if let Some(wgsl_directives) = &wgsl_directives { - trace!("adding WGSL directives for {}", name); - wgsl_string = wgsl_directives.to_wgsl_string(); - } let mut module_string = match language { - ShaderLanguage::Wgsl => wgsl_string, + ShaderLanguage::Wgsl => wgsl_directives.to_wgsl_string(), #[cfg(feature = "glsl")] ShaderLanguage::Glsl => String::from("#version 450\n"), }; @@ -853,7 +850,6 @@ impl Composer { demote_entrypoints: bool, source: &str, imports: Vec, - wgsl_directives: Option, ) -> Result { let mut imports: Vec<_> = imports .into_iter() @@ -987,7 +983,7 @@ impl Composer { module_definition.language, &imports, shader_defs, - wgsl_directives, + &module_definition.wgsl_directives, )?; // from here on errors need to be reported using the modified source with start_offset @@ -1389,17 +1385,6 @@ impl Composer { true, &preprocessed_source, imports, - if cfg!(feature = "override_enable_ray_query") { - Some(WgslDirectives { - enables: vec![EnableDirective { - extensions: vec!["wgpu_ray_query".to_string()], - source_location: 0, - }], - ..Default::default() - }) - } else { - None - }, ) .map_err(|err| err.into()) } @@ -1544,6 +1529,7 @@ impl Composer { mut imports, mut effective_defs, cleaned_source, + wgsl_directives, .. } = self .preprocessor @@ -1629,6 +1615,7 @@ impl Composer { shader_defs, module_index, modules: Default::default(), + wgsl_directives, }; // invalidate dependent modules if this module already exists @@ -1775,6 +1762,7 @@ impl Composer { all_imports: Default::default(), shader_defs: Default::default(), modules: Default::default(), + wgsl_directives, }; let PreprocessOutput { @@ -1801,7 +1789,6 @@ impl Composer { false, &preprocessed_source, imports, - Some(wgsl_directives), ) .map_err(|e| ComposerError { inner: e.inner, diff --git a/src/compose/test.rs b/src/compose/test.rs index a686a39..2879309 100644 --- a/src/compose/test.rs +++ b/src/compose/test.rs @@ -1298,7 +1298,6 @@ mod test { output_eq!(wgsl, "tests/expected/atomics.txt"); } - #[cfg(feature = "override_enable_ray_query")] #[test] fn test_raycasts() { let mut composer = diff --git a/src/compose/tests/raycast/mod.wgsl b/src/compose/tests/raycast/mod.wgsl index 9cdac54..c7a0c7e 100644 --- a/src/compose/tests/raycast/mod.wgsl +++ b/src/compose/tests/raycast/mod.wgsl @@ -1,3 +1,5 @@ +enable wgpu_ray_query; + #define_import_path test_module @group(0) @binding(0) var tlas: acceleration_structure;