render: Merge FromGlesError into AsGlowRenderer
This commit is contained in:
parent
0ce7f11445
commit
8b990e5658
8 changed files with 40 additions and 79 deletions
|
|
@ -12,10 +12,9 @@ use smithay::{
|
|||
},
|
||||
drm::{CreateDrmNodeError, DrmNode},
|
||||
renderer::{
|
||||
RendererSuper,
|
||||
gles::{GlesError, GlesRenderer, ffi},
|
||||
glow::GlowRenderer,
|
||||
multigpu::{ApiDevice, Error as MultiError, GraphicsApi},
|
||||
multigpu::{ApiDevice, GraphicsApi},
|
||||
},
|
||||
},
|
||||
reexports::drm::control::Device,
|
||||
|
|
@ -32,8 +31,6 @@ use std::{
|
|||
sync::atomic::{AtomicBool, Ordering},
|
||||
};
|
||||
|
||||
use crate::backend::render::element::FromGlesError;
|
||||
|
||||
/// Errors raised by the [`GbmGlesBackend`]
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum Error {
|
||||
|
|
@ -213,15 +210,3 @@ impl ApiDevice for GbmGlowDevice {
|
|||
!self.intel_export_quirk
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: GraphicsApi, A: AsFd + Device + Clone + 'static> FromGlesError
|
||||
for MultiError<GbmGlowBackend<A>, T>
|
||||
where
|
||||
T::Error: 'static,
|
||||
<<T::Device as ApiDevice>::Renderer as RendererSuper>::Error: 'static,
|
||||
{
|
||||
#[inline]
|
||||
fn from_gles_error(err: GlesError) -> MultiError<GbmGlowBackend<A>, T> {
|
||||
MultiError::Render(err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
use crate::shell::{CosmicMappedRenderElement, WorkspaceRenderElement};
|
||||
use crate::{
|
||||
backend::render::GlMultiError,
|
||||
shell::{CosmicMappedRenderElement, WorkspaceRenderElement},
|
||||
};
|
||||
|
||||
#[cfg(feature = "debug")]
|
||||
use smithay::backend::renderer::element::texture::TextureRenderElement;
|
||||
|
|
@ -203,7 +206,6 @@ impl<R> RenderElement<R> for CosmicElement<R>
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: 'static,
|
||||
R::Error: FromGlesError,
|
||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
{
|
||||
fn draw(
|
||||
|
|
@ -237,7 +239,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicElement::Zoom(elem) => elem.draw(frame, src, dst, damage, opaque_regions, cache),
|
||||
#[cfg(feature = "debug")]
|
||||
|
|
@ -252,7 +254,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -293,7 +295,7 @@ where
|
|||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem, glow_frame, src, dst, cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicElement::Zoom(elem) => elem.capture_framebuffer(frame, src, dst, cache),
|
||||
#[cfg(feature = "debug")]
|
||||
|
|
@ -302,7 +304,7 @@ where
|
|||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem, glow_frame, src, dst, cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -365,6 +367,7 @@ pub trait AsGlowRenderer:
|
|||
fn glow_frame_mut<'a, 'frame, 'buffer>(
|
||||
frame: &'a mut Self::Frame<'frame, 'buffer>,
|
||||
) -> &'a mut GlowFrame<'frame, 'buffer>;
|
||||
fn from_gles_error(err: GlesError) -> Self::Error;
|
||||
}
|
||||
|
||||
impl AsGlowRenderer for GlowRenderer {
|
||||
|
|
@ -384,6 +387,9 @@ impl AsGlowRenderer for GlowRenderer {
|
|||
) -> &'a mut GlowFrame<'frame, 'buffer> {
|
||||
frame
|
||||
}
|
||||
fn from_gles_error(err: GlesError) -> Self::Error {
|
||||
err
|
||||
}
|
||||
}
|
||||
|
||||
impl AsGlowRenderer for GlMultiRenderer<'_> {
|
||||
|
|
@ -403,6 +409,9 @@ impl AsGlowRenderer for GlMultiRenderer<'_> {
|
|||
) -> &'b mut GlowFrame<'frame, 'buffer> {
|
||||
frame.as_mut()
|
||||
}
|
||||
fn from_gles_error(err: GlesError) -> Self::Error {
|
||||
GlMultiError::Render(err)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct DamageElement {
|
||||
|
|
@ -458,13 +467,3 @@ impl<R: Renderer> RenderElement<R> for DamageElement {
|
|||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub trait FromGlesError {
|
||||
fn from_gles_error(err: GlesError) -> Self;
|
||||
}
|
||||
|
||||
impl FromGlesError for GlesError {
|
||||
fn from_gles_error(err: GlesError) -> Self {
|
||||
err
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ use crate::{
|
|||
};
|
||||
|
||||
use cosmic::Theme;
|
||||
use element::FromGlesError;
|
||||
use smithay::{
|
||||
backend::{
|
||||
allocator::Fourcc,
|
||||
|
|
@ -628,7 +627,6 @@ pub fn output_elements<R>(
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
R::Error: FromGlesError,
|
||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
WorkspaceRenderElement<R>: RenderElement<R>,
|
||||
{
|
||||
|
|
@ -655,7 +653,7 @@ where
|
|||
),
|
||||
scale,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
.map_err(RenderError::Rendering)?
|
||||
.into(),
|
||||
]
|
||||
|
|
@ -728,7 +726,6 @@ pub fn workspace_elements<R>(
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
R::Error: FromGlesError,
|
||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
WorkspaceRenderElement<R>: RenderElement<R>,
|
||||
{
|
||||
|
|
@ -1205,7 +1202,6 @@ pub fn render_output<'d, R>(
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
R::Error: FromGlesError,
|
||||
CosmicElement<R>: RenderElement<R>,
|
||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
WorkspaceRenderElement<R>: RenderElement<R>,
|
||||
|
|
@ -1510,7 +1506,6 @@ pub fn render_workspace<'d, R>(
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
R::Error: FromGlesError,
|
||||
CosmicElement<R>: RenderElement<R>,
|
||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
WorkspaceRenderElement<R>: RenderElement<R>,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
use crate::{
|
||||
backend::render::element::{AsGlowRenderer, FromGlesError},
|
||||
backend::render::element::AsGlowRenderer,
|
||||
state::State,
|
||||
utils::{iced::IcedElementInternal, prelude::*},
|
||||
};
|
||||
|
|
@ -1366,7 +1366,6 @@ impl<R> RenderElement<R> for CosmicMappedRenderElement<R>
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: 'static,
|
||||
R::Error: FromGlesError,
|
||||
{
|
||||
fn draw(
|
||||
&self,
|
||||
|
|
@ -1399,7 +1398,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error),
|
||||
.map_err(R::from_gles_error),
|
||||
CosmicMappedRenderElement::MovingStack(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
|
|
@ -1421,7 +1420,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error),
|
||||
.map_err(R::from_gles_error),
|
||||
CosmicMappedRenderElement::Overlay(elem) => RenderElement::<GlowRenderer>::draw(
|
||||
elem,
|
||||
R::glow_frame_mut(frame),
|
||||
|
|
@ -1431,7 +1430,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error),
|
||||
.map_err(R::from_gles_error),
|
||||
CosmicMappedRenderElement::StackHoverIndicator(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
|
|
@ -1447,7 +1446,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1510,7 +1509,7 @@ where
|
|||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicMappedRenderElement::MovingStack(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
|
|
@ -1532,7 +1531,7 @@ where
|
|||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicMappedRenderElement::Overlay(elem) => {
|
||||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
|
|
@ -1542,7 +1541,7 @@ where
|
|||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicMappedRenderElement::StackHoverIndicator(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
|
|
@ -1553,7 +1552,7 @@ where
|
|||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem, glow_frame, src, dst, cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,11 +4,8 @@ use super::{
|
|||
};
|
||||
use crate::{
|
||||
backend::render::{
|
||||
IndicatorShader, Key, Usage,
|
||||
clipped_surface::ClippedSurfaceRenderElement,
|
||||
cursor::CursorState,
|
||||
element::{AsGlowRenderer, FromGlesError},
|
||||
shadow::ShadowShader,
|
||||
IndicatorShader, Key, Usage, clipped_surface::ClippedSurfaceRenderElement,
|
||||
cursor::CursorState, element::AsGlowRenderer, shadow::ShadowShader,
|
||||
},
|
||||
hooks::{Decorations, HOOKS},
|
||||
shell::{
|
||||
|
|
@ -2039,7 +2036,6 @@ impl<R> RenderElement<R> for CosmicStackRenderElement<R>
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: 'static,
|
||||
R::Error: FromGlesError,
|
||||
{
|
||||
fn draw(
|
||||
&self,
|
||||
|
|
@ -2064,7 +2060,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicStackRenderElement::Window(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
|
|
@ -2105,7 +2101,7 @@ where
|
|||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicStackRenderElement::Window(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
use crate::{
|
||||
backend::render::{
|
||||
IndicatorShader, Key, Usage,
|
||||
clipped_surface::ClippedSurfaceRenderElement,
|
||||
cursor::CursorState,
|
||||
element::{AsGlowRenderer, FromGlesError},
|
||||
shadow::ShadowShader,
|
||||
IndicatorShader, Key, Usage, clipped_surface::ClippedSurfaceRenderElement,
|
||||
cursor::CursorState, element::AsGlowRenderer, shadow::ShadowShader,
|
||||
},
|
||||
hooks::{Decorations, HOOKS},
|
||||
shell::{
|
||||
|
|
@ -1406,7 +1403,6 @@ impl<R> RenderElement<R> for CosmicWindowRenderElement<R>
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: 'static,
|
||||
R::Error: FromGlesError,
|
||||
{
|
||||
fn draw(
|
||||
&self,
|
||||
|
|
@ -1431,7 +1427,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicWindowRenderElement::Window(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
|
|
@ -1472,7 +1468,7 @@ where
|
|||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
CosmicWindowRenderElement::Window(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
|
|
|
|||
|
|
@ -2,10 +2,7 @@ use crate::shell::focus::FocusTarget;
|
|||
use crate::shell::layout::tiling::RestoreTilingState;
|
||||
use crate::wayland::handlers::xdg_activation::ActivationContext;
|
||||
use crate::{
|
||||
backend::render::{
|
||||
BackdropShader,
|
||||
element::{AsGlowRenderer, FromGlesError},
|
||||
},
|
||||
backend::render::{BackdropShader, element::AsGlowRenderer},
|
||||
shell::{
|
||||
ANIMATION_DURATION, OverviewMode, SeatMoveGrabState,
|
||||
layout::{
|
||||
|
|
@ -2138,7 +2135,6 @@ impl<R> RenderElement<R> for WorkspaceRenderElement<R>
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: 'static,
|
||||
R::Error: FromGlesError,
|
||||
{
|
||||
fn draw(
|
||||
&self,
|
||||
|
|
@ -2171,7 +2167,7 @@ where
|
|||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error),
|
||||
.map_err(R::from_gles_error),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2218,7 +2214,7 @@ where
|
|||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
.map_err(R::from_gles_error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ use tracing::warn;
|
|||
use crate::{
|
||||
backend::render::{
|
||||
CursorMode, ElementFilter, RendererRef, cursor,
|
||||
element::{AsGlowRenderer, CosmicElement, DamageElement, FromGlesError},
|
||||
element::{AsGlowRenderer, CosmicElement, DamageElement},
|
||||
render_workspace,
|
||||
},
|
||||
shell::{CosmicMappedRenderElement, CosmicSurface, WorkspaceRenderElement},
|
||||
|
|
@ -105,8 +105,7 @@ pub fn submit_buffer<R>(
|
|||
mut sync: SyncPoint,
|
||||
) -> Result<Option<PendingImageCopyData>, R::Error>
|
||||
where
|
||||
R: ExportMem,
|
||||
R::Error: FromGlesError,
|
||||
R: ExportMem + AsGlowRenderer,
|
||||
{
|
||||
let Some(damage) = damage else {
|
||||
frame.success(
|
||||
|
|
@ -164,7 +163,7 @@ where
|
|||
|
||||
Ok(())
|
||||
})
|
||||
.map_err(|err| R::Error::from_gles_error(GlesError::BufferAccessError(err)))
|
||||
.map_err(|err| R::from_gles_error(GlesError::BufferAccessError(err)))
|
||||
.and_then(|x| x)
|
||||
{
|
||||
frame.fail(CaptureFailureReason::Unknown);
|
||||
|
|
@ -194,7 +193,6 @@ pub fn render_session<F, R>(
|
|||
) -> Result<Option<PendingImageCopyData>, DTError<R::Error>>
|
||||
where
|
||||
R: AsGlowRenderer,
|
||||
R::Error: FromGlesError,
|
||||
F: for<'d> FnOnce(
|
||||
&WlBuffer,
|
||||
&mut R,
|
||||
|
|
@ -321,7 +319,6 @@ pub fn render_workspace_to_buffer(
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
R::Error: FromGlesError,
|
||||
CosmicElement<R>: RenderElement<R>,
|
||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
WorkspaceRenderElement<R>: RenderElement<R>,
|
||||
|
|
@ -554,7 +551,6 @@ pub fn render_window_to_buffer(
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
R::Error: FromGlesError,
|
||||
CosmicElement<R>: RenderElement<R>,
|
||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
{
|
||||
|
|
@ -793,7 +789,6 @@ pub fn render_cursor_to_buffer(
|
|||
where
|
||||
R: AsGlowRenderer,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
R::Error: FromGlesError,
|
||||
CosmicElement<R>: RenderElement<R>,
|
||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue