From 12a47b84b7386e1aac6c4b0d36ad198705432378 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 4 May 2023 13:18:50 -0400 Subject: [PATCH] egl/dri2: trigger drawable invalidation from surface queries for zink this mimics dri3 behavior and avoids scenarios where renderbuffers can get out of sync with their resources fixes #6744 Acked-by: Daniel Stone Part-of: --- src/egl/drivers/dri2/egl_dri2.c | 2 +- src/egl/drivers/dri2/platform_x11.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 34b12bc76dc..dab5968e8f9 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1031,7 +1031,7 @@ dri2_setup_extensions(_EGLDisplay *disp) extensions = dri2_dpy->core->getExtensions(dri2_dpy->dri_screen_render_gpu); - if (dri2_dpy->image_driver || dri2_dpy->dri2) { + if (dri2_dpy->image_driver || dri2_dpy->dri2 || disp->Options.Zink) { if (!loader_bind_extensions(dri2_dpy, dri2_core_extensions, ARRAY_SIZE(dri2_core_extensions), extensions)) return EGL_FALSE; } else { diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 917c82bdeb2..f2fb0231433 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -464,8 +464,11 @@ dri2_query_surface(_EGLDisplay *disp, _EGLSurface *surf, case EGL_WIDTH: case EGL_HEIGHT: if (x11_get_drawable_info(drawable, &x, &y, &w, &h, dri2_surf)) { + bool changed = surf->Width != w || surf->Height != h; surf->Width = w; surf->Height = h; + if (changed && dri2_dpy->flush) + dri2_dpy->flush->invalidate(drawable); } break; default: