xserver-multidpi/glx
Thomas Hellstrom 91c42093b2 glx: Duplicate relevant fbconfigs for compositing visuals
Previously, before GLX_OML_swap_method was fixed, both the X server and
client ignored the swapMethod fbconfig value, which meant that, if the dri
driver thought it exposed more than one swapMethod, it actually just
exported a duplicated set of fbconfigs. When fixing GLX_OML_swap_method
and restricting the choice for built-in visuals to a single swap method
that meant we didn't have that many fbconfigs to choose from when pairing
the compositing visual with an fbconfig, resulting in the fbconfig paired
with the compositing visual becoming too restrictive for some applications,
(at least for kwin). This problem would also happen if the dri driver
only exposed a single swap method to begin with.

So, to make sure the compositing visual gets a good enough fbconfig,
duplicate fbconfigs that are suitable for compositing visuals and make
sure these duplicated fbconfigs can be used only by compositing visuals.
For duplicated fbconfigs not paired with a compositing visual, construct
new compositing visuals, making compositing clients able to choose visuals
/ fbconfig more adapted to their needs.

This is in some sense equivalent to adding a new "TRUECOLOR_COMPOSITING"
GLX visualtype.

Fixes: 4486d199bd ("glx: Fix visual fbconfig matching with respect to
                      swap method")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102806
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Tested-By: Nick Sarnie <commendsarnex@gmail.com>
Tested-by: Fredrik Höglund <fredrik@kde.org>
Reviewed-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit f84e59a4f4)
2017-12-20 15:20:43 -05:00
..
clientinfo.c glx: Can't mix declarations and code in X.org sources [CVE-2014-8098 pt. 9] 2014-12-09 11:27:26 -08:00
createcontext.c glx: Remove some redundant zero-init of GLX context state 2016-05-11 11:23:20 -04:00
extension_string.c glx: Implement GLX_EXT_libglvnd (v2) 2016-03-30 11:13:57 -04:00
extension_string.h glx: Implement GLX_EXT_libglvnd (v2) 2016-03-30 11:13:57 -04:00
glxbyteorder.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
glxcmds.c glx: Send GLX_VISUAL_SELECT_GROUP_SGIX attribute for visuals 2017-12-20 15:20:43 -05:00
glxcmdsswap.c glx: Top-level length checking for swapped VendorPrivate requests [CVE-2014-8098 4/8] 2014-12-08 18:09:50 -08:00
glxcontext.h glx: Stop tracking hasUnflushedCommands 2016-05-11 11:23:20 -04:00
glxdrawable.h Add Windows-DRI extension 2016-09-15 20:10:29 +01:00
glxdri2.c glx: Fix glXQueryContext for GLX_FBCONFIG_ID and GLX_RENDER_TYPE (v2) 2017-12-13 10:08:40 -05:00
glxdricommon.c glx: Duplicate relevant fbconfigs for compositing visuals 2017-12-20 15:20:43 -05:00
glxdricommon.h glx: Fix computation of GLX_X_RENDERABLE fbconfig attribute 2016-09-06 10:29:14 -04:00
glxdriswrast.c glx: Fix glXQueryContext for GLX_FBCONFIG_ID and GLX_RENDER_TYPE (v2) 2017-12-13 10:08:40 -05:00
glxext.c res: Account for GLXPixmap references too 2016-06-21 11:11:54 -04:00
glxext.h glx: Fix crash when a client exits without deleting GL contexts 2014-12-05 16:41:49 +00:00
glxscreens.c glx: Duplicate relevant fbconfigs for compositing visuals 2017-12-20 15:20:43 -05:00
glxscreens.h glx: Duplicate relevant fbconfigs for compositing visuals 2017-12-20 15:20:43 -05:00
glxserver.h glx: Pass remaining request length into ->varsize (v2) [CVE-2014-8098 8/8] 2014-12-08 18:09:50 -08:00
glxutil.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
indirect_dispatch_swap.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
indirect_dispatch.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
indirect_dispatch.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
indirect_program.c glx: Length-checking for non-generated vendor private requests [CVE-2014-8098 6/8] 2014-12-08 18:09:50 -08:00
indirect_reqsize.c glx: Pass remaining request length into ->varsize (v2) [CVE-2014-8098 8/8] 2014-12-08 18:09:50 -08:00
indirect_reqsize.h glx: Pass remaining request length into ->varsize (v2) [CVE-2014-8098 8/8] 2014-12-08 18:09:50 -08:00
indirect_size_get.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
indirect_size_get.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
indirect_size.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
indirect_table.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
indirect_table.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
indirect_texture_compression.c glx: Length checking for non-generated single requests (v2) [CVE-2014-8098 7/8] 2014-12-08 18:09:50 -08:00
indirect_util.c glx: Fix mask truncation in __glXGetAnswerBuffer [CVE-2014-8093 6/6] 2014-12-08 18:09:50 -08:00
indirect_util.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
Makefile.am glx/dri2: Don't build DRI loader if DRI2 isn't enabled 2016-10-27 14:25:42 +01:00
render2.c glx: Convert non-generated function pointer thunking 2013-12-10 08:02:42 -08:00
render2swap.c glx: Convert non-generated function pointer thunking 2013-12-10 08:02:42 -08:00
renderpix.c glx: convert to direct GL dispatch (v2) 2013-10-29 12:29:16 -04:00
renderpixswap.c glx: convert to direct GL dispatch (v2) 2013-10-29 12:29:16 -04:00
rensize.c glx: Synchronize Xserver glx/rensize.c with mesa src/glx/compsize.c 2015-10-06 11:15:31 -04:00
single2.c glx: Stop tracking hasUnflushedCommands 2016-05-11 11:23:20 -04:00
single2swap.c glx: Stop tracking hasUnflushedCommands 2016-05-11 11:23:20 -04:00
singlepix.c glx: Stop tracking hasUnflushedCommands 2016-05-11 11:23:20 -04:00
singlepixswap.c glx: Stop tracking hasUnflushedCommands 2016-05-11 11:23:20 -04:00
singlesize.c glx: convert to direct GL dispatch (v2) 2013-10-29 12:29:16 -04:00
singlesize.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
swap_interval.c glx: Length-checking for non-generated vendor private requests [CVE-2014-8098 6/8] 2014-12-08 18:09:50 -08:00
unpack.h glx: Additional paranoia in __glXGetAnswerBuffer / __GLX_GET_ANSWER_BUFFER (v2) [CVE-2014-8093 3/6] 2014-12-08 18:09:49 -08:00
xfont.c glx: convert to direct GL dispatch (v2) 2013-10-29 12:29:16 -04:00