diff --git a/src/nouveau/compiler/nak/from_nir.rs b/src/nouveau/compiler/nak/from_nir.rs index 6409d34376e..fb0f8d76218 100644 --- a/src/nouveau/compiler/nak/from_nir.rs +++ b/src/nouveau/compiler/nak/from_nir.rs @@ -3343,7 +3343,7 @@ impl<'a> ShaderFromNir<'a> { let (off, off_imm) = self.get_cbuf_addr_offset(&srcs[1]); let cb = CBufRef { - buf: CBuf::BindlessSSA(handle), + buf: CBuf::BindlessSSA(handle[..].try_into().unwrap()), offset: off_imm, }; diff --git a/src/nouveau/compiler/nak/ir.rs b/src/nouveau/compiler/nak/ir.rs index 566edf4e468..afa8a3637b1 100644 --- a/src/nouveau/compiler/nak/ir.rs +++ b/src/nouveau/compiler/nak/ir.rs @@ -535,7 +535,7 @@ pub enum CBuf { Binding(u8), #[allow(dead_code)] - BindlessSSA(SSARef), + BindlessSSA([SSAValue; 2]), #[allow(dead_code)] BindlessUGPR(RegRef), @@ -545,7 +545,7 @@ impl fmt::Display for CBuf { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { CBuf::Binding(idx) => write!(f, "c[{:#x}]", idx), - CBuf::BindlessSSA(v) => write!(f, "cx[{}]", v), + CBuf::BindlessSSA(v) => write!(f, "cx[{{{}, {}}}]", v[0], v[1]), CBuf::BindlessUGPR(r) => write!(f, "cx[{}]", r), } } @@ -683,7 +683,7 @@ impl SrcRef { | SrcRef::Reg(_) => &[], SrcRef::CBuf(cb) => match &cb.buf { CBuf::Binding(_) | CBuf::BindlessUGPR(_) => &[], - CBuf::BindlessSSA(ssa) => ssa.deref(), + CBuf::BindlessSSA(ssa) => &ssa[..], }, SrcRef::SSA(ssa) => ssa.deref(), } @@ -699,7 +699,7 @@ impl SrcRef { | SrcRef::Reg(_) => &mut [], SrcRef::CBuf(cb) => match &mut cb.buf { CBuf::Binding(_) | CBuf::BindlessUGPR(_) => &mut [], - CBuf::BindlessSSA(ssa) => ssa.deref_mut(), + CBuf::BindlessSSA(ssa) => &mut ssa[..], }, SrcRef::SSA(ssa) => ssa.deref_mut(), } diff --git a/src/nouveau/compiler/nak/legalize.rs b/src/nouveau/compiler/nak/legalize.rs index b9216f0d6fb..c06f10e92da 100644 --- a/src/nouveau/compiler/nak/legalize.rs +++ b/src/nouveau/compiler/nak/legalize.rs @@ -452,7 +452,7 @@ fn legalize_instr( SrcRef::CBuf(CBufRef { buf: CBuf::BindlessSSA(handle), .. - }) => assert!(pinned.contains(handle)), + }) => assert!(pinned.contains(&SSARef::new(handle))), _ => (), } }