diff --git a/drivers/graphics/driver-graphics/src/lib.rs b/drivers/graphics/driver-graphics/src/lib.rs index db3bc3c9b1..339dfc45c4 100644 --- a/drivers/graphics/driver-graphics/src/lib.rs +++ b/drivers/graphics/driver-graphics/src/lib.rs @@ -92,7 +92,7 @@ pub struct CursorPlane { pub y: i32, pub hot_x: i32, pub hot_y: i32, - pub framebuffer: Option>, + pub buffer: Option>, } pub struct GraphicsScheme { @@ -326,7 +326,7 @@ enum Handle { V2 { vt: usize, next_id: u32, - fbs: HashMap>, + buffers: HashMap>, }, SchemeRoot, } @@ -344,7 +344,7 @@ impl GraphicsSchemeInner { y: 0, hot_x: 0, hot_y: 0, - framebuffer: None, + buffer: None, }, }) } @@ -391,7 +391,7 @@ impl SchemeSync for GraphicsSchemeInner { Handle::V2 { vt, next_id: 0, - fbs: HashMap::new(), + buffers: HashMap::new(), } } else { let mut parts = path.split('/'); @@ -427,7 +427,7 @@ impl SchemeSync for GraphicsSchemeInner { Handle::V2 { vt, next_id: _, - fbs: _, + buffers: _, } => format!("/scheme/{}/v2/{vt}", self.scheme_name), Handle::SchemeRoot => return Err(Error::new(EOPNOTSUPP)), }; @@ -462,13 +462,13 @@ impl SchemeSync for GraphicsSchemeInner { id_index(i) | (1 << 13) } - fn dumb_buffer_id(i: u32) -> u32 { - id_index(i) | (1 << 14) - } - match self.handles.get_mut(&id).ok_or(Error::new(EBADF))? { Handle::V1Screen { .. } | Handle::SchemeRoot => return Err(Error::new(EOPNOTSUPP)), - Handle::V2 { vt, next_id, fbs } => match metadata[0] { + Handle::V2 { + vt, + next_id, + buffers, + } => match metadata[0] { ipc::VERSION => ipc::DrmVersion::with(payload, |mut data| { data.set_version_major(1); data.set_version_minor(4); @@ -561,9 +561,9 @@ impl SchemeSync for GraphicsSchemeInner { let update_buffer = data.flags() & DRM_MODE_CURSOR_BO != 0; if update_buffer { - cursor_plane.framebuffer = if data.handle() == 0 { + cursor_plane.buffer = if data.handle() == 0 { None - } else if let Some(buffer) = fbs.get(&id_index(data.handle())) { + } else if let Some(buffer) = buffers.get(&data.handle()) { Some(buffer.clone()) } else { return Err(Error::new(EINVAL)); @@ -718,7 +718,7 @@ impl SchemeSync for GraphicsSchemeInner { Ok(0) }), ipc::MODE_ADD_FB => ipc::DrmModeFbCmd::with(payload, |mut data| { - data.set_fb_id(fb_handle_id(id_index(data.handle()))); + data.set_fb_id(fb_handle_id(data.handle())); Ok(0) }), ipc::MODE_CREATE_DUMB => ipc::DrmModeCreateDumb::with(payload, |mut data| { @@ -729,8 +729,8 @@ impl SchemeSync for GraphicsSchemeInner { let fb = self.adapter.create_dumb_buffer(data.width(), data.height()); *next_id += 1; - fbs.insert(*next_id, Arc::new(fb)); - data.set_handle(dumb_buffer_id(*next_id as u32)); + buffers.insert(*next_id, Arc::new(fb)); + data.set_handle(*next_id as u32); data.set_pitch(data.width() * 4); data.set_size(u64::from(data.width()) * u64::from(data.height()) * 4); Ok(0) @@ -740,25 +740,24 @@ impl SchemeSync for GraphicsSchemeInner { return Err(Error::new(EINVAL)); } - let fb_id = id_index(data.handle()); + let buffer_id = data.handle(); - if !fbs.contains_key(&fb_id) { + if !buffers.contains_key(&buffer_id) { return Err(Error::new(EINVAL)); } // FIXME use a better scheme for creating map offsets assert!( - ((fbs[&fb_id].width() * fbs[&fb_id].height() * 4) as usize) + ((buffers[&buffer_id].width() * buffers[&buffer_id].height() * 4) as usize) < MAP_FAKE_OFFSET_MULTIPLIER ); - data.set_offset((fb_id as usize * MAP_FAKE_OFFSET_MULTIPLIER) as u64); + data.set_offset((buffer_id as usize * MAP_FAKE_OFFSET_MULTIPLIER) as u64); Ok(0) }), ipc::MODE_DESTROY_DUMB => ipc::DrmModeDestroyDumb::with(payload, |data| { - let fb_id = id_index(data.handle()); - if fbs.remove(&fb_id).is_none() { + if buffers.remove(&data.handle()).is_none() { return Err(Error::new(ENOENT)); } Ok(0) @@ -809,9 +808,9 @@ impl SchemeSync for GraphicsSchemeInner { let update_buffer = data.flags() & DRM_MODE_CURSOR_BO != 0; if update_buffer { - cursor_plane.framebuffer = if data.handle() == 0 { + cursor_plane.buffer = if data.handle() == 0 { None - } else if let Some(buffer) = fbs.get(&id_index(data.handle())) { + } else if let Some(buffer) = buffers.get(&data.handle()) { Some(buffer.clone()) } else { return Err(Error::new(EINVAL)); @@ -858,7 +857,7 @@ impl SchemeSync for GraphicsSchemeInner { let framebuffer = if payload.fb_id == 0 { None - } else if let Some(framebuffer) = fbs.get(&id_index(payload.fb_id)) { + } else if let Some(framebuffer) = buffers.get(&id_index(payload.fb_id)) { Some(framebuffer) } else { return Err(Error::new(EINVAL)); @@ -902,9 +901,10 @@ impl SchemeSync for GraphicsSchemeInner { Handle::V2 { vt: _, next_id: _, - fbs, + buffers, } => ( - fbs.get(&((offset as usize / MAP_FAKE_OFFSET_MULTIPLIER) as u32)) + buffers + .get(&((offset as usize / MAP_FAKE_OFFSET_MULTIPLIER) as u32)) .ok_or(Error::new(EINVAL)) .unwrap(), offset & (MAP_FAKE_OFFSET_MULTIPLIER as u64 - 1), diff --git a/drivers/graphics/virtio-gpud/src/scheme.rs b/drivers/graphics/virtio-gpud/src/scheme.rs index c507ada4a8..8c12e6085d 100644 --- a/drivers/graphics/virtio-gpud/src/scheme.rs +++ b/drivers/graphics/virtio-gpud/src/scheme.rs @@ -492,7 +492,7 @@ impl<'a> GraphicsAdapter for VirtGpuAdapter<'a> { } fn handle_cursor(&mut self, cursor: &CursorPlane, dirty_fb: bool) { - if let Some(buffer) = &cursor.framebuffer { + if let Some(buffer) = &cursor.buffer { if dirty_fb { self.update_cursor(buffer, cursor.x, cursor.y, cursor.hot_x, cursor.hot_y); } else {