glx: Fix indirect fallback when a non-Mesa GLX extension is present.
authorAaron Plattner <aplattner@nvidia.com>
Tue, 6 Dec 2011 18:20:30 +0000 (10:20 -0800)
committerBrian Paul <brianp@vmware.com>
Thu, 8 Dec 2011 00:20:10 +0000 (17:20 -0700)
commit63a6fd6603574c1c01324fbeb0863e39d3864c16
tree6f3a16af090ac108351d009fde1166864258c26b
parent4558987818e1ff36e86592e9c5c0b5e181be9ec1
glx: Fix indirect fallback when a non-Mesa GLX extension is present.

When driCreateScreen calls driConvertConfigs to try to convert the
configs for swrast, it fails and returns NULL.  Instead of checking,
it just clobbers psc->base.configs.  Then, when the application asks
for the FBconfigs, there aren't any.

Instead, make the caller responsible for freeing the old modes lists
if both calls to driConvertConfigs succeed.

Without the second fix, glxinfo fails unless you run it with
LIBGL_ALWAYS_INDIRECT:

    $ glxinfo
    name of display: :0.0
    Error: couldn't find RGB GLX visual or fbconfig

    $ LIBGL_ALWAYS_INDIRECT=1 glxinfo
    name of display: :0.0
    display: :0  screen: 0
    direct rendering: No (LIBGL_ALWAYS_INDIRECT set)
    server glx vendor string: NVIDIA Corporation
    server glx version string: 1.4
    [...]

Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
Reviewed-and-tested-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Brian Paul <brianp@vmware.com>
src/glx/dri2_glx.c
src/glx/dri_common.c
src/glx/dri_glx.c
src/glx/drisw_glx.c