This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
wiki:development:glx-xlib-workaround [2015/03/07 02:45] mikedep333 created |
wiki:development:glx-xlib-workaround [2021/10/25 21:01] (current) uli42 [Usage] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Workaround for getting GLX 1.4 working. | + | ====== |
- | Applications will use libGL.so, which in turn uses the xlib interface to talk to the X server (nxagent) rather than the GLX interface. | + | ===== Symptoms ===== |
- | From the applications' | + | * Gnome-based and other applications report messages like ''" |
+ | * '' | ||
+ | * Disabling GLX entirely in ''/ | ||
+ | |||
+ | ===== Approach ===== | ||
+ | |||
+ | Use a wrapper/ | ||
+ | |||
+ | ==== Compile ==== | ||
+ | The general way to build the required library is this (see also https:// | ||
+ | * download and extract tarball from mesa3d.org. Try with the newest and go down to older versions if you have problems with the newer one | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== Wrappers === | ||
+ | Now you should find a libGL.so in '' | ||
+ | |||
+ | Copy '' | ||
+ | |||
+ | '' | ||
+ | < | ||
+ | #!/bin/sh | ||
+ | LD_LIBRARY_PATH=< | ||
+ | </ | ||
+ | |||
+ | '' | ||
+ | < | ||
+ | #!/bin/sh | ||
+ | LD_PRELOAD=< | ||
+ | </ | ||
+ | |||
+ | Make them executable and test them: | ||
+ | < | ||
+ | $ chmod u+rx x2goglx* | ||
+ | $ x2goglx glxinfo | ||
+ | $ x2goglx2 glxinfo | ||
+ | </ | ||
+ | |||
+ | Watch the output of the two glxinfo calls. You should see references to your mesa version and you should also see it reporting "GLX version: 1.4", e.g. (shortened): | ||
+ | < | ||
+ | ... | ||
+ | server glx vendor string: Brian Paul | ||
+ | server glx version string: 1.4 Mesa 18.0.5 | ||
+ | ... | ||
+ | client glx vendor string: Brian Paul | ||
+ | client glx version string: 1.4 Mesa 18.0.5 | ||
+ | ... | ||
+ | GLX version: 1.4 | ||
+ | ... | ||
+ | OpenGL vendor string: VMware, Inc. | ||
+ | OpenGL renderer string: llvmpipe (LLVM 3.8, 128 bits) | ||
+ | OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.0.5 | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | |||
+ | Instead of creating the scripts mentioned above you can also add this to your .bashrc (or the config of your favourite shell): | ||
+ | < | ||
+ | export LD_LIBRARY_PATH=< | ||
+ | </ | ||
+ | |||
+ | ==== Usage === | ||
+ | Now you can use one of these created wrapper scripts to run your application: | ||
+ | |||
+ | If you still cannot succeed, you need to elaborate if your application needs some special treatment. If so, please add the solution to the end of this page or post it to the mailinglist for someone to add it here. | ||
+ | |||
+ | |||
+ | ===== Versions / Platforms ===== | ||
+ | The following chapters give some hints on how to compile the library on various combinations of platforms and mesa versions. | ||
+ | ==== Mesa 19 and newer ==== | ||
+ | Please note: the instructions below are valid for older Mesa releases. In Mesa 19 //meson// is recommended for building. Please consult https:// | ||
+ | with any dri driver" | ||
+ | < | ||
+ | $ meson -D glx=gallium-xlib -D gallium-drivers=swrast -D platforms=x11 -D dri3=false -D dri-drivers="" | ||
+ | $ ninja | ||
+ | </ | ||
+ | |||
+ | ==== Debian Buster and Mesa 19.3.2 ==== | ||
+ | |||
+ | < | ||
+ | $ (download and extract tarball from mesa3d.org) | ||
+ | $ 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="" | ||
+ | $ ninja | ||
+ | $ LD_LIBRARY_PATH=`pwd`/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Ubuntu 14.04 ==== | ||
+ | |||
+ | (with trusty-updates mesa 10.1.3-0ubuntu0.3) | ||
- | Ubuntu 14.04 (with trusty-updates mesa 10.1.3-0ubuntu0.3): | ||
< | < | ||
sudo aptitude build-dep mesa | sudo aptitude build-dep mesa | ||
Line 15: | Line 109: | ||
glxinfo | grep 'GLX version:' | glxinfo | grep 'GLX version:' | ||
</ | </ | ||
+ | |||
+ | ==== Gentoo ==== | ||
+ | |||
+ | Ensure that some required tools are installed: | ||
+ | |||
+ | < | ||
+ | emerge -1av app-portage/ | ||
+ | </ | ||
+ | |||
+ | Create a place to store the library - adapt this path to your liking. | ||
+ | < | ||
+ | mkdir -p / | ||
+ | </ | ||
+ | |||
+ | 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=/ | ||
+ | </ | ||
+ | |||
+ | 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_version=" | ||
+ | ebuild "/ | ||
+ | </ | ||
+ | |||
+ | Now compile the library and move it over to the storage location: | ||
+ | < | ||
+ | cd "/ | ||
+ | scons libgl-xlib | ||
+ | cp -av build/ | ||
+ | </ | ||
+ | |||
+ | Cleanup: | ||
+ | |||
+ | < | ||
+ | ebuild "/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== NVidia driver / libGL ===== | ||
+ | |||
+ | On systems with a current (as of 2021) nvidia driver (including nvidia' | ||
+ | |||
+ | < | ||
+ | __GLX_VENDOR_LIBRARY_NAME=mesa LIBGL_ALWAYS_SOFTWARE=1 <your application> | ||
+ | </ | ||
+ | |||
+ | ===== Applications ===== | ||
+ | ==== Matlab 2019b ==== | ||
+ | |||
+ | Compile like this: | ||
+ | < | ||
+ | meson -D glx=gallium-xlib -D gallium-drivers=swrast -D platforms=x11 -D dri3=false -D dri-drivers="" | ||
+ | </ | ||
+ | |||
+ | To make Matlab load the new driver modify Matlab' | ||
+ | cp $MATLAB_DIRECTORY/ | ||
+ | |||
+ | Edit the file ~/ | ||
+ | |||
+ | Add to your .profile: export MESA_GL_VERSION_OVERRIDE=3.0 |