chore: Update smithay

This commit is contained in:
Victoria Brekenfeld 2025-01-02 16:26:18 +01:00 committed by Victoria Brekenfeld
parent e5263bbad8
commit f12f4db0e1
5 changed files with 45 additions and 33 deletions

14
Cargo.lock generated
View file

@ -1901,9 +1901,9 @@ dependencies = [
[[package]] [[package]]
name = "gbm" name = "gbm"
version = "0.16.0" version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c724107aa10444b1d2709aae4727c18a33c16b3e15ea8a46cc4ae226c084c88a" checksum = "ce852e998d3ca5e4a97014fb31c940dc5ef344ec7d364984525fd11e8a547e6a"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"drm 0.14.0", "drm 0.14.0",
@ -1914,9 +1914,9 @@ dependencies = [
[[package]] [[package]]
name = "gbm-sys" name = "gbm-sys"
version = "0.3.1" version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9cc2f64de9fa707b5c6b2d2f10d7a7e49e845018a9f5685891eb40d3bab2538" checksum = "c13a5f2acc785d8fb6bf6b7ab6bfb0ef5dad4f4d97e8e70bb8e470722312f76f"
dependencies = [ dependencies = [
"libc", "libc",
] ]
@ -3874,9 +3874,9 @@ dependencies = [
[[package]] [[package]]
name = "pixman" name = "pixman"
version = "0.1.0" version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d24a24da0bec14f4e43a495c1837a3c358b87532e7fe66bd75c348b89f0451b6" checksum = "cea217d496c19ac0a8e502b37078e1f683d16344adee9eb247a5d57c165e1edf"
dependencies = [ dependencies = [
"drm-fourcc", "drm-fourcc",
"paste", "paste",
@ -4638,7 +4638,7 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]] [[package]]
name = "smithay" name = "smithay"
version = "0.3.0" version = "0.3.0"
source = "git+https://github.com/smithay//smithay?rev=bc1d732#bc1d7320f95cdf17f9e7aa6867cccc5903548032" source = "git+https://github.com/smithay//smithay?rev=14c7e43#14c7e43255968e2d979a19e1fd9bd694e5a9726e"
dependencies = [ dependencies = [
"appendlist", "appendlist",
"ash", "ash",

View file

@ -119,4 +119,4 @@ inherits = "release"
lto = "fat" lto = "fat"
[patch."https://github.com/Smithay/smithay.git"] [patch."https://github.com/Smithay/smithay.git"]
smithay = { git = "https://github.com/smithay//smithay", rev = "bc1d732" } smithay = { git = "https://github.com/smithay//smithay", rev = "14c7e43" }

View file

@ -27,7 +27,9 @@ use smithay::{
Fourcc, Fourcc,
}, },
drm::{ drm::{
compositor::{BlitFrameResultError, DrmCompositor, FrameError, PrimaryPlaneElement}, compositor::{
BlitFrameResultError, DrmCompositor, FrameError, FrameFlags, PrimaryPlaneElement,
},
DrmDeviceFd, DrmEventMetadata, DrmEventTime, DrmNode, DrmSurface, VrrSupport, DrmDeviceFd, DrmEventMetadata, DrmEventTime, DrmNode, DrmSurface, VrrSupport,
}, },
egl::EGLContext, egl::EGLContext,
@ -127,6 +129,7 @@ pub struct SurfaceThreadState {
target_node: DrmNode, target_node: DrmNode,
active: Arc<AtomicBool>, active: Arc<AtomicBool>,
vrr_mode: AdaptiveSync, vrr_mode: AdaptiveSync,
frame_flags: FrameFlags,
compositor: Option<GbmDrmCompositor>, compositor: Option<GbmDrmCompositor>,
state: QueueState, state: QueueState,
@ -533,6 +536,7 @@ fn surface_thread(
target_node, target_node,
active, active,
compositor: None, compositor: None,
frame_flags: FrameFlags::DEFAULT,
vrr_mode: AdaptiveSync::Disabled, vrr_mode: AdaptiveSync::Disabled,
state: QueueState::Idle, state: QueueState::Idle,
@ -706,7 +710,7 @@ impl SurfaceThreadState {
GbmBufferFlags::RENDERING | GbmBufferFlags::SCANOUT, GbmBufferFlags::RENDERING | GbmBufferFlags::SCANOUT,
), ),
gbm.clone(), gbm.clone(),
&[ [
Fourcc::Abgr2101010, Fourcc::Abgr2101010,
Fourcc::Argb2101010, Fourcc::Argb2101010,
Fourcc::Abgr8888, Fourcc::Abgr8888,
@ -716,9 +720,9 @@ impl SurfaceThreadState {
cursor_size, cursor_size,
Some(gbm), Some(gbm),
) { ) {
Ok(mut compositor) => { Ok(compositor) => {
if crate::utils::env::bool_var("COSMIC_DISABLE_DIRECT_SCANOUT").unwrap_or(false) { if crate::utils::env::bool_var("COSMIC_DISABLE_DIRECT_SCANOUT").unwrap_or(false) {
compositor.use_direct_scanout(false); self.frame_flags.remove(FrameFlags::ALLOW_SCANOUT);
} }
self.active.store(true, Ordering::SeqCst); self.active.store(true, Ordering::SeqCst);
self.compositor = Some(compositor); self.compositor = Some(compositor);
@ -1171,7 +1175,12 @@ impl SurfaceThreadState {
if let Err(err) = compositor.use_vrr(false) { if let Err(err) = compositor.use_vrr(false) {
warn!("Unable to set adaptive VRR state: {}", err); warn!("Unable to set adaptive VRR state: {}", err);
} }
compositor.render_frame(&mut renderer, &elements, [0.0, 0.0, 0.0, 1.0]) compositor.render_frame(
&mut renderer,
&elements,
[0.0, 0.0, 0.0, 1.0],
FrameFlags::DEFAULT,
)
} else { } else {
if let Err(err) = compositor.use_vrr(vrr) { if let Err(err) = compositor.use_vrr(vrr) {
warn!("Unable to set adaptive VRR state: {}", err); warn!("Unable to set adaptive VRR state: {}", err);
@ -1180,6 +1189,7 @@ impl SurfaceThreadState {
&mut renderer, &mut renderer,
&elements, &elements,
CLEAR_COLOR, // TODO use a theme neutral color CLEAR_COLOR, // TODO use a theme neutral color
FrameFlags::DEFAULT,
) )
}; };
self.timings.draw_done(&self.clock); self.timings.draw_done(&self.clock);
@ -1234,10 +1244,10 @@ impl SurfaceThreadState {
if let Ok(dmabuf) = get_dmabuf(&buffer) { if let Ok(dmabuf) = get_dmabuf(&buffer) {
renderer renderer
.bind(dmabuf.clone()) .bind(dmabuf.clone())
.map_err(RenderError::<GlMultiRenderer>::Rendering)?; .map_err(RenderError::<<GlMultiRenderer as Renderer>::Error>::Rendering)?;
} else { } else {
let size = buffer_dimensions(&buffer).ok_or(RenderError::< let size = buffer_dimensions(&buffer).ok_or(RenderError::<
GlMultiRenderer, <GlMultiRenderer as Renderer>::Error,
>::Rendering( >::Rendering(
MultiError::ImportFailed, MultiError::ImportFailed,
))?; ))?;
@ -1251,10 +1261,10 @@ impl SurfaceThreadState {
format, format,
size, size,
) )
.map_err(RenderError::<GlMultiRenderer>::Rendering)?; .map_err(RenderError::<<GlMultiRenderer as Renderer>::Error>::Rendering)?;
renderer renderer
.bind(render_buffer) .bind(render_buffer)
.map_err(RenderError::<GlMultiRenderer>::Rendering)?; .map_err(RenderError::<<GlMultiRenderer as Renderer>::Error>::Rendering)?;
} }
let (output_size, output_scale, output_transform) = ( let (output_size, output_scale, output_transform) = (
@ -1296,14 +1306,16 @@ impl SurfaceThreadState {
filter, filter,
) )
.map_err(|err| match err { .map_err(|err| match err {
BlitFrameResultError::Rendering(err) => { BlitFrameResultError::Rendering(err) => RenderError::<
RenderError::<GlMultiRenderer>::Rendering(err) <GlMultiRenderer as Renderer>::Error,
} >::Rendering(
BlitFrameResultError::Export(_) => { err
RenderError::<GlMultiRenderer>::Rendering( ),
BlitFrameResultError::Export(_) => RenderError::<
<GlMultiRenderer as Renderer>::Error,
>::Rendering(
MultiError::DeviceMissing, MultiError::DeviceMissing,
) ),
}
}) { }) {
Ok(new_sync) => { Ok(new_sync) => {
sync = new_sync; sync = new_sync;

View file

@ -511,7 +511,7 @@ pub fn workspace_elements<R>(
cursor_mode: CursorMode, cursor_mode: CursorMode,
element_filter: ElementFilter, element_filter: ElementFilter,
_fps: Option<(&EguiState, &Timings)>, _fps: Option<(&EguiState, &Timings)>,
) -> Result<Vec<CosmicElement<R>>, RenderError<R>> ) -> Result<Vec<CosmicElement<R>>, RenderError<<R as Renderer>::Error>>
where where
R: Renderer + ImportAll + ImportMem + AsGlowRenderer, R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
<R as Renderer>::TextureId: Send + Clone + 'static, <R as Renderer>::TextureId: Send + Clone + 'static,
@ -867,7 +867,7 @@ pub fn render_output<'d, R, Target, OffTarget>(
now: Time<Monotonic>, now: Time<Monotonic>,
output: &Output, output: &Output,
cursor_mode: CursorMode, cursor_mode: CursorMode,
) -> Result<RenderOutputResult<'d>, RenderError<R>> ) -> Result<RenderOutputResult<'d>, RenderError<<R as Renderer>::Error>>
where where
R: Renderer R: Renderer
+ ImportAll + ImportAll
@ -1026,7 +1026,7 @@ pub fn render_workspace<'d, R, Target, OffTarget>(
current: (WorkspaceHandle, usize), current: (WorkspaceHandle, usize),
cursor_mode: CursorMode, cursor_mode: CursorMode,
element_filter: ElementFilter, element_filter: ElementFilter,
) -> Result<(RenderOutputResult<'d>, Vec<CosmicElement<R>>), RenderError<R>> ) -> Result<(RenderOutputResult<'d>, Vec<CosmicElement<R>>), RenderError<<R as Renderer>::Error>>
where where
R: Renderer R: Renderer
+ ImportAll + ImportAll

View file

@ -140,7 +140,7 @@ pub fn render_session<F, R>(
frame: Frame, frame: Frame,
transform: Transform, transform: Transform,
render_fn: F, render_fn: F,
) -> Result<Option<(Frame, Vec<Rectangle<i32, BufferCoords>>)>, DTError<R>> ) -> Result<Option<(Frame, Vec<Rectangle<i32, BufferCoords>>)>, DTError<<R as Renderer>::Error>>
where where
R: ExportMem, R: ExportMem,
<R as Renderer>::Error: FromGlesError, <R as Renderer>::Error: FromGlesError,
@ -150,7 +150,7 @@ where
&'d mut OutputDamageTracker, &'d mut OutputDamageTracker,
usize, usize,
Vec<Rectangle<i32, BufferCoords>>, Vec<Rectangle<i32, BufferCoords>>,
) -> Result<RenderOutputResult<'d>, DTError<R>>, ) -> Result<RenderOutputResult<'d>, DTError<<R as Renderer>::Error>>,
{ {
let mut session_damage_tracking = session.lock().unwrap(); let mut session_damage_tracking = session.lock().unwrap();
@ -225,7 +225,7 @@ pub fn render_workspace_to_buffer(
common: &mut Common, common: &mut Common,
output: &Output, output: &Output,
handle: (WorkspaceHandle, usize), handle: (WorkspaceHandle, usize),
) -> Result<RenderOutputResult<'d>, DTError<R>> ) -> Result<RenderOutputResult<'d>, DTError<<R as Renderer>::Error>>
where where
R: Renderer R: Renderer
+ ImportAll + ImportAll
@ -464,7 +464,7 @@ pub fn render_window_to_buffer(
common: &mut Common, common: &mut Common,
window: &CosmicSurface, window: &CosmicSurface,
geometry: Rectangle<i32, Logical>, geometry: Rectangle<i32, Logical>,
) -> Result<RenderOutputResult<'d>, DTError<R>> ) -> Result<RenderOutputResult<'d>, DTError<<R as Renderer>::Error>>
where where
R: Renderer R: Renderer
+ ImportAll + ImportAll
@ -700,7 +700,7 @@ pub fn render_cursor_to_buffer(
additional_damage: Vec<Rectangle<i32, BufferCoords>>, additional_damage: Vec<Rectangle<i32, BufferCoords>>,
common: &mut Common, common: &mut Common,
seat: &Seat<State>, seat: &Seat<State>,
) -> Result<RenderOutputResult<'d>, DTError<R>> ) -> Result<RenderOutputResult<'d>, DTError<<R as Renderer>::Error>>
where where
R: Renderer R: Renderer
+ ImportAll + ImportAll