Module: Mesa Branch: fdo_master Commit: 1253d58983b2b6ba4ed16444a344327e8117f333 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1253d58983b2b6ba4ed16444a344327e8117f333
Author: Thomas Hellstrom <[email protected]> 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: <[email protected]> Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-and-tested-by: Michel Dänzer <[email protected]> --- 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); } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
