From c65284bf9d0fc74db957b82e57eaee4d78c60bcc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Molinari?= <loic.molinari@collabora.com>
Date: Fri, 26 Jul 2024 13:32:35 +0200
Subject: [PATCH] gl-renderer: Fix debug clear region
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The debug clear region must be generated out of the current render
buffer's damage region, not out of the current damage region, unless
shadow 16F is enabled.

Signed-off-by: Loïc Molinari <loic.molinari@collabora.com>
---
 libweston/renderer-gl/gl-renderer.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c
index 9e2126e769..16e60770eb 100644
--- a/libweston/renderer-gl/gl-renderer.c
+++ b/libweston/renderer-gl/gl-renderer.c
@@ -2337,11 +2337,12 @@ gl_renderer_repaint_output(struct weston_output *output,
 	 * EGL_KHR_partial_update, since we damage the whole area. */
 	if (gr->debug_clear) {
 		pixman_region32_t undamaged;
+		pixman_region32_t *damaged =
+			shadow_exists(go) ? output_damage : &rb->base.damage;
 		int debug_mode = gr->debug_mode;
 
 		pixman_region32_init(&undamaged);
-		pixman_region32_subtract(&undamaged, &output->region,
-					 output_damage);
+		pixman_region32_subtract(&undamaged, &output->region, damaged);
 		gr->debug_mode = DEBUG_MODE_NONE;
 		repaint_views(output, &undamaged);
 		gr->debug_mode = debug_mode;
-- 
GitLab