diff --git a/graphics/driver-graphics/src/lib.rs b/graphics/driver-graphics/src/lib.rs index 383e34cb7f..0fc6995aa0 100644 --- a/graphics/driver-graphics/src/lib.rs +++ b/graphics/driver-graphics/src/lib.rs @@ -225,6 +225,8 @@ impl GraphicsScheme { } } +const MAP_FAKE_OFFSET_MULTIPLIER: usize = 0x10_000_000; + impl SchemeSync for GraphicsScheme { fn open(&mut self, path: &str, _flags: usize, _ctx: &CallerCtx) -> Result { if path.is_empty() { @@ -490,9 +492,12 @@ impl SchemeSync for GraphicsScheme { } // FIXME use a better scheme for creating map offsets - assert!(fbs[&fb_id].width() * fbs[&fb_id].height() * 4 < 0x1_000_000); + assert!( + ((fbs[&fb_id].width() * fbs[&fb_id].height() * 4) as usize) + < MAP_FAKE_OFFSET_MULTIPLIER + ); - payload.offset = fb_id * 0x10_000_000; + payload.offset = fb_id * MAP_FAKE_OFFSET_MULTIPLIER; Ok(size_of::()) } @@ -562,10 +567,10 @@ impl SchemeSync for GraphicsScheme { next_id: _, fbs, } => ( - fbs.get(&(offset as usize / 0x10_000_000)) + fbs.get(&(offset as usize / MAP_FAKE_OFFSET_MULTIPLIER)) .ok_or(Error::new(EINVAL)) .unwrap(), - offset & (0x10_000_000 - 1), + offset & (MAP_FAKE_OFFSET_MULTIPLIER as u64 - 1), ), }; let ptr = T::map_dumb_framebuffer(&mut self.adapter, framebuffer);