Hi all,
I have a problem with my workstation that I can’t seem to figure out. I need to connect via SSH to a remote machine and launch a couple of graphical applications that use OpenGL. The remote machines are running CentOS 7 and for whatever reason this only tends to work with Indirect GLX (maybe because I have an NVIDIA card in my workstation and they have integrated Intel graphics, but I don’t really know). Anyway, the simple solution was always just to activate indirect GLX and render locally.
As another complication, my GeForce GT 610 card never worked with OpenSuSE nouveau or packaged nvidia drivers from the repos, so I always have to install the proprietary NVIDIA driver. This is a bit of a pain but I can live with that.
The thing which is driving me crazy, though, is that for a while now (spanning 2 OpenSuSE releases, several kernel releases and a couple of different NVIDIA drivers, all with the same symptoms) I can’t get indirect GLX to work anymore. I really need it at the moment but it seems like a daft reason to ditch an otherwise working system. Here’s how I try to enable it in xorg.conf (I also tried xorg.conf.d):
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
EndSection
Section "ServerFlags"
** Option "AllowIndirectGLX" "True"
Option "IndirectGLX" "True"**
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
** Option "AllowIndirectGLX" "True"
Option "IndirectGLX" "True"**
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
** Option "AllowIndirectGLX" "True"
Option "IndirectGLX" "True"**
SubSection "Display"
Depth 24
EndSubSection
EndSection
I added the GLX options in various different places for testing, in this example they’re just added everywhere for good measure.
Xorg.0.log shows that the options are read and recognized:
52.879]
X.Org X Server 1.18.3
Release Date: 2016-04-04
52.879] X Protocol Version 11, Revision 0
52.879] Build Operating System: openSUSE SUSE LINUX
52.879] Current Operating System: Linux pc-haendel 4.4.155-68-default #1 SMP Tue Sep 11 13:07:19 UTC 2018 (4ecc783) x86_64
52.879] Kernel command line: BOOT_IMAGE=/vmlinuz-4.4.155-68-default root=UUID=0d205685-e44e-4d9f-bfd3-182262b2fc9b resume=/dev/disk/by-id/ata-WDC_WD5003ABYZ-011FA0_WD-WMAYP0M7RS30-part2 quiet showopts
52.879] Build Date: 14 March 2018 10:01:54PM
52.879]
52.879] Current version of pixman: 0.34.0
52.879] Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
52.879] Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
52.879] (==) Log file: "/var/log/Xorg.0.log", Time: Fri Sep 21 14:47:41 2018
53.053] (==) Using config file: "/etc/X11/xorg.conf"
53.053] (==) Using config directory: "/etc/X11/xorg.conf.d"
53.053] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
53.341] (==) ServerLayout "Layout0"
53.341] (**) |-->Screen "Screen0" (0)
53.341] (**) | |-->Monitor "Monitor0"
53.341] (**) | |-->Device "Device0"
53.341] (**) |-->Input Device "Keyboard0"
53.341] (**) |-->Input Device "Mouse0"
** 53.341] (**) Option "IndirectGLX" "True"**
53.341] (==) Automatically adding devices
53.341] (==) Automatically enabling devices
53.341] (==) Automatically adding GPU devices
All looks good so far my xorg.conf file was read and understood, but then:
53.418] (II) LoadModule: "glx"
53.466] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
54.333] (II) Module glx: vendor="NVIDIA Corporation"
54.333] compiled for 4.0.2, module version = 1.0.0
54.333] Module class: X.Org Server Extension
54.352] (II) NVIDIA GLX Module 390.77 Tue Jul 10 22:05:43 PDT 2018
54.373] (II) LoadModule: "nvidia"
54.374] (II) Loading /usr/lib64/xorg/modules/drivers/nvidia_drv.so
54.458] (II) Module nvidia: vendor="NVIDIA Corporation"
54.458] compiled for 4.0.2, module version = 1.0.0
54.458] Module class: X.Org Video Driver
54.471] (II) NVIDIA dlloader X Driver 390.77 Tue Jul 10 21:41:24 PDT 2018
54.471] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
54.471] (II) Loading sub module "fb"
54.471] (II) LoadModule: "fb"
54.471] (II) Loading /usr/lib64/xorg/modules/libfb.so
54.487] (II) Module fb: vendor="X.Org Foundation"
54.487] compiled for 1.18.3, module version = 1.0.0
54.487] ABI class: X.Org ANSI C Emulation, version 0.4
54.487] (II) Loading sub module "wfb"
54.487] (II) LoadModule: "wfb"
54.494] (II) Loading /usr/lib64/xorg/modules/libwfb.so
54.512] (II) Module wfb: vendor="X.Org Foundation"
54.512] compiled for 1.18.3, module version = 1.0.0
54.512] ABI class: X.Org ANSI C Emulation, version 0.4
...
55.373] (==) NVIDIA(0): No modes were requested; the default mode "nvidia-auto-select"
55.373] (==) NVIDIA(0): will be used as the requested mode.
55.373] (==) NVIDIA(0):
55.373] (II) NVIDIA(0): Validated MetaModes:
55.373] (II) NVIDIA(0): "DFP-0:nvidia-auto-select,DFP-2:nvidia-auto-select"
55.373] (II) NVIDIA(0): Virtual screen size determined to be 3360 x 1050
55.376] (--) NVIDIA(0): DPI set to (90, 88); computed from "UseEdidDpi" X config
55.376] (--) NVIDIA(0): option
55.376] (--) Depth 24 pixmap format is 32 bpp
55.377] (II) NVIDIA: Using 6144.00 MB of virtual memory for indirect memory
55.377] (II) NVIDIA: access.
55.379] (II) NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
55.379] (II) NVIDIA(0): may not be running or the "AcpidSocketPath" X
55.379] (II) NVIDIA(0): configuration option may not be set correctly. When the
55.379] (II) NVIDIA(0): ACPI event daemon is available, the NVIDIA X driver will
55.379] (II) NVIDIA(0): try to use it to receive ACPI event notifications. For
55.379] (II) NVIDIA(0): details, please see the "ConnectToAcpid" and
55.379] (II) NVIDIA(0): "AcpidSocketPath" X configuration options in Appendix B: X
55.379] (II) NVIDIA(0): Config Options in the README.
55.397] (II) NVIDIA(0): Setting mode "DFP-0:nvidia-auto-select,DFP-2:nvidia-auto-select"
55.520] (==) NVIDIA(0): Disabling shared memory pixmaps
55.520] (==) NVIDIA(0): Backing store enabled
55.520] (==) NVIDIA(0): Silken mouse enabled
55.520] (**) NVIDIA(0): DPMS enabled
** 55.520] (WW) NVIDIA(0): Option "AllowIndirectGLX" is not used
55.520] (WW) NVIDIA(0): Option "IndirectGLX" is not used**
55.520] (II) Loading sub module "dri2"
55.520] (II) LoadModule: "dri2"
55.520] (II) Module "dri2" already built-in
55.520] (II) NVIDIA(0): [DRI2] Setup complete
55.520] (II) NVIDIA(0): [DRI2] VDPAU driver: nvidia
55.520] (--) RandR disabled
** 55.524] (II) Initializing extension GLX
55.524] (II) Indirect GLX disabled.**
56.121] (II) config/udev: Adding input device Power Button (/dev/input/event1)
My options weren’t used (maybe this is one of the “superfluous” entries, though), and then Indirect GLX is disabled when the GLX extension is initialized. I can’t figure out why and I don’t see any explanation here, or did I miss something? glxinfo confirms that I’m using direct rendering by default and my X-applications don’t work via SSH:
$ glxinfo
name of display: :1
display: :1 screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
$ ssh -Y host@domain
$ glxinfo
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Error: couldn't find RGB GLX visual or fbconfig
name of display: localhost:10.0
228 GLX Visuals
Also, why is GLX using NVIDIA 390.77 when I installed 390.87:
/var/log/Xorg.0.log
53.418] (II) LoadModule: "glx"
53.466] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
54.333] (II) Module glx: vendor="NVIDIA Corporation"
54.333] compiled for 4.0.2, module version = 1.0.0
54.333] Module class: X.Org Server Extension
** 54.352] (II) NVIDIA GLX Module 390.77 Tue Jul 10 22:05:43 PDT 2018**
54.373] (II) LoadModule: "nvidia"
54.374] (II) Loading /usr/lib64/xorg/modules/drivers/nvidia_drv.so
54.458] (II) Module nvidia: vendor="NVIDIA Corporation"
54.458] compiled for 4.0.2, module version = 1.0.0
54.458] Module class: X.Org Video Driver
** 54.471] (II) NVIDIA dlloader X Driver 390.77 Tue Jul 10 21:41:24 PDT 2018**
54.471] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
vs:
$ modinfo nvidia
filename: /lib/modules/4.12.14-lp150.12.16-default/kernel/drivers/video/nvidia.ko
alias: char-major-195-*
**version: 390.87**
supported: external
license: NVIDIA
suserelease: openSUSE Leap 15.0
srcversion: 9680830EEE0BAB392576E99
alias: pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias: pci:v000010DEd*sv*sd*bc03sc02i00*
alias: pci:v000010DEd*sv*sd*bc03sc00i00*
depends: ipmi_msghandler
retpoline: Y
vermagic: 4.12.14-lp150.12.16-default SMP mod_unload modversions retpoline
Has anyone got any ideas? I’ve gone about as far as Google can take me…