pub struct SpirVModule {Show 15 fields
pub version: u32,
pub generator: u32,
pub bound: u32,
pub capabilities: Vec<SpirVCapability>,
pub extensions: Vec<String>,
pub ext_inst_imports: HashMap<String, u32>,
pub memory_model: (AddressingModel, MemoryModel),
pub entry_points: Vec<(ExecutionModel, u32, String, Vec<u32>)>,
pub execution_modes: Vec<(u32, ExecutionMode)>,
pub debug_names: HashMap<u32, String>,
pub decorations: HashMap<u32, Vec<Decoration>>,
pub types: Vec<SpirVInstruction>,
pub constants: Vec<SpirVInstruction>,
pub global_vars: Vec<SpirVInstruction>,
pub functions: Vec<SpirVFunction>,
}Expand description
A complete SPIR-V module.
Contains all declarations required to produce a valid SPIR-V binary: capabilities, extensions, memory model, entry points, type declarations, global variables, constants, and function bodies.
Fields§
§version: u32SPIR-V version (encoded as major<<16 | minor<<8)
generator: u32Generator magic number
bound: u32Bound (next available ID)
capabilities: Vec<SpirVCapability>Declared capabilities
extensions: Vec<String>Extension strings
ext_inst_imports: HashMap<String, u32>Extended instruction set imports (name -> id)
memory_model: (AddressingModel, MemoryModel)Addressing and memory model
entry_points: Vec<(ExecutionModel, u32, String, Vec<u32>)>Entry points: (execution_model, function_id, name, interface_vars)
execution_modes: Vec<(u32, ExecutionMode)>Execution modes per entry point
debug_names: HashMap<u32, String>Debug names (id -> name)
decorations: HashMap<u32, Vec<Decoration>>Decorations (id -> list of decorations)
types: Vec<SpirVInstruction>Type instructions (ordered by dependency)
constants: Vec<SpirVInstruction>Constants
global_vars: Vec<SpirVInstruction>Global variables
functions: Vec<SpirVFunction>Function definitions
Implementations§
Source§impl SpirVModule
impl SpirVModule
Sourcepub fn add_capability(&mut self, cap: SpirVCapability)
pub fn add_capability(&mut self, cap: SpirVCapability)
Add a capability.
Sourcepub fn add_extension(&mut self, ext: impl Into<String>)
pub fn add_extension(&mut self, ext: impl Into<String>)
Add an extension.
Sourcepub fn import_ext_inst(&mut self, name: impl Into<String>) -> u32
pub fn import_ext_inst(&mut self, name: impl Into<String>) -> u32
Import an extended instruction set and return its ID.
Sourcepub fn add_entry_point(
&mut self,
model: ExecutionModel,
func_id: u32,
name: impl Into<String>,
interface_vars: Vec<u32>,
)
pub fn add_entry_point( &mut self, model: ExecutionModel, func_id: u32, name: impl Into<String>, interface_vars: Vec<u32>, )
Add an entry point.
Sourcepub fn add_execution_mode(&mut self, func_id: u32, mode: ExecutionMode)
pub fn add_execution_mode(&mut self, func_id: u32, mode: ExecutionMode)
Add an execution mode for an entry point function.
Sourcepub fn decorate(&mut self, id: u32, decoration: Decoration)
pub fn decorate(&mut self, id: u32, decoration: Decoration)
Add a decoration to an ID.
Sourcepub fn add_type(&mut self, instr: SpirVInstruction)
pub fn add_type(&mut self, instr: SpirVInstruction)
Add a type instruction.
Sourcepub fn add_constant(&mut self, instr: SpirVInstruction)
pub fn add_constant(&mut self, instr: SpirVInstruction)
Add a constant instruction.
Sourcepub fn add_global_var(&mut self, instr: SpirVInstruction)
pub fn add_global_var(&mut self, instr: SpirVInstruction)
Add a global variable.
Sourcepub fn add_function(&mut self, func: SpirVFunction)
pub fn add_function(&mut self, func: SpirVFunction)
Add a function definition.
Sourcepub fn estimate_word_count(&self) -> u32
pub fn estimate_word_count(&self) -> u32
Estimate the total word count of the module binary.
Trait Implementations§
Source§impl Clone for SpirVModule
impl Clone for SpirVModule
Source§fn clone(&self) -> SpirVModule
fn clone(&self) -> SpirVModule
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more