Struct rspirv::dr::Module[][src]

pub struct Module {
Show 13 fields pub header: Option<ModuleHeader>, pub capabilities: Vec<Instruction>, pub extensions: Vec<Instruction>, pub ext_inst_imports: Vec<Instruction>, pub memory_model: Option<Instruction>, pub entry_points: Vec<Instruction>, pub execution_modes: Vec<Instruction>, pub debug_string_source: Vec<Instruction>, pub debug_names: Vec<Instruction>, pub debug_module_processed: Vec<Instruction>, pub annotations: Vec<Instruction>, pub types_global_values: Vec<Instruction>, pub functions: Vec<Function>,
}
Expand description

Data representation of a SPIR-V module.

Most of the fields are just vectors of Instructions, but some fields store values decomposed from Instructions for better investigation.

The order of its fields basically reveal the requirements in the Logical Layout of a Module of the SPIR-V of the SPIR-V specification.

Fields

header: Option<ModuleHeader>

The module header.

capabilities: Vec<Instruction>

All OpCapability instructions.

extensions: Vec<Instruction>

All OpExtension instructions.

ext_inst_imports: Vec<Instruction>

All OpExtInstImport instructions.

memory_model: Option<Instruction>

The OpMemoryModel instruction.

Although it is required by the specification to appear exactly once per module, we keep it optional here to allow flexibility.

entry_points: Vec<Instruction>

All entry point declarations, using OpEntryPoint.

execution_modes: Vec<Instruction>

All execution mode declarations, using OpExecutionMode.

debug_string_source: Vec<Instruction>

Debug subsection: All OpString, OpSourceExtension, OpSource, and OpSourceContinued.

debug_names: Vec<Instruction>

Debug subsection: All OpName and all OpMemberName.

debug_module_processed: Vec<Instruction>

Debug subsection: All OpModuleProcessed instructions.

annotations: Vec<Instruction>

All annotation instructions.

types_global_values: Vec<Instruction>

All types, constants, and global variables.

As per the specification, they have to be bundled together because they can depend on one another.

functions: Vec<Function>

All functions.

Implementations

Creates a new empty Module instance.

Returns an iterator over all global instructions.

Returns a mut iterator over all global instructions.

Returns a iterator over all instructions.

Returns a mut iterator over all instructions.

Trait Implementations

Assembles the current object into the result vector, reducing the need for lots of allocations

Assembles the current object and returns the binary code. Helper method to remain backwards compatible, calls assemble_into Read more

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Disassembles this module and returns the disassembly text.

This method will try to link information together to be wise. E.g., If the extended instruction set is recognized, the symbolic opcode for instructions in it will be shown.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.