From 38181e1748aa8f22c77bffbf2bbb4692104a3e74 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Wed, 7 Jun 2023 11:15:09 +0200 Subject: [PATCH] gl-renderer: split buffer age query out of output_get_damage Split the buffer age query out into a separate function. The following patches will replace the remainder of the output_get_damage function. Signed-off-by: Philipp Zabel --- libweston/renderer-gl/gl-renderer.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c index 4a6da14f4..d913e8352 100644 --- a/libweston/renderer-gl/gl-renderer.c +++ b/libweston/renderer-gl/gl-renderer.c @@ -1538,15 +1538,13 @@ output_get_border_damage(struct weston_output *output, } } -static void -output_get_damage(struct weston_output *output, - pixman_region32_t *buffer_damage, uint32_t *border_damage) +static int +output_get_buffer_age(struct weston_output *output) { struct gl_output_state *go = get_output_state(output); struct gl_renderer *gr = get_renderer(output->compositor); EGLint buffer_age = 0; EGLBoolean ret; - int i; if (gr->has_egl_buffer_age || gr->has_egl_partial_update) { ret = eglQuerySurface(gr->egl_display, go->egl_surface, @@ -1559,6 +1557,19 @@ output_get_damage(struct weston_output *output, buffer_age = 1; } + return buffer_age; +} + +static void +output_get_damage(struct weston_output *output, + pixman_region32_t *buffer_damage, uint32_t *border_damage) +{ + struct gl_output_state *go = get_output_state(output); + int buffer_age; + int i; + + buffer_age = output_get_buffer_age(output); + if (buffer_age == 0 || buffer_age - 1 > BUFFER_DAMAGE_COUNT) { pixman_region32_copy(buffer_damage, &output->region); *border_damage = BORDER_ALL_DIRTY;