diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-12 09:40:19 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-17 09:02:22 +0300 |
| commit | 9ae98e09cb66da8ec8e1cd716ca1db64cd30cbd9 (patch) | |
| tree | 430d609c2b330ca7b4c7399b91f595c6ce407b38 /src/render_helpers | |
| parent | 2ffa1ae705516b5b52e8bfaff36d208d76ae5e01 (diff) | |
| download | niri-9ae98e09cb66da8ec8e1cd716ca1db64cd30cbd9.tar.gz niri-9ae98e09cb66da8ec8e1cd716ca1db64cd30cbd9.tar.bz2 niri-9ae98e09cb66da8ec8e1cd716ca1db64cd30cbd9.zip | |
Update Smithay
Diffstat (limited to 'src/render_helpers')
| -rw-r--r-- | src/render_helpers/border.rs | 6 | ||||
| -rw-r--r-- | src/render_helpers/clipped_surface.rs | 6 | ||||
| -rw-r--r-- | src/render_helpers/damage.rs | 1 | ||||
| -rw-r--r-- | src/render_helpers/mod.rs | 2 | ||||
| -rw-r--r-- | src/render_helpers/offscreen.rs | 38 | ||||
| -rw-r--r-- | src/render_helpers/primary_gpu_texture.rs | 6 | ||||
| -rw-r--r-- | src/render_helpers/render_elements.rs | 6 | ||||
| -rw-r--r-- | src/render_helpers/resize.rs | 6 | ||||
| -rw-r--r-- | src/render_helpers/shader_element.rs | 4 | ||||
| -rw-r--r-- | src/render_helpers/solid_color.rs | 1 | ||||
| -rw-r--r-- | src/render_helpers/texture.rs | 2 |
11 files changed, 62 insertions, 16 deletions
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<GlesRenderer> for BorderRenderElement { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), GlesError> { - RenderElement::<GlesRenderer>::draw(&self.inner, frame, src, dst, damage) + RenderElement::<GlesRenderer>::draw(&self.inner, frame, src, dst, damage, opaque_regions) } fn underlying_storage(&self, renderer: &mut GlesRenderer) -> Option<UnderlyingStorage> { @@ -255,8 +256,9 @@ impl<'render> RenderElement<TtyRenderer<'render>> for BorderRenderElement { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), TtyRendererError<'render>> { - RenderElement::<TtyRenderer<'_>>::draw(&self.inner, frame, src, dst, damage) + RenderElement::<TtyRenderer<'_>>::draw(&self.inner, frame, src, dst, damage, opaque_regions) } fn underlying_storage(&self, renderer: &mut TtyRenderer<'render>) -> Option<UnderlyingStorage> { 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<GlesRenderer> for ClippedSurfaceRenderElement<GlesRenderer> { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), GlesError> { frame.override_default_tex_program( self.program.clone(), @@ -227,7 +228,7 @@ impl RenderElement<GlesRenderer> for ClippedSurfaceRenderElement<GlesRenderer> { mat3_uniform("input_to_geo", self.input_to_geo), ], ); - RenderElement::<GlesRenderer>::draw(&self.inner, frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::draw(&self.inner, frame, src, dst, damage, opaque_regions)?; frame.clear_tex_program_override(); Ok(()) } @@ -248,6 +249,7 @@ impl<'render> RenderElement<TtyRenderer<'render>> src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), TtyRendererError<'render>> { frame.as_gles_frame().override_default_tex_program( self.program.clone(), @@ -260,7 +262,7 @@ impl<'render> RenderElement<TtyRenderer<'render>> 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<R: Renderer> RenderElement<R> for ExtraDamage { _src: Rectangle<f64, Buffer>, _dst: Rectangle<i32, Physical>, _damage: &[Rectangle<i32, Physical>], + _opaque_regions: &[Rectangle<i32, Physical>], ) -> 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<GlesRenderer> for OffscreenRenderElement { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), GlesError> { let gles_frame = frame.as_gles_frame(); if let Some(texture) = &self.texture { - RenderElement::<GlesRenderer>::draw(texture, gles_frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::draw( + texture, + gles_frame, + src, + dst, + damage, + opaque_regions, + )?; } else { - RenderElement::<GlesRenderer>::draw(&self.fallback, gles_frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::draw( + &self.fallback, + gles_frame, + src, + dst, + damage, + opaque_regions, + )?; } Ok(()) } @@ -201,12 +216,27 @@ impl<'render> RenderElement<TtyRenderer<'render>> for OffscreenRenderElement { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), TtyRendererError<'render>> { let gles_frame = frame.as_gles_frame(); if let Some(texture) = &self.texture { - RenderElement::<GlesRenderer>::draw(texture, gles_frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::draw( + texture, + gles_frame, + src, + dst, + damage, + opaque_regions, + )?; } else { - RenderElement::<GlesRenderer>::draw(&self.fallback, gles_frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::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<GlesRenderer> for PrimaryGpuTextureRenderElement { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), GlesError> { let gles_frame = frame.as_gles_frame(); - RenderElement::<GlesRenderer>::draw(&self.0, gles_frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::draw(&self.0, gles_frame, src, dst, damage, opaque_regions)?; Ok(()) } @@ -80,9 +81,10 @@ impl<'render> RenderElement<TtyRenderer<'render>> for PrimaryGpuTextureRenderEle src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), TtyRendererError<'render>> { let gles_frame = frame.as_gles_frame(); - RenderElement::<GlesRenderer>::draw(&self.0, gles_frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::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<f64, smithay::utils::Buffer>, dst: smithay::utils::Rectangle<i32, smithay::utils::Physical>, damage: &[smithay::utils::Rectangle<i32, smithay::utils::Physical>], + opaque_regions: &[smithay::utils::Rectangle<i32, smithay::utils::Physical>], ) -> Result<(), smithay::backend::renderer::gles::GlesError> { match self { $($name::$variant(elem) => { - smithay::backend::renderer::element::RenderElement::<smithay::backend::renderer::gles::GlesRenderer>::draw(elem, frame, src, dst, damage) + smithay::backend::renderer::element::RenderElement::<smithay::backend::renderer::gles::GlesRenderer>::draw(elem, frame, src, dst, damage, opaque_regions) })+ } } @@ -127,10 +128,11 @@ macro_rules! niri_render_elements { src: smithay::utils::Rectangle<f64, smithay::utils::Buffer>, dst: smithay::utils::Rectangle<i32, smithay::utils::Physical>, damage: &[smithay::utils::Rectangle<i32, smithay::utils::Physical>], + opaque_regions: &[smithay::utils::Rectangle<i32, smithay::utils::Physical>], ) -> 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<GlesRenderer> for ResizeRenderElement { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), GlesError> { - RenderElement::<GlesRenderer>::draw(&self.0, frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::draw(&self.0, frame, src, dst, damage, opaque_regions)?; Ok(()) } @@ -183,9 +184,10 @@ impl<'render> RenderElement<TtyRenderer<'render>> for ResizeRenderElement { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), TtyRendererError<'render>> { let gles_frame = frame.as_gles_frame(); - RenderElement::<GlesRenderer>::draw(&self.0, gles_frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::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<GlesRenderer> for ShaderRenderElement { src: Rectangle<f64, Buffer>, dest: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + _opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), GlesError> { let frame = frame.as_gles_frame(); @@ -526,10 +527,11 @@ impl<'render> RenderElement<TtyRenderer<'render>> for ShaderRenderElement { src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), TtyRendererError<'render>> { let frame = frame.as_gles_frame(); - RenderElement::<GlesRenderer>::draw(self, frame, src, dst, damage)?; + RenderElement::<GlesRenderer>::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<R: Renderer> RenderElement<R> for SolidColorRenderElement { _src: Rectangle<f64, Buffer>, dst: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + _opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), <R as Renderer>::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<f64, Buffer>, dest: Rectangle<i32, Physical>, damage: &[Rectangle<i32, Physical>], + opaque_regions: &[Rectangle<i32, Physical>], ) -> Result<(), <R as Renderer>::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, ) |
