From bdcb803efaa3e4d37973562eb710fec9477f4640 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Wed, 28 Jun 2023 22:20:06 +0200 Subject: [PATCH] chore: Update smithay --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/backend/kms/mod.rs | 12 +++++++++--- src/backend/render/mod.rs | 17 +++++++++++------ src/backend/winit.rs | 8 +++++--- src/backend/x11.rs | 8 +++++--- src/wayland/handlers/screencopy.rs | 22 +++++++++++----------- 7 files changed, 43 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b568c9a2..01a9835e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3457,7 +3457,7 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smithay" version = "0.3.0" -source = "git+https://github.com/smithay//smithay?rev=43ce6b4372#43ce6b437257151acfdd00d633d2bd69c3114376" +source = "git+https://github.com/smithay//smithay?rev=8d239c79ae#8d239c79ae5a7f08d6acbc17183c0576af3edd38" dependencies = [ "appendlist", "ash", diff --git a/Cargo.toml b/Cargo.toml index e7859939..7eb85222 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,7 +77,7 @@ debug = true lto = "fat" [patch."https://github.com/Smithay/smithay.git"] -smithay = { git = "https://github.com/smithay//smithay", rev = "43ce6b4372" } +smithay = { git = "https://github.com/smithay//smithay", rev = "8d239c79ae" } [patch."https://github.com/pop-os/libcosmic/"] libcosmic = { git = "https://github.com/pop-os/libcosmic//", rev = "42d7baf" } \ No newline at end of file diff --git a/src/backend/kms/mod.rs b/src/backend/kms/mod.rs index 8cb229b9..09b6c607 100644 --- a/src/backend/kms/mod.rs +++ b/src/backend/kms/mod.rs @@ -33,11 +33,12 @@ use smithay::{ libinput::{LibinputInputBackend, LibinputSessionInterface}, renderer::{ buffer_dimensions, - damage::{Error as RenderError, OutputNoMode}, + damage::{Error as RenderError, OutputNoMode, RenderOutputResult}, element::Element, gles::{GlesRenderbuffer, GlesTexture}, glow::GlowRenderer, multigpu::{gbm::GbmGlesBackend, Error as MultiError, GpuManager}, + sync::SyncPoint, Bind, ImportDma, Offscreen, }, session::{libseat::LibSeatSession, Event as SessionEvent, Session}, @@ -1094,6 +1095,7 @@ impl Surface { |_node, buffer, renderer, dt, age| { let res = dt.damage_output(age, &elements)?; + let mut sync = SyncPoint::default(); if let (Some(ref damage), _) = &res { if let Ok(dmabuf) = get_dmabuf(buffer) { renderer.bind(dmabuf).map_err(RenderError::Rendering)?; @@ -1120,7 +1122,7 @@ impl Surface { self.output.current_scale().fractional_scale(), self.output.current_transform(), ); - frame_result + sync = frame_result .blit_frame_result( output_size, output_transform, @@ -1140,7 +1142,11 @@ impl Surface { })?; } - Ok(res) + Ok(RenderOutputResult { + damage: res.0, + states: res.1, + sync, + }) }, ) { Ok(true) => {} // success diff --git a/src/backend/render/mod.rs b/src/backend/render/mod.rs index a530e4bf..6e9d5e5d 100644 --- a/src/backend/render/mod.rs +++ b/src/backend/render/mod.rs @@ -44,10 +44,10 @@ use smithay::{ drm::DrmNode, renderer::{ buffer_dimensions, - damage::{Error as RenderError, OutputDamageTracker, OutputNoMode}, + damage::{Error as RenderError, OutputDamageTracker, OutputNoMode, RenderOutputResult}, element::{ utils::{Relocate, RelocateRenderElement}, - AsRenderElements, Element, Id, RenderElement, RenderElementStates, + AsRenderElements, Element, Id, RenderElement, }, gles::{ element::PixelShaderElement, GlesError, GlesPixelProgram, GlesRenderer, Uniform, @@ -55,12 +55,13 @@ use smithay::{ }, glow::GlowRenderer, multigpu::{gbm::GbmGlesBackend, Error as MultiError, MultiFrame, MultiRenderer}, + sync::SyncPoint, Bind, Blit, ExportMem, ImportAll, ImportMem, Offscreen, Renderer, TextureFilter, }, }, desktop::layer_map_for_output, output::Output, - utils::{IsAlive, Logical, Physical, Point, Rectangle, Scale}, + utils::{IsAlive, Logical, Point, Rectangle, Scale}, wayland::{ dmabuf::get_dmabuf, shell::wlr_layer::Layer, @@ -719,7 +720,7 @@ pub fn render_output( cursor_mode: CursorMode, screencopy: Option<(Source, &[(ScreencopySession, BufferParams)])>, fps: Option<&mut Fps>, -) -> Result<(Option>>, RenderElementStates), RenderError> +) -> Result> where R: Renderer + ImportAll @@ -777,7 +778,7 @@ pub fn render_workspace( screencopy: Option<(Source, &[(ScreencopySession, BufferParams)])>, mut fps: Option<&mut Fps>, exclude_workspace_overview: bool, -) -> Result<(Option>>, RenderElementStates), RenderError> +) -> Result> where R: Renderer + ImportAll @@ -881,7 +882,11 @@ where } } - Ok(res) + Ok(RenderOutputResult { + damage: res.0, + sync: SyncPoint::default(), + states: res.1, + }) }, ) { Ok(true) => {} // success diff --git a/src/backend/winit.rs b/src/backend/winit.rs index d9ad3bb7..f94339a5 100644 --- a/src/backend/winit.rs +++ b/src/backend/winit.rs @@ -13,8 +13,10 @@ use smithay::{ backend::{ egl::EGLDevice, renderer::{ - damage::OutputDamageTracker, gles::GlesRenderbuffer, glow::GlowRenderer, ImportDma, - ImportEgl, + damage::{OutputDamageTracker, RenderOutputResult}, + gles::GlesRenderbuffer, + glow::GlowRenderer, + ImportDma, ImportEgl, }, winit::{self, WinitEvent, WinitGraphicsBackend, WinitVirtualDevice}, }, @@ -73,7 +75,7 @@ impl WinitState { #[cfg(feature = "debug")] Some(&mut self.fps), ) { - Ok((damage, states)) => { + Ok(RenderOutputResult { damage, states, .. }) => { self.backend .bind() .with_context(|| "Failed to bind display")?; diff --git a/src/backend/x11.rs b/src/backend/x11.rs index e63afe26..e27fefc7 100644 --- a/src/backend/x11.rs +++ b/src/backend/x11.rs @@ -20,8 +20,10 @@ use smithay::{ egl::{EGLContext, EGLDevice, EGLDisplay}, input::{Event, InputEvent}, renderer::{ - damage::OutputDamageTracker, gles::GlesRenderbuffer, glow::GlowRenderer, Bind, - ImportDma, ImportEgl, + damage::{OutputDamageTracker, RenderOutputResult}, + gles::GlesRenderbuffer, + glow::GlowRenderer, + Bind, ImportDma, ImportEgl, }, vulkan::{version::Version, Instance, PhysicalDevice}, x11::{Window, WindowBuilder, X11Backend, X11Event, X11Handle, X11Input, X11Surface}, @@ -240,7 +242,7 @@ impl Surface { #[cfg(feature = "debug")] Some(&mut self.fps), ) { - Ok((damage, states)) => { + Ok(RenderOutputResult { damage, states, .. }) => { self.screencopy.clear(); self.surface .submit() diff --git a/src/wayland/handlers/screencopy.rs b/src/wayland/handlers/screencopy.rs index b7c6ae66..e768c034 100644 --- a/src/wayland/handlers/screencopy.rs +++ b/src/wayland/handlers/screencopy.rs @@ -17,11 +17,8 @@ use smithay::{ egl::EGLDevice, renderer::{ buffer_dimensions, buffer_type, - damage::{Error as DTError, OutputDamageTracker, OutputNoMode}, - element::{ - surface::WaylandSurfaceRenderElement, AsRenderElements, RenderElement, - RenderElementStates, - }, + damage::{Error as DTError, OutputDamageTracker, OutputNoMode, RenderOutputResult}, + element::{surface::WaylandSurfaceRenderElement, AsRenderElements, RenderElement}, gles::{Capability, GlesError, GlesRenderbuffer, GlesRenderer}, Bind, Blit, BufferType, ExportMem, ImportAll, ImportMem, Offscreen, Renderer, }, @@ -606,8 +603,7 @@ where &mut R, &mut OutputDamageTracker, usize, - ) - -> Result<(Option>>, RenderElementStates), DTError>, + ) -> Result>, { #[cfg(feature = "debug")] puffin::profile_function!(); @@ -622,7 +618,11 @@ where params.age as usize, )?; - if let (Some(damage), _) = res { + if let RenderOutputResult { + damage: Some(damage), + .. + } = res + { submit_buffer(session, ¶ms.buffer, renderer, transform, damage) .map_err(DTError::Rendering)?; Ok(true) @@ -654,7 +654,7 @@ pub fn render_output_to_buffer( common: &mut Common, session: &Session, output: &Output, - ) -> Result<(Option>>, RenderElementStates), DTError> + ) -> Result> where R: Renderer + ImportAll @@ -786,7 +786,7 @@ pub fn render_workspace_to_buffer( session: &Session, output: &Output, handle: (WorkspaceHandle, usize), - ) -> Result<(Option>>, RenderElementStates), DTError> + ) -> Result> where R: Renderer + ImportAll @@ -934,7 +934,7 @@ pub fn render_window_to_buffer( common: &mut Common, window: &CosmicSurface, geometry: Rectangle, - ) -> Result<(Option>>, RenderElementStates), DTError> + ) -> Result> where R: Renderer + ImportAll