pub struct Composer {
pub validate: bool,
pub module_sets: HashMap<String, ComposableModuleDefinition>,
pub module_index: HashMap<usize, String>,
pub capabilities: Capabilities,
pub subgroup_stages: ShaderStages,
/* private fields */
}
Expand description
module composer. stores any modules that can be imported into a shader and builds the final shader
Fields§
§validate: bool
§module_sets: HashMap<String, ComposableModuleDefinition>
§module_index: HashMap<usize, String>
§capabilities: Capabilities
§subgroup_stages: ShaderStages
The shader stages that the subgroup operations are valid for. Used when creating a validator for the module. See https://github.com/gfx-rs/wgpu/blob/d9c054c645af0ea9ef81617c3e762fbf0f3fecda/wgpu-core/src/device/mod.rs#L515 for how to set this for proper subgroup ops support.
Implementations§
source§impl Composer
impl Composer
sourcepub fn non_validating() -> Self
pub fn non_validating() -> Self
create a non-validating composer. validation errors in the final shader will not be caught, and errors resulting from their use will have bad span data, so codespan reporting will fail. use default() to create a validating composer.
sourcepub fn with_capabilities(
self,
capabilities: Capabilities,
subgroup_stages: ShaderStages
) -> Self
pub fn with_capabilities( self, capabilities: Capabilities, subgroup_stages: ShaderStages ) -> Self
specify capabilities to be used for naga module generation. purges any existing modules See https://github.com/gfx-rs/wgpu/blob/d9c054c645af0ea9ef81617c3e762fbf0f3fecda/wgpu-core/src/device/mod.rs#L515 for how to set the subgroup_stages value.
sourcepub fn contains_module(&self, module_name: &str) -> bool
pub fn contains_module(&self, module_name: &str) -> bool
check if a module with the given name has been added
sourcepub fn add_composable_module(
&mut self,
desc: ComposableModuleDescriptor<'_>
) -> Result<&ComposableModuleDefinition, ComposerError>
pub fn add_composable_module( &mut self, desc: ComposableModuleDescriptor<'_> ) -> Result<&ComposableModuleDefinition, ComposerError>
add a composable module to the composer. all modules imported by this module must already have been added
sourcepub fn remove_composable_module(&mut self, module_name: &str)
pub fn remove_composable_module(&mut self, module_name: &str)
remove a composable module. also removes modules that depend on this module, as we cannot be sure about the completeness of their effective shader defs any more…
sourcepub fn make_naga_module(
&mut self,
desc: NagaModuleDescriptor<'_>
) -> Result<Module, ComposerError>
pub fn make_naga_module( &mut self, desc: NagaModuleDescriptor<'_> ) -> Result<Module, ComposerError>
build a naga shader module