diff --git a/src/backend/render/element.rs b/src/backend/render/element.rs index 7897da65..5f75725f 100644 --- a/src/backend/render/element.rs +++ b/src/backend/render/element.rs @@ -1,19 +1,22 @@ use crate::shell::{CosmicMappedRenderElement, WorkspaceRenderElement}; #[cfg(feature = "debug")] -use smithay::backend::renderer::{element::texture::TextureRenderElement, gles::GlesTexture}; +use smithay::backend::renderer::element::texture::TextureRenderElement; use smithay::{ - backend::renderer::{ - ImportAll, ImportMem, Renderer, - element::{ - Element, Id, Kind, RenderElement, UnderlyingStorage, - memory::MemoryRenderBufferRenderElement, - surface::WaylandSurfaceRenderElement, - utils::{CropRenderElement, Relocate, RelocateRenderElement, RescaleRenderElement}, + backend::{ + allocator::dmabuf::Dmabuf, + renderer::{ + Bind, Blit, ExportMem, ImportAll, ImportMem, Offscreen, Renderer, + element::{ + Element, Id, Kind, RenderElement, UnderlyingStorage, + memory::MemoryRenderBufferRenderElement, + surface::WaylandSurfaceRenderElement, + utils::{CropRenderElement, Relocate, RelocateRenderElement, RescaleRenderElement}, + }, + gles::{GlesError, GlesRenderbuffer, GlesTexture, element::TextureShaderElement}, + glow::{GlowFrame, GlowRenderer}, + utils::{CommitCounter, DamageSet, OpaqueRegions}, }, - gles::{GlesError, element::TextureShaderElement}, - glow::{GlowFrame, GlowRenderer}, - utils::{CommitCounter, DamageSet, OpaqueRegions}, }, utils::{Buffer as BufferCoords, Logical, Physical, Point, Rectangle, Scale}, }; @@ -22,7 +25,7 @@ use super::{GlMultiRenderer, cursor::CursorRenderElement}; pub enum CosmicElement where - R: AsGlowRenderer + Renderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -42,7 +45,7 @@ where impl Element for CosmicElement where - R: AsGlowRenderer + Renderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -183,7 +186,7 @@ where impl RenderElement for CosmicElement where - R: AsGlowRenderer + Renderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: 'static, R::Error: FromGlesError, CosmicMappedRenderElement: RenderElement, @@ -253,7 +256,7 @@ where impl From>>> for CosmicElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -268,7 +271,7 @@ where impl From> for CosmicElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -280,7 +283,7 @@ where #[cfg(feature = "debug")] impl From> for CosmicElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -289,9 +292,15 @@ where } } -pub trait AsGlowRenderer -where - Self: Renderer, +pub trait AsGlowRenderer: + Renderer + + Offscreen + + Offscreen + + ImportAll + + ImportMem + + ExportMem + + Bind + + Blit { fn glow_renderer(&self) -> &GlowRenderer; fn glow_renderer_mut(&mut self) -> &mut GlowRenderer; diff --git a/src/backend/render/mod.rs b/src/backend/render/mod.rs index 0e22c8ea..b1215fd6 100644 --- a/src/backend/render/mod.rs +++ b/src/backend/render/mod.rs @@ -45,11 +45,10 @@ use cosmic::Theme; use element::FromGlesError; use smithay::{ backend::{ - allocator::{Fourcc, dmabuf::Dmabuf}, + allocator::Fourcc, drm::{DrmDeviceFd, DrmNode}, renderer::{ - Bind, Blit, Color32F, ExportMem, ImportAll, ImportMem, Offscreen, Renderer, Texture, - TextureFilter, + Color32F, ImportAll, Offscreen, Renderer, Texture, TextureFilter, damage::{Error as RenderError, OutputDamageTracker, RenderOutputResult}, element::{ Element, Id, Kind, RenderElement, WeakId, @@ -478,7 +477,7 @@ pub fn cursor_elements<'a, 'frame, R>( exclude_dnd_icon: bool, ) -> Vec> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, { @@ -620,7 +619,7 @@ pub fn output_elements( _fps: Option<(&EguiState, &Timings)>, ) -> Result>, RenderError> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, R::Error: FromGlesError, CosmicMappedRenderElement: RenderElement, @@ -718,7 +717,7 @@ pub fn workspace_elements( element_filter: ElementFilter, ) -> Result>, RenderError> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, R::Error: FromGlesError, CosmicMappedRenderElement: RenderElement, @@ -1060,7 +1059,7 @@ pub struct PostprocessState { } impl PostprocessState { - pub fn new_with_renderer>( + pub fn new_with_renderer( renderer: &mut R, format: Fourcc, output_config: PostprocessOutputConfig, @@ -1091,7 +1090,7 @@ impl PostprocessState { }) } - pub fn track_cursor>( + pub fn track_cursor( &mut self, renderer: &mut R, format: Fourcc, @@ -1193,14 +1192,7 @@ pub fn render_output<'d, R>( loop_handle: &calloop::LoopHandle<'static, State>, ) -> Result, RenderError> where - R: Renderer - + ImportAll - + ImportMem - + ExportMem - + Bind - + Offscreen - + Blit - + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, R::Error: FromGlesError, CosmicElement: RenderElement, @@ -1505,7 +1497,7 @@ pub fn render_workspace<'d, R>( element_filter: ElementFilter, ) -> Result<(RenderOutputResult<'d>, Vec>), RenderError> where - R: Renderer + ImportAll + ImportMem + ExportMem + Bind + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, R::Error: FromGlesError, CosmicElement: RenderElement, diff --git a/src/shell/element/mod.rs b/src/shell/element/mod.rs index 812d572e..bc07c3b8 100644 --- a/src/shell/element/mod.rs +++ b/src/shell/element/mod.rs @@ -10,7 +10,6 @@ use smithay::{ backend::{ input::KeyState, renderer::{ - ImportAll, ImportMem, Renderer, element::{ Element, RenderElement, UnderlyingStorage, memory::MemoryRenderBufferRenderElement, @@ -571,7 +570,7 @@ impl CosmicMapped { alpha: f32, ) -> Vec where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, C: From>, @@ -602,7 +601,7 @@ impl CosmicMapped { alpha: f32, ) -> Option where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, C: From>, @@ -646,7 +645,7 @@ impl CosmicMapped { scanout_override: Option, ) -> Vec where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, C: From>, @@ -1061,7 +1060,7 @@ impl From for CosmicMapped { pub enum CosmicMappedRenderElement where - R: Renderer + AsGlowRenderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: 'static, { Stack(self::stack::CosmicStackRenderElement), @@ -1096,7 +1095,7 @@ where impl Element for CosmicMappedRenderElement where - R: Renderer + AsGlowRenderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: 'static, { fn id(&self) -> &smithay::backend::renderer::element::Id { @@ -1279,7 +1278,7 @@ where impl RenderElement for CosmicMappedRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, R::Error: FromGlesError, { @@ -1395,7 +1394,7 @@ where impl From> for CosmicMappedRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -1405,7 +1404,7 @@ where } impl From> for CosmicMappedRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -1416,7 +1415,7 @@ where impl From for CosmicMappedRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -1427,7 +1426,7 @@ where impl From> for CosmicMappedRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -1439,7 +1438,7 @@ where #[cfg(feature = "debug")] impl From> for CosmicMappedRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { diff --git a/src/shell/element/stack.rs b/src/shell/element/stack.rs index aeded063..6cce1c67 100644 --- a/src/shell/element/stack.rs +++ b/src/shell/element/stack.rs @@ -636,7 +636,7 @@ impl CosmicStack { alpha: f32, ) -> Vec where - R: Renderer + AsGlowRenderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, C: From>, { @@ -665,7 +665,7 @@ impl CosmicStack { alpha: f32, ) -> Option where - R: Renderer + AsGlowRenderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, C: From>, { @@ -732,7 +732,7 @@ impl CosmicStack { scanout_override: Option, ) -> Vec where - R: Renderer + AsGlowRenderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, C: From>, { @@ -1997,7 +1997,7 @@ where impl RenderElement for CosmicStackRenderElement where - R: Renderer + AsGlowRenderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: 'static, R::Error: FromGlesError, { diff --git a/src/shell/element/window.rs b/src/shell/element/window.rs index ed50bad2..03e87f33 100644 --- a/src/shell/element/window.rs +++ b/src/shell/element/window.rs @@ -364,7 +364,7 @@ impl CosmicWindow { alpha: f32, ) -> Option where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, C: From>, { @@ -444,7 +444,7 @@ impl CosmicWindow { scanout_override: Option, ) -> Vec where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, C: From>, { @@ -1358,7 +1358,7 @@ where impl RenderElement for CosmicWindowRenderElement where - R: Renderer + AsGlowRenderer + ImportAll + ImportMem, + R: AsGlowRenderer, R::TextureId: 'static, R::Error: FromGlesError, { diff --git a/src/shell/layout/floating/mod.rs b/src/shell/layout/floating/mod.rs index 582ec1b4..ce960323 100644 --- a/src/shell/layout/floating/mod.rs +++ b/src/shell/layout/floating/mod.rs @@ -10,12 +10,9 @@ use cosmic_comp_config::AppearanceConfig; use cosmic_settings_config::shortcuts::action::ResizeDirection; use keyframe::{ease, functions::EaseInOutCubic}; use smithay::{ - backend::renderer::{ - ImportAll, ImportMem, Renderer, - element::{ - AsRenderElements, RenderElement, - utils::{Relocate, RelocateRenderElement, RescaleRenderElement}, - }, + backend::renderer::element::{ + AsRenderElements, RenderElement, + utils::{Relocate, RelocateRenderElement, RescaleRenderElement}, }, desktop::{PopupKind, Space, WindowSurfaceType, layer_map_for_output, space::SpaceElement}, input::Seat, @@ -1421,7 +1418,7 @@ impl FloatingLayout { alpha: f32, ) -> Vec> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -1472,7 +1469,7 @@ impl FloatingLayout { theme: &cosmic::theme::CosmicTheme, ) -> Vec> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, diff --git a/src/shell/layout/tiling/mod.rs b/src/shell/layout/tiling/mod.rs index 85efb2ce..86cd8034 100644 --- a/src/shell/layout/tiling/mod.rs +++ b/src/shell/layout/tiling/mod.rs @@ -47,7 +47,6 @@ use keyframe::{ }; use smithay::{ backend::renderer::{ - ImportAll, ImportMem, Renderer, element::{ AsRenderElements, Id, RenderElement, utils::{ @@ -4011,7 +4010,7 @@ impl TilingLayout { theme: &cosmic::theme::CosmicTheme, ) -> Result>, OutputNotMapped> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -4171,7 +4170,7 @@ impl TilingLayout { theme: &cosmic::theme::CosmicTheme, ) -> Result>, OutputNotMapped> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -4345,7 +4344,7 @@ fn geometries_for_groupview<'a, R>( Vec>, ) where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer + 'a, + R: AsGlowRenderer + 'a, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -4977,7 +4976,7 @@ fn render_old_tree_popups( is_swap_mode: bool, ) -> Vec> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -5020,7 +5019,7 @@ fn render_old_tree_windows( theme: &cosmic::theme::CosmicTheme, ) -> Vec> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -5203,7 +5202,7 @@ fn render_new_tree_popups( swap_desc: Option, ) -> Vec> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -5269,7 +5268,7 @@ fn render_new_tree_windows( theme: &cosmic::theme::CosmicTheme, ) -> Vec> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, diff --git a/src/shell/workspace.rs b/src/shell/workspace.rs index b03ac776..97d0cb30 100644 --- a/src/shell/workspace.rs +++ b/src/shell/workspace.rs @@ -34,7 +34,6 @@ use keyframe::{ease, functions::EaseInOutCubic}; use smithay::output::WeakOutput; use smithay::{ backend::renderer::{ - ImportAll, ImportMem, Renderer, element::{ Element, Id, RenderElement, surface::WaylandSurfaceRenderElement, texture::TextureRenderElement, utils::RescaleRenderElement, @@ -1518,7 +1517,7 @@ impl Workspace { theme: &CosmicTheme, ) -> Result>, OutputNotMapped> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -1720,7 +1719,7 @@ impl Workspace { theme: &CosmicTheme, ) -> Result>, OutputNotMapped> where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, CosmicMappedRenderElement: RenderElement, CosmicWindowRenderElement: RenderElement, @@ -1860,7 +1859,7 @@ pub struct OutputNotMapped; pub enum WorkspaceRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, { OverrideRedirect(WaylandSurfaceRenderElement), @@ -1872,7 +1871,7 @@ where impl Element for WorkspaceRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, { fn id(&self) -> &smithay::backend::renderer::element::Id { @@ -1972,7 +1971,7 @@ where impl RenderElement for WorkspaceRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, R::Error: FromGlesError, { @@ -2027,7 +2026,7 @@ where impl From>> for WorkspaceRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -2038,7 +2037,7 @@ where impl From> for WorkspaceRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -2049,7 +2048,7 @@ where impl From> for WorkspaceRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -2060,7 +2059,7 @@ where impl From> for WorkspaceRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { @@ -2071,7 +2070,7 @@ where impl From> for WorkspaceRenderElement where - R: Renderer + ImportAll + ImportMem + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: 'static, CosmicMappedRenderElement: RenderElement, { diff --git a/src/wayland/handlers/image_copy_capture/render.rs b/src/wayland/handlers/image_copy_capture/render.rs index 4da07175..10f2d117 100644 --- a/src/wayland/handlers/image_copy_capture/render.rs +++ b/src/wayland/handlers/image_copy_capture/render.rs @@ -3,10 +3,10 @@ use calloop::LoopHandle; use smithay::{ backend::{ - allocator::{Buffer, Fourcc, dmabuf::Dmabuf, format::get_transparent}, + allocator::{Buffer, Fourcc, format::get_transparent}, renderer::{ - Bind, Blit, BufferType, Color32F, ExportMem, ImportAll, ImportMem, Offscreen, Renderer, - buffer_dimensions, buffer_type, + BufferType, Color32F, ExportMem, ImportAll, ImportMem, Offscreen, buffer_dimensions, + buffer_type, damage::{Error as DTError, OutputDamageTracker, RenderOutputResult}, element::{ AsRenderElements, RenderElement, @@ -193,7 +193,7 @@ pub fn render_session( render_fn: F, ) -> Result, DTError> where - R: ExportMem + Offscreen, + R: Offscreen + AsGlowRenderer, R::Error: FromGlesError, F: for<'d> FnOnce( &WlBuffer, @@ -215,9 +215,7 @@ where .expect("We should be able to convert all hardcoded shm screencopy formats") }) .map_err(|_| DTError::OutputNoMode(OutputNoMode))?; - renderer - .create_buffer(format, size) - .map_err(DTError::Rendering) + Offscreen::::create_buffer(renderer, format, size).map_err(DTError::Rendering) }) .transpose()?; @@ -304,7 +302,7 @@ pub fn render_workspace_to_buffer( handle: (WorkspaceHandle, usize), ) -> Result, DTError> where - R: Renderer + ImportAll + ImportMem + ExportMem + Bind + Blit + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, R::Error: FromGlesError, CosmicElement: RenderElement, @@ -537,7 +535,7 @@ pub fn render_window_to_buffer( geometry: Rectangle, ) -> Result, DTError> where - R: Renderer + ImportAll + ImportMem + ExportMem + Bind + Blit + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, R::Error: FromGlesError, CosmicElement: RenderElement, @@ -776,7 +774,7 @@ pub fn render_cursor_to_buffer( seat: &Seat, ) -> Result, DTError> where - R: Renderer + ImportAll + ImportMem + ExportMem + Bind + Blit + AsGlowRenderer, + R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, R::Error: FromGlesError, CosmicElement: RenderElement,