///|
priv suberror WgslIrEmitError {
MissingHandle(String)
MissingName(String)
Unsupported(String)
}
///|
fn WgslIrEmitError::message(self : WgslIrEmitError) -> String {
match self {
MissingHandle(message) => "missing IR handle: \{message}"
MissingName(message) => "missing IR name: \{message}"
Unsupported(message) => "unsupported IR emission: \{message}"
}
}
///|
fn emit_wgsl_module_from_ir(
shader_module : Module,
) -> String raise WgslIrEmitError {
emit_wgsl_module_with_runtime_writer_backend(shader_module, None)
}
///|
fn emit_wgsl_module_from_ir_compat_writer(
shader_module : Module,
) -> String raise WgslIrEmitError {
emit_wgsl_module_with_compat_writer_backend(shader_module, None)
}
///|
fn emit_wgsl_module_from_ir_roots(
shader_module : Module,
root_items : Array[String],
) -> String raise WgslIrEmitError {
emit_wgsl_module_with_runtime_writer_backend(shader_module, Some(root_items))
}
///|
fn emit_wgsl_module_from_ir_compat_writer_roots(
shader_module : Module,
root_items : Array[String],
) -> String raise WgslIrEmitError {
emit_wgsl_module_with_compat_writer_backend(shader_module, Some(root_items))
}
///|
priv struct WgslIrEmitter {
shader_module : Module
options : WgslIrEmitOptions
writer_module : WgslIrWriterModule
names : WgslIrFinalNamePlan
current_function_origin : WgslIrEmitFunctionOrigin?
mut compat_negative_zero_seen : Bool
emitted_function_named_expressions : @set.Set[Int]
emitted_function_materialized_expressions : @set.Set[Int]
}