Mesa (master): dri3/GLX: Fix drawable invalidation v2

Thomas Hellstrom thomash at kemper.freedesktop.org
Wed Jun 7 09:36:39 UTC 2017


Module: Mesa
Branch: master
Commit: 1253d58983b2b6ba4ed16444a344327e8117f333
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1253d58983b2b6ba4ed16444a344327e8117f333

Author: Thomas Hellstrom <thellstrom at vmware.com>
Date:   Thu Jun  1 12:04:05 2017 +0200

dri3/GLX: Fix drawable invalidation v2

A number of internal VMware apitrace traces image comparisons fail with
dri3 because the viewport transformation becomes incorrect after an X
drawable resize. The incorrect viewport transformation sometimes persist
until the second draw-call after a swapBuffer.

Comparing with the dri2 glx code there are a couple of places where dri2
invalidates the drawable in the absence of server-triggered invalidation,
where dri3 doesn't do that. When these invalidation points are added to
dri3, the image comparisons become correct.

v2:
Addressed review comment by Michel Dänzer.

Cc: <mesa-stable at lists.freedesktop.org>
Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
Reviewed-and-tested-by: Michel Dänzer <michel.daenzer at amd.com>

---

 src/glx/dri3_glx.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
index d07968e3c5..63474d0dca 100644
--- a/src/glx/dri3_glx.c
+++ b/src/glx/dri3_glx.c
@@ -235,6 +235,11 @@ dri3_bind_context(struct glx_context *context, struct glx_context *old,
    if (!(*psc->core->bindContext) (pcp->driContext, dri_draw, dri_read))
       return GLXBadContext;
 
+   if (dri_draw)
+      (*psc->f->invalidate)(dri_draw);
+   if (dri_read && dri_read != dri_draw)
+      (*psc->f->invalidate)(dri_read);
+
    return Success;
 }
 
@@ -493,6 +498,7 @@ dri3_flush_front_buffer(__DRIdrawable *driDrawable, void *loaderPrivate)
 
    loader_dri3_flush(draw, __DRI2_FLUSH_DRAWABLE, __DRI2_THROTTLE_FLUSHFRONT);
 
+   (*psc->f->invalidate)(driDrawable);
    loader_dri3_wait_gl(draw);
 }
 




More information about the mesa-commit mailing list