pub trait Optimizer {
    // Required methods
    fn with_env(target_env: TargetEnv) -> Self;
    fn optimize<MC: MessageCallback>(
        &self,
        input: impl AsRef<[u32]>,
        msg_callback: &mut MC,
        options: Option<Options>
    ) -> Result<Binary, Error>;
    fn register_pass(&mut self, pass: Passes) -> &mut Self;
    fn register_performance_passes(&mut self) -> &mut Self;
    fn register_size_passes(&mut self) -> &mut Self;
    fn register_hlsl_legalization_passes(&mut self) -> &mut Self;
}

Required Methods§

source

fn with_env(target_env: TargetEnv) -> Self

source

fn optimize<MC: MessageCallback>( &self, input: impl AsRef<[u32]>, msg_callback: &mut MC, options: Option<Options> ) -> Result<Binary, Error>

source

fn register_pass(&mut self, pass: Passes) -> &mut Self

Register a single pass with the the optimizer.

source

fn register_performance_passes(&mut self) -> &mut Self

Registers passes that attempt to improve performance of generated code. This sequence of passes is subject to constant review and will change from time to time.

source

fn register_size_passes(&mut self) -> &mut Self

Registers passes that attempt to improve the size of generated code. This sequence of passes is subject to constant review and will change from time to time.

source

fn register_hlsl_legalization_passes(&mut self) -> &mut Self

Registers passes that attempt to legalize the generated code.

Note: this recipe is specially designed for legalizing SPIR-V. It should be used by compilers after translating HLSL source code literally. It should not be used by general workloads for performance or size improvement.

This sequence of passes is subject to constant review and will change from time to time.

Object Safety§

This trait is not object safe.

Implementors§