diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-01 12:27:30 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-10 18:08:00 +0300 |
| commit | 3c63be6261f3420008366b41b3df6d57b3ec3867 (patch) | |
| tree | c937af80e68e25d6a0d18aeae9338a4a161d83ab /src/render_helpers/offscreen.rs | |
| parent | e3406ac2556c7f68cd00f11b5856222dcce7f680 (diff) | |
| download | niri-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.rs | 17 |
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, |
