drisw: Cache the depth of the X drawable
authorAdam Jackson <ajax@redhat.com>
Mon, 6 Jan 2020 16:06:30 +0000 (11:06 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 23 Jan 2020 23:03:13 +0000 (23:03 +0000)
commit2fc11e8a05f59bbffed284c86108fedbac315081
tree41f80d7cb90d41ef059f58d64ee182ff2a420b5a
parent59f29fc845ce6425959e8db9b707363b1e273445
drisw: Cache the depth of the X drawable

This is not always ->rgbBits, because there are cases where that could
be 32 but we're (legally) bound to a depth-24 pixmap. The important
thing to have match here is the actual server-side notion of depth.  You
can look this up (at modest expense) from the xlib visual info if the
fbconfig has a visual. But it might not, so if not, fetch it (at
slightly greater expense) from XGetGeometry. Do this at GLX drawable
creation so you don't have to do it on the SwapBuffers path.

Apparently this fixes glx/glx-swap-singlebuffer, which is unintentional
but quite pleasant.

Fixes: mesa/mesa#2291
Fixes: 90d58286 ("drisw: Fix and simplify drawable setup")
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3305>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3305>
.gitlab-ci/piglit/quick_gl.txt
src/glx/drisw_glx.c
src/glx/drisw_priv.h