Execute the following and take note of the BusID
sudo nvidia-xconfig --query-gpu-info
Open the X11 configuration file
sudo vim /etc/X11/xorg.conf
and insert the following BusID line using the BusID value you retrieved earlier into this Section:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:0:4:0"
EndSection
or if /etc/X11/xorg.conf does not exist, create a file in /usr/share/X11/xorg.conf.d/xorg.conf with the contents listed above.
Thanks for replying. Sorry I should have said I have a GPU with nvidia driver installed ok but running headless and a remote x11 display. I get the same errors even after creating xorg.conf files with BusID.
The error seems to be output alongside a dump of vtkPolyData2DVS.glsl (54 lines starting with 1: #version 150
It’s probably your remote X11 session that’s leading to the crash then.
I suggest using VNC to connect and let the remote machine do the rendering, like is shown in this video (which used the setup described in the link I sent earlier):
My suggestion is to get VirtualGL installed on your Linux system, and connect it via VNC (vgl sister project TurboVNC works really well, even on broadband) or vglconnect (to tunnel) and execute Slicer (or any openGL based application) via vglrun command.
This worked for us too! we were having trouble getting slicer to work over RDP . We actually set:
export MESA_GL_VERSION_OVERRIDE=3.3
according to our installed GL driver version:
CentOS Linux release 7.7.1908 (Core)
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Max core profile version: 3.3
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.0.5
OpenGL core profile shading language version string: 3.30
OpenGL version string: 3.0 Mesa 18.0.5
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
@tbillah actually setting export MESA_GL_VERSION_OVERRIDE=3.0 also does the trick, so I think the issue is not with the availability of the compatible openGL libs but rather letting slicer know about their existence. I am guessing slicer checks for some ENV variable to figure out the openGL version and if it cannot find the ENV variable, it defaults to setting that variable to an older GSL version (GSL 1.5) and then the downstream rendering engine reads that and falsely raises an error.
I don’t use this approach for OpenGL on X (I use the methods I described above), so I don’t have much to suggest here. Do other VTK-based programs work? (e.g. try ParaView and also VTK examples built from source).