drivers/graphics: Rename buffer related fields and variables
And clarify that buffers have a separate index namespace by removing usage of dumb_buffer_id.
This commit is contained in:
@@ -92,7 +92,7 @@ pub struct CursorPlane<C: Buffer> {
|
||||
pub y: i32,
|
||||
pub hot_x: i32,
|
||||
pub hot_y: i32,
|
||||
pub framebuffer: Option<Arc<C>>,
|
||||
pub buffer: Option<Arc<C>>,
|
||||
}
|
||||
|
||||
pub struct GraphicsScheme<T: GraphicsAdapter> {
|
||||
@@ -326,7 +326,7 @@ enum Handle<T: GraphicsAdapter> {
|
||||
V2 {
|
||||
vt: usize,
|
||||
next_id: u32,
|
||||
fbs: HashMap<u32, Arc<T::Buffer>>,
|
||||
buffers: HashMap<u32, Arc<T::Buffer>>,
|
||||
},
|
||||
SchemeRoot,
|
||||
}
|
||||
@@ -344,7 +344,7 @@ impl<T: GraphicsAdapter> GraphicsSchemeInner<T> {
|
||||
y: 0,
|
||||
hot_x: 0,
|
||||
hot_y: 0,
|
||||
framebuffer: None,
|
||||
buffer: None,
|
||||
},
|
||||
})
|
||||
}
|
||||
@@ -391,7 +391,7 @@ impl<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
Handle::V2 {
|
||||
vt,
|
||||
next_id: 0,
|
||||
fbs: HashMap::new(),
|
||||
buffers: HashMap::new(),
|
||||
}
|
||||
} else {
|
||||
let mut parts = path.split('/');
|
||||
@@ -427,7 +427,7 @@ impl<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
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<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
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<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
|
||||
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<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
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<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
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<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
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<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
|
||||
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<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
|
||||
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<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
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),
|
||||
|
||||
@@ -492,7 +492,7 @@ impl<'a> GraphicsAdapter for VirtGpuAdapter<'a> {
|
||||
}
|
||||
|
||||
fn handle_cursor(&mut self, cursor: &CursorPlane<Self::Buffer>, 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 {
|
||||
|
||||
Reference in New Issue
Block a user