drivers/graphics: Remove UPDATE_PLANE
This commit is contained in:
Generated
-1
@@ -938,7 +938,6 @@ dependencies = [
|
||||
"log",
|
||||
"plain",
|
||||
"redox-ioctl",
|
||||
"redox_syscall 0.7.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#![feature(macro_metavar_expr)]
|
||||
#![feature(slice_as_array)]
|
||||
|
||||
use std::collections::{BTreeMap, HashMap};
|
||||
use std::ffi::c_char;
|
||||
@@ -7,7 +6,6 @@ use std::fmt::Debug;
|
||||
use std::fs::File;
|
||||
use std::io::{self, Write};
|
||||
use std::mem;
|
||||
use std::mem::transmute;
|
||||
use std::os::fd::BorrowedFd;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
@@ -953,55 +951,6 @@ impl<T: GraphicsAdapter> SchemeSync for GraphicsSchemeInner<T> {
|
||||
data.set_modifier([0; 4]);
|
||||
Ok(0)
|
||||
}),
|
||||
ipc::UPDATE_PLANE => {
|
||||
if payload.len() < size_of::<ipc::UpdatePlane>() {
|
||||
return Err(Error::new(EINVAL));
|
||||
}
|
||||
let payload = unsafe {
|
||||
transmute::<&mut [u8; size_of::<ipc::UpdatePlane>()], &mut ipc::UpdatePlane>(
|
||||
payload.as_mut_array().unwrap(),
|
||||
)
|
||||
};
|
||||
|
||||
let display_id = payload.display_id;
|
||||
let Some(crtc) = self.objects.crtcs().nth(display_id) else {
|
||||
return Err(Error::new(EINVAL));
|
||||
};
|
||||
|
||||
let fb = if payload.fb_id == 0 {
|
||||
None
|
||||
} else {
|
||||
Some(self.objects.get_framebuffer(KmsObjectId(payload.fb_id))?)
|
||||
};
|
||||
|
||||
self.vts.get_mut(vt).unwrap().display_fbs[display_id] = if payload.fb_id == 0 {
|
||||
None
|
||||
} else {
|
||||
Some(KmsObjectId(payload.fb_id))
|
||||
};
|
||||
|
||||
if *vt == self.active_vt {
|
||||
crtc.lock().unwrap().fb_id = KmsObjectId(payload.fb_id);
|
||||
|
||||
let mode =
|
||||
fb.map(|fb| KmsConnector::<()>::modeinfo_for_size(fb.width, fb.height));
|
||||
|
||||
self.adapter.set_crtc(
|
||||
&self.objects,
|
||||
crtc,
|
||||
&[self.objects.connector_ids()[display_id]],
|
||||
mode,
|
||||
fb,
|
||||
payload.damage,
|
||||
);
|
||||
|
||||
crtc.lock().unwrap().fb_id = KmsObjectId(payload.fb_id);
|
||||
crtc.lock().unwrap().target_connectors =
|
||||
vec![self.objects.connector_ids()[display_id]];
|
||||
}
|
||||
|
||||
Ok(size_of::<ipc::UpdatePlane>())
|
||||
}
|
||||
_ => return Err(Error::new(EINVAL)),
|
||||
},
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ log.workspace = true
|
||||
libredox.workspace = true
|
||||
plain = "0.2"
|
||||
redox-ioctl.workspace = true
|
||||
redox_syscall.workspace = true
|
||||
|
||||
common = { path = "../../common" }
|
||||
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
use std::fs::File;
|
||||
use std::io;
|
||||
use std::os::fd::{AsFd, BorrowedFd};
|
||||
use std::os::unix::io::AsRawFd;
|
||||
|
||||
use drm::control::connector::{self, State};
|
||||
use drm::control::Device as _;
|
||||
use drm::{Device as _, DriverCapability};
|
||||
use syscall::CallFlags;
|
||||
|
||||
pub use crate::common::Damage;
|
||||
|
||||
@@ -43,34 +41,8 @@ impl V2GraphicsHandle {
|
||||
}
|
||||
Err(io::Error::other("no connected display"))
|
||||
}
|
||||
|
||||
pub fn update_plane(&self, display_id: usize, fb_id: u32, damage: Damage) -> io::Result<()> {
|
||||
let cmd = ipc::UpdatePlane {
|
||||
display_id,
|
||||
fb_id,
|
||||
damage,
|
||||
};
|
||||
libredox::call::call_wo(
|
||||
self.file.as_raw_fd() as usize,
|
||||
unsafe { plain::as_bytes(&cmd) },
|
||||
CallFlags::empty(),
|
||||
&[ipc::UPDATE_PLANE, 0, 0],
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub mod ipc {
|
||||
use crate::common::Damage;
|
||||
|
||||
pub use redox_ioctl::drm::*;
|
||||
|
||||
// FIXME replace these with proper drm interfaces and update orbital
|
||||
pub const UPDATE_PLANE: u64 = 0x12345670;
|
||||
#[repr(C, packed)]
|
||||
pub struct UpdatePlane {
|
||||
pub display_id: usize,
|
||||
pub fb_id: u32,
|
||||
pub damage: Damage,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user