aboutsummaryrefslogtreecommitdiff
path: root/src/render_helpers/offscreen.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-06-01 12:27:30 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-06-10 18:08:00 +0300
commit3c63be6261f3420008366b41b3df6d57b3ec3867 (patch)
treec937af80e68e25d6a0d18aeae9338a4a161d83ab /src/render_helpers/offscreen.rs
parente3406ac2556c7f68cd00f11b5856222dcce7f680 (diff)
downloadniri-3c63be6261f3420008366b41b3df6d57b3ec3867.tar.gz
niri-3c63be6261f3420008366b41b3df6d57b3ec3867.tar.bz2
niri-3c63be6261f3420008366b41b3df6d57b3ec3867.zip
Implement our own TextureBuffer/RenderElement
Supports fractional texture scale + has some getters.
Diffstat (limited to 'src/render_helpers/offscreen.rs')
-rw-r--r--src/render_helpers/offscreen.rs17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/render_helpers/offscreen.rs b/src/render_helpers/offscreen.rs
index 7c563b9b..a7df69c1 100644
--- a/src/render_helpers/offscreen.rs
+++ b/src/render_helpers/offscreen.rs
@@ -1,6 +1,5 @@
use smithay::backend::allocator::Fourcc;
use smithay::backend::renderer::element::solid::{SolidColorBuffer, SolidColorRenderElement};
-use smithay::backend::renderer::element::texture::{TextureBuffer, TextureRenderElement};
use smithay::backend::renderer::element::utils::{Relocate, RelocateRenderElement};
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer};
@@ -10,6 +9,7 @@ use smithay::utils::{Buffer, Physical, Rectangle, Scale, Transform};
use super::primary_gpu_texture::PrimaryGpuTextureRenderElement;
use super::render_to_texture;
use super::renderer::AsGlesFrame;
+use super::texture::{TextureBuffer, TextureRenderElement};
use crate::backend::tty::{TtyFrame, TtyRenderer, TtyRendererError};
/// Renders elements into an off-screen buffer.
@@ -59,12 +59,17 @@ impl OffscreenRenderElement {
elements,
) {
Ok((texture, _sync_point)) => {
- let buffer =
- TextureBuffer::from_texture(renderer, texture, scale, Transform::Normal, None);
+ let buffer = TextureBuffer::from_texture(
+ renderer,
+ texture,
+ scale as f64,
+ Transform::Normal,
+ Vec::new(),
+ );
let element = TextureRenderElement::from_texture_buffer(
- geo.loc.to_f64(),
- &buffer,
- Some(result_alpha),
+ buffer,
+ geo.loc.to_f64().to_logical(scale as f64),
+ result_alpha,
None,
None,
Kind::Unspecified,