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 <p.zabel@pengutronix.de>
This commit is contained in:
Philipp Zabel 2023-06-07 11:15:09 +02:00 committed by Daniel Stone
parent f043ad3647
commit 38181e1748

View file

@ -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;