gallium/xlib: Partial fix for glXCopySubBufferMESA
authorAdam Jackson <ajax@redhat.com>
Wed, 17 Feb 2021 20:55:26 +0000 (15:55 -0500)
committerMarge Bot <eric+marge@anholt.net>
Tue, 23 Feb 2021 18:57:57 +0000 (18:57 +0000)
commit292d45497ff918037a1e12773b99b0e04c6bd9ff
treea564910daf5c247d833973383df74c73c0264302
parent6635a470381b79240d0d2a423a099ee4b9ff7bf2
gallium/xlib: Partial fix for glXCopySubBufferMESA

xmesa_copy_st_framebuffer would attempt to flush from the front buffer
to the display, but we don't actually have an attachment for the front
buffer (just the back) so nothing would happen. Fix this by flushing
fron the back to the display, threading the dirty box through so we
don't update more than we were told to.

This has the virtue of displaying correctly, but glx-copy-sub-buffer
still fails since there is no real front buffer, reads from GL_FRONT
actually read from the back buffer. The test does: clear to red, swap,
clear to green, copy sub-buffer, expect a green square inside of a red
one from the front buffer. Since you're really reading from the back you
instead get solid green.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9140>
src/gallium/frontends/glx/xlib/xm_st.c
src/gallium/winsys/sw/xlib/xlib_sw_winsys.c