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 <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22858>
This commit is contained in:
Mike Blumenkrantz 2023-05-04 13:18:50 -04:00 committed by Marge Bot
parent 1563aea69f
commit 12a47b84b7
2 changed files with 4 additions and 1 deletions

View file

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

View file

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