From 1a8d6b1f1df80009795ed23e9ce0298fac65d766 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Fri, 3 May 2024 10:25:51 +0400 Subject: Add a semi-working debug-toggle-damage binding --- src/backend/tty.rs | 9 ++++++++- src/backend/winit.rs | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src/backend') diff --git a/src/backend/tty.rs b/src/backend/tty.rs index 3eb75a87..abcc93d3 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -58,6 +58,7 @@ use wayland_protocols::wp::presentation_time::server::wp_presentation_feedback; use super::{IpcOutputMap, RenderResult}; use crate::frame_clock::FrameClock; use crate::niri::{Niri, RedrawState, State}; +use crate::render_helpers::debug::draw_damage; use crate::render_helpers::renderer::AsGlesRenderer; use crate::render_helpers::{resources, shaders, RenderTarget}; use crate::utils::{get_monotonic_time, logical_output}; @@ -1243,9 +1244,15 @@ impl Tty { }; // Render the elements. - let elements = + let mut elements = niri.render::(&mut renderer, output, true, RenderTarget::Output); + // Visualize the damage, if enabled. + if niri.debug_draw_damage { + let output_state = niri.output_state.get_mut(output).unwrap(); + draw_damage(&mut output_state.debug_damage_tracker, &mut elements); + } + // Hand them over to the DRM. let drm_compositor = &mut surface.compositor; match drm_compositor.render_frame::<_, _>(&mut renderer, &elements, [0.; 4]) { diff --git a/src/backend/winit.rs b/src/backend/winit.rs index 1d1dbc8a..f61c1c9f 100644 --- a/src/backend/winit.rs +++ b/src/backend/winit.rs @@ -19,6 +19,7 @@ use smithay::reexports::winit::window::WindowBuilder; use super::{IpcOutputMap, RenderResult}; use crate::niri::{Niri, RedrawState, State}; +use crate::render_helpers::debug::draw_damage; use crate::render_helpers::{resources, shaders, RenderTarget}; use crate::utils::{get_monotonic_time, logical_output}; @@ -159,13 +160,19 @@ impl Winit { let _span = tracy_client::span!("Winit::render"); // Render the elements. - let elements = niri.render::( + let mut elements = niri.render::( self.backend.renderer(), output, true, RenderTarget::Output, ); + // Visualize the damage, if enabled. + if niri.debug_draw_damage { + let output_state = niri.output_state.get_mut(output).unwrap(); + draw_damage(&mut output_state.debug_damage_tracker, &mut elements); + } + // Hand them over to winit. self.backend.bind().unwrap(); let age = self.backend.buffer_age().unwrap(); -- cgit