diff --git a/src/gallium/frontends/rusticl/core/memory.rs b/src/gallium/frontends/rusticl/core/memory.rs index 49f6c51379a..d8e2a413e09 100644 --- a/src/gallium/frontends/rusticl/core/memory.rs +++ b/src/gallium/frontends/rusticl/core/memory.rs @@ -591,9 +591,7 @@ impl Mem { } pub fn has_same_parent(&self, other: &Self) -> bool { - let a = self.parent.as_ref().map_or(self, |p| p); - let b = other.parent.as_ref().map_or(other, |p| p); - ptr::eq(a, b) + ptr::eq(self.get_parent(), other.get_parent()) } pub fn is_parent_buffer(&self) -> bool { @@ -605,18 +603,21 @@ impl Mem { } fn get_res(&self) -> CLResult<&HashMap, Arc>> { - self.parent - .as_ref() - .map_or(self, |p| p.as_ref()) - .res - .as_ref() - .ok_or(CL_OUT_OF_HOST_MEMORY) + self.get_parent().res.as_ref().ok_or(CL_OUT_OF_HOST_MEMORY) } pub fn get_res_of_dev(&self, dev: &Arc) -> CLResult<&Arc> { Ok(self.get_res()?.get(dev).unwrap()) } + fn get_parent(&self) -> &Self { + if let Some(parent) = &self.parent { + parent + } else { + self + } + } + fn to_parent<'a>(&'a self, offset: &mut usize) -> &'a Self { if let Some(parent) = &self.parent { offset.add_assign(self.offset);