aboutsummaryrefslogtreecommitdiff
path: root/src/render_helpers
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-06-12 09:40:19 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-06-17 09:02:22 +0300
commit9ae98e09cb66da8ec8e1cd716ca1db64cd30cbd9 (patch)
tree430d609c2b330ca7b4c7399b91f595c6ce407b38 /src/render_helpers
parent2ffa1ae705516b5b52e8bfaff36d208d76ae5e01 (diff)
downloadniri-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.rs6
-rw-r--r--src/render_helpers/clipped_surface.rs6
-rw-r--r--src/render_helpers/damage.rs1
-rw-r--r--src/render_helpers/mod.rs2
-rw-r--r--src/render_helpers/offscreen.rs38
-rw-r--r--src/render_helpers/primary_gpu_texture.rs6
-rw-r--r--src/render_helpers/render_elements.rs6
-rw-r--r--src/render_helpers/resize.rs6
-rw-r--r--src/render_helpers/shader_element.rs4
-rw-r--r--src/render_helpers/solid_color.rs1
-rw-r--r--src/render_helpers/texture.rs2
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,
)