Mesa (staging/22.1): glx/drisw: invalidate drawables upon binding context if flush extension exists
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jun 23 16:19:36 UTC 2022
Module: Mesa
Branch: staging/22.1
Commit: 58a830d9c457a2f4d819b9c1ff237b0585584766
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=58a830d9c457a2f4d819b9c1ff237b0585584766
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Mon Jun 20 15:37:46 2022 -0400
glx/drisw: invalidate drawables upon binding context if flush extension exists
this forces surface resize as expected
cc: mesa-stable
fixes #6706
Reviewed-by: Adam Jackson <ajax at redhat.com>
Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17147>
(cherry picked from commit ea005c9e0470adbaa167b6a1d2da5f04efe2035a)
---
.pick_status.json | 2 +-
src/glx/drisw_glx.c | 12 +++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/.pick_status.json b/.pick_status.json
index 2ba088eb80c..4e9734571a9 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -652,7 +652,7 @@
"description": "glx/drisw: invalidate drawables upon binding context if flush extension exists",
"nominated": true,
"nomination_type": 0,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": null
},
diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c
index a9c6aac40b3..9d3bfeb31b9 100644
--- a/src/glx/drisw_glx.c
+++ b/src/glx/drisw_glx.c
@@ -439,12 +439,18 @@ drisw_bind_context(struct glx_context *context, struct glx_context *old,
driReleaseDrawables(&pcp->base);
- if ((*psc->core->bindContext) (pcp->driContext,
+ if (!(*psc->core->bindContext) (pcp->driContext,
pdraw ? pdraw->driDrawable : NULL,
pread ? pread->driDrawable : NULL))
- return Success;
+ return GLXBadContext;
+ if (psc->f) {
+ if (pdraw)
+ psc->f->invalidate(pdraw->driDrawable);
+ if (pread && (!pdraw || pread->driDrawable != pdraw->driDrawable))
+ psc->f->invalidate(pread->driDrawable);
+ }
- return GLXBadContext;
+ return Success;
}
static void
More information about the mesa-commit
mailing list