User Tools

Site Tools


wiki:development:glx-xlib-workaround

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
wiki:development:glx-xlib-workaround [2020/01/23 18:22]
uli42 [Approach]
wiki:development:glx-xlib-workaround [2020/08/20 20:24]
uli42 add helper script with LD_PRELOAD
Line 11: Line 11:
 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. 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.
  
-Please note: the instructions below are not current anymore since mesa now mainly uses meson for building, athough still offerings scons. Please consult https://mesa3d.org/llvmpipe.html for a description how to compile the required libraryNote that those instructions are incomplete as of Mesa 19.3.2you need to call meson with some further parameters:+ 
 +==== 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://mesa3d.org/llvmpipe.html for a basic compilation instructionSince 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:
 <code> <code>
 $ 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 $ 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 $ ninja
 +</code>
 +
 +==== Debian Buster and Mesa 19.3.2 ====
 +
 +<code>
 +$ (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="" -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:'
 +</code>
 +
 +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:
 +<code>
 +#!/bin/sh
 +LD_LIBRARY_PATH=<your directory>/libgl-xlib:${LD_LIBRARY_PATH} exec "$@"
 +</code>
 +
 +<code>
 +$ chmod u+rx x2goglx
 +$ x2goglx glxinfo
 +</code>
 +
 +Some software modifies LD_LIBRARY_PATH itself. In that case you might be successful with LD_PRELOAD. Instead of setting LD_LIBRARY_PATH point to a directory you set LD_PRELOAD to point to the generated library itself:
 +<code>
 +#!/bin/sh
 +LD_PRELOAD=<your directory>/libgl-xlib/libGL.so exec "$@"
 </code> </code>
  
Line 68: Line 100:
 ebuild "/usr/portage/media-libs/mesa/mesa-${mesa_version}.ebuild" clean ebuild "/usr/portage/media-libs/mesa/mesa-${mesa_version}.ebuild" clean
 </code> </code>
 +
 +===== Matlab 2019b =====
 +
 +Compile like this:
 +<code>
 +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/
 +</code>
 +
 +To make Matlab load the new driver modify Matlab's lib search path:
 +cp $MATLAB_DIRECTORY/bin/.matlab7rc.sh ~
 +
 +Edit the file ~/.matlab7rc.sh, find the glnxa* section and add ''/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.txt · Last modified: 2021/10/25 21:01 by uli42