diff --git a/src/nouveau/compiler/nak.rs b/src/nouveau/compiler/nak.rs index df977c1bb16..2b7c54ba2dc 100644 --- a/src/nouveau/compiler/nak.rs +++ b/src/nouveau/compiler/nak.rs @@ -261,8 +261,9 @@ pub extern "C" fn nak_compile_shader( ) -> *mut nak_shader_bin { unsafe { nak_postprocess_nir(nir, nak) }; let nir = unsafe { &*nir }; + let nak = unsafe { &*nak }; - let mut s = nak_shader_from_nir(nir); + let mut s = nak_shader_from_nir(nir, nak.sm); println!("NAK IR:\n{}", &s); diff --git a/src/nouveau/compiler/nak_from_nir.rs b/src/nouveau/compiler/nak_from_nir.rs index 562ca7d1701..056e19d1d7b 100644 --- a/src/nouveau/compiler/nak_from_nir.rs +++ b/src/nouveau/compiler/nak_from_nir.rs @@ -363,8 +363,8 @@ impl<'a> ShaderFromNir<'a> { self.func.take().unwrap() } - pub fn parse_shader(&mut self) -> Shader { - let mut s = Shader::new(); + pub fn parse_shader(&mut self, sm: u8) -> Shader { + let mut s = Shader::new(sm); for nf in self.nir.iter_functions() { if let Some(nfi) = nf.get_impl() { let f = self.parse_function_impl(nfi); @@ -375,6 +375,6 @@ impl<'a> ShaderFromNir<'a> { } } -pub fn nak_shader_from_nir(ns: &nir_shader) -> Shader { - ShaderFromNir::new(ns).parse_shader() +pub fn nak_shader_from_nir(ns: &nir_shader, sm: u8) -> Shader { + ShaderFromNir::new(ns).parse_shader(sm) } diff --git a/src/nouveau/compiler/nak_ir.rs b/src/nouveau/compiler/nak_ir.rs index b3f0cb58c2f..92fef0a1448 100644 --- a/src/nouveau/compiler/nak_ir.rs +++ b/src/nouveau/compiler/nak_ir.rs @@ -1149,12 +1149,14 @@ impl fmt::Display for Function { } pub struct Shader { + pub sm: u8, pub functions: Vec, } impl Shader { - pub fn new() -> Shader { + pub fn new(sm: u8) -> Shader { Shader { + sm: sm, functions: Vec::new(), } }