User Tools

Site Tools


This is an old revision of the document!

Workaround for getting GLX 1.4 working


  • Gnome-based and other applications report messages like “Failed to initialize gtk+: Unable to initialize the Clutter backend: no available drivers found.”
  • glxinfo reports GLX Version is 1.2
  • Disabling GLX entirely in /etc/x2go/x2goagent.options via -extension GLX does not work because the application does not have the capability to work without GLX at all.


Use a wrapper/proxy library provided by Mesa. The applications will use the supplied, which in turn uses the lib interface to talk to the X server (nxagent) rather than the GLX interface. From the applications' perspective, they have GLX 1.4.

Mesa 19 and newer

Please note: the instructions below are valid for olter Mesa releases. In Mesa 19 meson is recommended for building. Please consult for a basic compilation instruction. Since those instructions will not work out of the box (Error: “gallium-xlib conflicts with any dri driver”) as of Mesa 19.3.2 you need to call meson with some further parameters like this:

$ meson -D glx=gallium-xlib -D gallium-drivers=swrast -D platforms=x11 -D dri3=false -D dri-drivers="" -D vulkan-drivers="" -D buildtype=release -D optimization=3
$ ninja

Debian Buster and Mesa 19.3.2

$ (download and extract tarball from
$ cd mesa-19.3.2
$ mkdir build
$ cd build
$ meson -D glx=gallium-xlib -D gallium-drivers=swrast -D platforms=x11 -D dri3=false -D dri-drivers="" -D vulkan-drivers="" -D buildtype=release -D optimization=3
$ ninja
$ LD_LIBRARY_PATH=`pwd`/src/gallium/targets/libgl-xlib/:${LD_LIBRARY_PATH} glxinfo | grep 'GLX version:'

If you want you can copy the libgl-xlib directory to some location of your likes and write a small wrapper “x2goglx” for starting GLX applications:

LD_LIBRARY_PATH=<your directory>/libgl-xlib exec "$@"
$ chmod u+rx x2goglx
$ x2goglx glxinfo

Ubuntu 14.04

(with trusty-updates mesa 10.1.3-0ubuntu0.3)

sudo aptitude build-dep mesa
sudo aptitude install scons llvm-dev
apt-get source mesa
cd mesa
scons libgl-xlib
export LD_LIBRARY_PATH=`pwd`/build/linux-x86_64-debug/gallium/targets/libgl-xlib/:${LD_LIBRARY_PATH}
glxinfo | grep 'GLX version:'


Ensure that some required tools are installed:

emerge -1av app-portage/gentoolkit dev-util/scons dev-python/mako

Create a place to store the library - adapt this path to your liking.

mkdir -p /usr/local/share/mesa-libgl-xlib

Place the following line in a suitable place - either in your .bashrc or in the script that calls the individual application:

export LD_LIBRARY_PATH=/usr/local/share/mesa-libgl-xlib/:${LD_LIBRARY_PATH}

Configure portage to extract and patch the Mesa package into a known location. Before doing so, ensure that the USE flags for media-libs/mesa are configured to your liking.

mesa_version="$(equery -q list media-libs/mesa -F '$version')"
ebuild "/usr/portage/media-libs/mesa/mesa-${mesa_version}.ebuild" prepare

Now compile the library and move it over to the storage location:

cd "/var/tmp/portage/media-libs/mesa-${mesa_version}/work/mesa-${mesa_version}"
scons libgl-xlib
cp -av build/linux-x86_64-debug/gallium/targets/libgl-xlib/* /usr/local/share/mesa-libgl-xlib/


ebuild "/usr/portage/media-libs/mesa/mesa-${mesa_version}.ebuild" clean

Matlab 2019b

Compile like this: ``` meson -D glx=gallium-xlib -D gallium-drivers=swrast -D platforms=x11 -D dri3=false -D dri-drivers=“” -D vulkan-drivers=“” -D buildtype=release -D optimization=3 -Dprefix=/usr/local/mesa-20.1.0/ ```

To make Matlab load the new driver modify Matlab's lib search path: cp $MATLAB_DIRECTORY/bin/ ~

Edit the file ~/, find the glnxa* section and add the path to you mesa library, e.g. /usr/local/mesa-20.1.0/lib/x86_64-linux-gnu, to LDPATH_PREFIX

Add to your .profile: export MESA_GL_VERSION_OVERRIDE=3.0

wiki/development/glx-xlib-workaround.1591125104.txt.gz · Last modified: 2020/06/02 19:11 by uli42