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