From: Adam Jackson Date: Thu, 10 Oct 2019 18:05:10 +0000 (-0400) Subject: gallium/xlib: Fix xmesa drawable creation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3f840e5ccdaa14981974bfb475d2d1aa4da47e5e;p=mesa.git gallium/xlib: Fix xmesa drawable creation The first time you call glXMakeCurrent, current != ctx. As a result we would never look up whether the drawable already had an XMesaDrawable, and would instead always create one. Then XMesaBufferList would have two different buffers for the same XID, and you'd be reading and drawing to different places, and that's not what you want at all. Instead just always look up the drawable. Fixes: db8be355 (gallium/xlib: Remove drawable caching from the MakeCurrent path) Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1196 Reviewed-by: Michel Dänzer --- diff --git a/src/gallium/state_trackers/glx/xlib/glx_api.c b/src/gallium/state_trackers/glx/xlib/glx_api.c index 029268b32e6..147f928f3c3 100644 --- a/src/gallium/state_trackers/glx/xlib/glx_api.c +++ b/src/gallium/state_trackers/glx/xlib/glx_api.c @@ -1198,9 +1198,7 @@ glXMakeContextCurrent( Display *dpy, GLXDrawable draw, if (draw) { /* Find the XMesaBuffer which corresponds to 'draw' */ - if (ctx == current) { - drawBuffer = XMesaFindBuffer( dpy, draw ); - } + drawBuffer = XMesaFindBuffer( dpy, draw ); if (!drawBuffer) { /* drawable must be a new window! */ drawBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, draw ); @@ -1213,9 +1211,7 @@ glXMakeContextCurrent( Display *dpy, GLXDrawable draw, if (read) { /* Find the XMesaBuffer which corresponds to 'read' */ - if (ctx == current) { - readBuffer = XMesaFindBuffer( dpy, read ); - } + readBuffer = XMesaFindBuffer( dpy, read ); if (!readBuffer) { /* drawable must be a new window! */ readBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, read );