User Tools

Site Tools


wiki:development:glx-xlib-workaround

This is an old revision of the document!


Workaround for getting GLX 1.4 working

Symptoms

  • 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.

Approach

Use a wrapper/proxy library provided by Mesa. The applications will use the supplied libGL.so, 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.

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:'

Gentoo

Ensure that some required tools are installed:

emerge -av 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 keep the working area that is used to compile the Mesa package. Before doing so, ensure that the USE flags for media-libs/mesa are configured to your liking.

mkdir -p /etc/portage/env
echo 'FEATURES="noclean"' > /etc/portage/env/features-noclean
echo 'media-libs/mesa features-noclean' >> /etc/portage/package.env
emerge -av media-libs/mesa

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

export MESA_VERSION=$(equery -q list media-libs/mesa -F '$version')
cd /var/tmp/portage/media-libs/mesa-${MESA_VERSION}/work/mesa-${MESA_VERSION}
scons libgl-xlib
cp build/linux-x86_64-debug/gallium/targets/libgl-xlib/* /usr/local/share/mesa-libgl-xlib/

Warning: The noclean feature will result in old versions of the working area for media-libs/mesa stacking up in /var/tmp/portage over time. Remove them from time to time - or right now after compiling and saving the library:

cd
ebuild /usr/portage/media-libs/mesa/mesa-${MESA_VERSION}.ebuild clean
wiki/development/glx-xlib-workaround.1509793792.txt.gz · Last modified: 2017/11/04 11:09 by ionic