From 9ae98e09cb66da8ec8e1cd716ca1db64cd30cbd9 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 12 Jun 2024 09:40:19 +0300 Subject: Update Smithay --- src/render_helpers/border.rs | 6 +++-- src/render_helpers/clipped_surface.rs | 6 +++-- src/render_helpers/damage.rs | 1 + src/render_helpers/mod.rs | 2 +- src/render_helpers/offscreen.rs | 38 +++++++++++++++++++++++++++---- src/render_helpers/primary_gpu_texture.rs | 6 +++-- src/render_helpers/render_elements.rs | 6 +++-- src/render_helpers/resize.rs | 6 +++-- src/render_helpers/shader_element.rs | 4 +++- src/render_helpers/solid_color.rs | 1 + src/render_helpers/texture.rs | 2 ++ 11 files changed, 62 insertions(+), 16 deletions(-) (limited to 'src/render_helpers') diff --git a/src/render_helpers/border.rs b/src/render_helpers/border.rs index 9c909206..8e7d4b16 100644 --- a/src/render_helpers/border.rs +++ b/src/render_helpers/border.rs @@ -239,8 +239,9 @@ impl RenderElement for BorderRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), GlesError> { - RenderElement::::draw(&self.inner, frame, src, dst, damage) + RenderElement::::draw(&self.inner, frame, src, dst, damage, opaque_regions) } fn underlying_storage(&self, renderer: &mut GlesRenderer) -> Option { @@ -255,8 +256,9 @@ impl<'render> RenderElement> for BorderRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), TtyRendererError<'render>> { - RenderElement::>::draw(&self.inner, frame, src, dst, damage) + RenderElement::>::draw(&self.inner, frame, src, dst, damage, opaque_regions) } fn underlying_storage(&self, renderer: &mut TtyRenderer<'render>) -> Option { diff --git a/src/render_helpers/clipped_surface.rs b/src/render_helpers/clipped_surface.rs index 72c497b2..7d52e410 100644 --- a/src/render_helpers/clipped_surface.rs +++ b/src/render_helpers/clipped_surface.rs @@ -215,6 +215,7 @@ impl RenderElement for ClippedSurfaceRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), GlesError> { frame.override_default_tex_program( self.program.clone(), @@ -227,7 +228,7 @@ impl RenderElement for ClippedSurfaceRenderElement { mat3_uniform("input_to_geo", self.input_to_geo), ], ); - RenderElement::::draw(&self.inner, frame, src, dst, damage)?; + RenderElement::::draw(&self.inner, frame, src, dst, damage, opaque_regions)?; frame.clear_tex_program_override(); Ok(()) } @@ -248,6 +249,7 @@ impl<'render> RenderElement> src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), TtyRendererError<'render>> { frame.as_gles_frame().override_default_tex_program( self.program.clone(), @@ -260,7 +262,7 @@ impl<'render> RenderElement> mat3_uniform("input_to_geo", self.input_to_geo), ], ); - RenderElement::draw(&self.inner, frame, src, dst, damage)?; + RenderElement::draw(&self.inner, frame, src, dst, damage, opaque_regions)?; frame.as_gles_frame().clear_tex_program_override(); Ok(()) } diff --git a/src/render_helpers/damage.rs b/src/render_helpers/damage.rs index ef7b125f..f8cd8c2d 100644 --- a/src/render_helpers/damage.rs +++ b/src/render_helpers/damage.rs @@ -69,6 +69,7 @@ impl RenderElement for ExtraDamage { _src: Rectangle, _dst: Rectangle, _damage: &[Rectangle], + _opaque_regions: &[Rectangle], ) -> Result<(), R::Error> { Ok(()) } diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs index c1c1fea9..2eb1d6df 100644 --- a/src/render_helpers/mod.rs +++ b/src/render_helpers/mod.rs @@ -320,7 +320,7 @@ fn render_elements( if let Some(mut damage) = output_rect.intersection(dst) { damage.loc -= dst.loc; element - .draw(&mut frame, src, dst, &[damage]) + .draw(&mut frame, src, dst, &[damage], &[]) .context("error drawing element")?; } } diff --git a/src/render_helpers/offscreen.rs b/src/render_helpers/offscreen.rs index a7df69c1..96b0692f 100644 --- a/src/render_helpers/offscreen.rs +++ b/src/render_helpers/offscreen.rs @@ -175,12 +175,27 @@ impl RenderElement for OffscreenRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), GlesError> { let gles_frame = frame.as_gles_frame(); if let Some(texture) = &self.texture { - RenderElement::::draw(texture, gles_frame, src, dst, damage)?; + RenderElement::::draw( + texture, + gles_frame, + src, + dst, + damage, + opaque_regions, + )?; } else { - RenderElement::::draw(&self.fallback, gles_frame, src, dst, damage)?; + RenderElement::::draw( + &self.fallback, + gles_frame, + src, + dst, + damage, + opaque_regions, + )?; } Ok(()) } @@ -201,12 +216,27 @@ impl<'render> RenderElement> for OffscreenRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), TtyRendererError<'render>> { let gles_frame = frame.as_gles_frame(); if let Some(texture) = &self.texture { - RenderElement::::draw(texture, gles_frame, src, dst, damage)?; + RenderElement::::draw( + texture, + gles_frame, + src, + dst, + damage, + opaque_regions, + )?; } else { - RenderElement::::draw(&self.fallback, gles_frame, src, dst, damage)?; + RenderElement::::draw( + &self.fallback, + gles_frame, + src, + dst, + damage, + opaque_regions, + )?; } Ok(()) } diff --git a/src/render_helpers/primary_gpu_texture.rs b/src/render_helpers/primary_gpu_texture.rs index 9f4e38d1..3698212d 100644 --- a/src/render_helpers/primary_gpu_texture.rs +++ b/src/render_helpers/primary_gpu_texture.rs @@ -60,9 +60,10 @@ impl RenderElement for PrimaryGpuTextureRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), GlesError> { let gles_frame = frame.as_gles_frame(); - RenderElement::::draw(&self.0, gles_frame, src, dst, damage)?; + RenderElement::::draw(&self.0, gles_frame, src, dst, damage, opaque_regions)?; Ok(()) } @@ -80,9 +81,10 @@ impl<'render> RenderElement> for PrimaryGpuTextureRenderEle src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), TtyRendererError<'render>> { let gles_frame = frame.as_gles_frame(); - RenderElement::::draw(&self.0, gles_frame, src, dst, damage)?; + RenderElement::::draw(&self.0, gles_frame, src, dst, damage, opaque_regions)?; Ok(()) } diff --git a/src/render_helpers/render_elements.rs b/src/render_helpers/render_elements.rs index 2dae7342..6dcba09d 100644 --- a/src/render_helpers/render_elements.rs +++ b/src/render_helpers/render_elements.rs @@ -103,10 +103,11 @@ macro_rules! niri_render_elements { src: smithay::utils::Rectangle, dst: smithay::utils::Rectangle, damage: &[smithay::utils::Rectangle], + opaque_regions: &[smithay::utils::Rectangle], ) -> Result<(), smithay::backend::renderer::gles::GlesError> { match self { $($name::$variant(elem) => { - smithay::backend::renderer::element::RenderElement::::draw(elem, frame, src, dst, damage) + smithay::backend::renderer::element::RenderElement::::draw(elem, frame, src, dst, damage, opaque_regions) })+ } } @@ -127,10 +128,11 @@ macro_rules! niri_render_elements { src: smithay::utils::Rectangle, dst: smithay::utils::Rectangle, damage: &[smithay::utils::Rectangle], + opaque_regions: &[smithay::utils::Rectangle], ) -> Result<(), $crate::backend::tty::TtyRendererError<'render>> { match self { $($name::$variant(elem) => { - smithay::backend::renderer::element::RenderElement::<$crate::backend::tty::TtyRenderer<'render>>::draw(elem, frame, src, dst, damage) + smithay::backend::renderer::element::RenderElement::<$crate::backend::tty::TtyRenderer<'render>>::draw(elem, frame, src, dst, damage, opaque_regions) })+ } } diff --git a/src/render_helpers/resize.rs b/src/render_helpers/resize.rs index b9c0231f..b0fdda92 100644 --- a/src/render_helpers/resize.rs +++ b/src/render_helpers/resize.rs @@ -166,8 +166,9 @@ impl RenderElement for ResizeRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), GlesError> { - RenderElement::::draw(&self.0, frame, src, dst, damage)?; + RenderElement::::draw(&self.0, frame, src, dst, damage, opaque_regions)?; Ok(()) } @@ -183,9 +184,10 @@ impl<'render> RenderElement> for ResizeRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), TtyRendererError<'render>> { let gles_frame = frame.as_gles_frame(); - RenderElement::::draw(&self.0, gles_frame, src, dst, damage)?; + RenderElement::::draw(&self.0, gles_frame, src, dst, damage, opaque_regions)?; Ok(()) } diff --git a/src/render_helpers/shader_element.rs b/src/render_helpers/shader_element.rs index bb13d54d..a432ca34 100644 --- a/src/render_helpers/shader_element.rs +++ b/src/render_helpers/shader_element.rs @@ -297,6 +297,7 @@ impl RenderElement for ShaderRenderElement { src: Rectangle, dest: Rectangle, damage: &[Rectangle], + _opaque_regions: &[Rectangle], ) -> Result<(), GlesError> { let frame = frame.as_gles_frame(); @@ -526,10 +527,11 @@ impl<'render> RenderElement> for ShaderRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), TtyRendererError<'render>> { let frame = frame.as_gles_frame(); - RenderElement::::draw(self, frame, src, dst, damage)?; + RenderElement::::draw(self, frame, src, dst, damage, opaque_regions)?; Ok(()) } diff --git a/src/render_helpers/solid_color.rs b/src/render_helpers/solid_color.rs index ebc06688..82144785 100644 --- a/src/render_helpers/solid_color.rs +++ b/src/render_helpers/solid_color.rs @@ -157,6 +157,7 @@ impl RenderElement for SolidColorRenderElement { _src: Rectangle, dst: Rectangle, damage: &[Rectangle], + _opaque_regions: &[Rectangle], ) -> Result<(), ::Error> { frame.draw_solid(dst, damage, self.color) } diff --git a/src/render_helpers/texture.rs b/src/render_helpers/texture.rs index b818547d..47349990 100644 --- a/src/render_helpers/texture.rs +++ b/src/render_helpers/texture.rs @@ -203,6 +203,7 @@ where src: Rectangle, dest: Rectangle, damage: &[Rectangle], + opaque_regions: &[Rectangle], ) -> Result<(), ::Error> { if frame.id() != self.buffer.renderer_id { warn!("trying to render texture from different renderer"); @@ -214,6 +215,7 @@ where src, dest, damage, + opaque_regions, self.buffer.transform, self.alpha, ) -- cgit