Leap 15 ignores indirect GLX request for NVIDIA driver

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…

Poste:

zypper se -si nvidia xorg-x11-server

because:

X.Org X Server 1.18.3
Release Date: 2016-04-04

and here:

i+ | xorg-x11-server        | Paket | 1.19.6-lp150.6.1   | x86_64 | openSUSE-Leap-15.0-Oss

cat /var/log/Xorg.0.log
23.367] (–) Log file renamed from “/var/log/Xorg.pid-1957.log” to “/var/log/Xorg.0.log”
23.367]
X.Org X Server 1.19.6
Release Date: 2017-12-20

Thanks for taking a look! Is this what you meant?


$ zypper se -si nvidia xorg-x11-server

S  | Name                  | Type    | Version          | Arch   | Repository       
---+-----------------------+---------+------------------+--------+------------------
i+ | xorg-x11-server       | package | 1.19.6-lp150.6.1 | x86_64 | openSUSE-15.0-OSS
i  | xorg-x11-server-extra | package | 1.19.6-lp150.6.1 | x86_64 | openSUSE-15.0-OSS

Don’t know why I have “X.Org X Server 1.18.3” in the log, “X -version” gives:


$ X -version

**X.Org X Server 1.19.6**
Release Date: 2017-12-20
X Protocol Version 11, Revision 0
Build Operating System: openSUSE SUSE LINUX
Current Operating System: Linux pc-haendel 4.12.14-lp150.12.16-default #1 SMP Tue Aug 14 17:51:27 UTC 2018 (28574e6) x86_64
Kernel command line: BOOT_IMAGE=/vmlinuz-4.12.14-lp150.12.16-default root=UUID=0d205685-e44e-4d9f-bfd3-182262b2fc9b resume=/dev/disk/by-id/ata-WDC_WD5003ABYZ-011FA0_WD-WMAYP0M7RS30-part2 quiet showopts
Build Date: 17 April 2018  12:00:00PM
 
Current version of pixman: 0.34.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.

Maybe some inconsistency after upgrading, rather than reinstalling to Leap 15? Like I said I had the same problem with 43, though… Any ideas?

So nobody knows where your Xorg.0.log is…

ls -al /var/log | grep -i xorg

Sorry, my mistake :X

Since the upgrade on Friday X apparently stopped writing to /var/log/Xorg.0.log. I found the new log in /var/lib/gdm/.local/share/xorg/Xorg.0.log:


    59.815] (--) Log file renamed from "/var/lib/gdm/.local/share/xorg/Xorg.pid-2463.log" to "/var/lib/gdm/.local/share/xorg/Xorg.0.log"
    59.836]
X.Org X Server 1.19.6
Release Date: 2017-12-20
    59.837] X Protocol Version 11, Revision 0
    59.837] Build Operating System: openSUSE SUSE LINUX
    59.837] Current Operating System: Linux pc-haendel 4.12.14-lp150.12.16-default #1 SMP Tue Aug 14 17:51:27 UTC 2018 (28574e6) x86_64
    59.837] Kernel command line: BOOT_IMAGE=/vmlinuz-4.12.14-lp150.12.16-default root=UUID=0d205685-e44e-4d9f-bfd3-182262b2fc9b resume=/dev/disk/by-id/ata-WDC_WD5003ABYZ-011FA0_WD-WMAYP0M7RS30-part2 quiet showopts
    59.837] Build Date: 17 April 2018  12:00:00PM
    59.837]
    59.837] Current version of pixman: 0.34.0
    59.837]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
    59.837] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    59.837] (==) Log file: "/var/lib/gdm/.local/share/xorg/Xorg.0.log", Time: Mon Sep 24 10:29:40 2018
    59.850] (==) Using config file: "/etc/X11/xorg.conf"
    59.850] (==) Using config directory: "/etc/X11/xorg.conf.d"
    59.850] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
    59.928] (==) ServerLayout "Layout0"
    59.928] (**) |-->Screen "Screen0" (0)
    59.928] (**) |   |-->Monitor "Monitor0"
    59.928] (**) |   |-->Device "Device0"
    59.928] (**) |-->Input Device "Keyboard0"
    59.928] (**) |-->Input Device "Mouse0"
**    59.928] (**) Option "IndirectGLX" "True"**
    59.928] (==) Automatically adding devices
    59.928] (==) Automatically enabling devices
    59.928] (==) Automatically adding GPU devices
    59.928] (==) Max clients allowed: 256, resource mask: 0x1fffff
    59.995] (WW) The directory "/usr/share/fonts/misc/sgi" does not exist.
    59.995]    Entry deleted from font path.
    60.019] (==) FontPath set to:
        /usr/share/fonts/misc:unscaled,
        /usr/share/fonts/Type1/,
        /usr/share/fonts/100dpi:unscaled,
        /usr/share/fonts/75dpi:unscaled,
        /usr/share/fonts/ghostscript/,
        /usr/share/fonts/cyrillic:unscaled,
        /usr/share/fonts/truetype/,
        built-ins
    60.019] (==) ModulePath set to "/usr/lib64/xorg/modules"
    60.020] (**) Extension "XFree86-DGA" is disabled
    60.020] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
    60.020] (WW) Disabling Keyboard0
    60.020] (WW) Disabling Mouse0
    60.020] (II) Loader magic: 0x560833a8cd00
    60.020] (II) Module ABI versions:
    60.020]    X.Org ANSI C Emulation: 0.4
    60.020]    X.Org Video Driver: 23.0
    60.020]    X.Org XInput driver : 24.1
    60.020]    X.Org Server Extension : 10.0
    60.021] (++) using VT number 7
    60.025] (II) systemd-logind: took control of session /org/freedesktop/login1/session/c1
    60.025] (II) xfree86: Adding drm device (/dev/dri/card0)
    60.026] (II) systemd-logind: got fd for /dev/dri/card0 226:0 fd 12 paused 0
    60.030] (--) PCI:*(0:1:0:0) 10de:104a:19da:5215 rev 161, Mem @ 0xda000000/16777216, 0xd0000000/134217728, 0xd8000000/33554432, I/O @ 0x00002000/128, BIOS @ 0x????????/131072
    60.030] (II) LoadModule: "glx"
    60.031] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
    60.355] (II) Module glx: vendor="NVIDIA Corporation"
    60.355]    compiled for 4.0.2, module version = 1.0.0
    60.355]    Module class: X.Org Server Extension
    60.368] (II) NVIDIA GLX Module  390.87  Tue Aug 21 16:10:56 PDT 2018
    60.378] (II) LoadModule: "nvidia"
    60.378] (II) Loading /usr/lib64/xorg/modules/drivers/nvidia_drv.so
    60.428] (II) Module nvidia: vendor="NVIDIA Corporation"
    60.428]    compiled for 4.0.2, module version = 1.0.0
    60.428]    Module class: X.Org Video Driver
    60.436] (II) NVIDIA dlloader X Driver  390.87  Tue Aug 21 15:44:49 PDT 2018
    60.436] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
    60.436] xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
    60.436] (II) systemd-logind: releasing fd for 226:0
    60.437] (II) Loading sub module "fb"
    60.437] (II) LoadModule: "fb"
    60.438] (II) Loading /usr/lib64/xorg/modules/libfb.so
    60.450] (II) Module fb: vendor="X.Org Foundation"
    60.450]    compiled for 1.19.6, module version = 1.0.0
    60.450]    ABI class: X.Org ANSI C Emulation, version 0.4
    60.450] (II) Loading sub module "wfb"
    60.450] (II) LoadModule: "wfb"
    60.465] (II) Loading /usr/lib64/xorg/modules/libwfb.so
    60.478] (II) Module wfb: vendor="X.Org Foundation"
    60.478]    compiled for 1.19.6, module version = 1.0.0
    60.478]    ABI class: X.Org ANSI C Emulation, version 0.4
    60.478] (II) Loading sub module "ramdac"
    60.478] (II) LoadModule: "ramdac"
    60.478] (II) Module "ramdac" already built-in
    60.497] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
    60.497] (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
    60.497] (==) NVIDIA(0): RGB weight 888
    60.497] (==) NVIDIA(0): Default visual is TrueColor
    60.497] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
    60.497] (**) NVIDIA(0): Enabling 2D acceleration
    61.317] (--) NVIDIA(0): Valid display device(s) on GPU-0 at PCI:1:0:0
    61.317] (--) NVIDIA(0):     CRT-0
    61.317] (--) NVIDIA(0):     CRT-1
    61.317] (--) NVIDIA(0):     DFP-0 (boot)
    61.317] (--) NVIDIA(0):     DFP-1
    61.317] (--) NVIDIA(0):     DFP-2
    61.319] (II) NVIDIA(0): NVIDIA GPU GeForce GT 610 (GF119) at PCI:1:0:0 (GPU-0)
    61.319] (--) NVIDIA(0): Memory: 1048576 kBytes
    61.319] (--) NVIDIA(0): VideoBIOS: 75.19.56.00.00
    61.319] (II) NVIDIA(0): Detected PCI Express Link width: 16X
    61.325] (--) NVIDIA(GPU-0): CRT-0: disconnected
    61.325] (--) NVIDIA(GPU-0): CRT-0: 400.0 MHz maximum pixel clock
    61.325] (--) NVIDIA(GPU-0):
    61.332] (--) NVIDIA(GPU-0): CRT-1: disconnected
    61.332] (--) NVIDIA(GPU-0): CRT-1: 400.0 MHz maximum pixel clock
    61.332] (--) NVIDIA(GPU-0):
    61.345] (--) NVIDIA(GPU-0): DELL P2213 (DFP-0): connected
    61.345] (--) NVIDIA(GPU-0): DELL P2213 (DFP-0): Internal TMDS
    61.345] (--) NVIDIA(GPU-0): DELL P2213 (DFP-0): 330.0 MHz maximum pixel clock
    61.345] (--) NVIDIA(GPU-0):
    61.345] (--) NVIDIA(GPU-0): DFP-1: disconnected
    61.345] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
    61.345] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
    61.345] (--) NVIDIA(GPU-0):
    61.359] (--) NVIDIA(GPU-0): DELL P2213 (DFP-2): connected
    61.359] (--) NVIDIA(GPU-0): DELL P2213 (DFP-2): Internal TMDS
    61.359] (--) NVIDIA(GPU-0): DELL P2213 (DFP-2): 165.0 MHz maximum pixel clock
    61.359] (--) NVIDIA(GPU-0):
    61.364] (==) NVIDIA(0):
    61.364] (==) NVIDIA(0): No modes were requested; the default mode "nvidia-auto-select"
    61.364] (==) NVIDIA(0):     will be used as the requested mode.
    61.364] (==) NVIDIA(0):
    61.364] (II) NVIDIA(0): Validated MetaModes:
    61.364] (II) NVIDIA(0):     "DFP-0:nvidia-auto-select,DFP-2:nvidia-auto-select"
    61.364] (II) NVIDIA(0): Virtual screen size determined to be 3360 x 1050
    61.367] (--) NVIDIA(0): DPI set to (90, 88); computed from "UseEdidDpi" X config
    61.367] (--) NVIDIA(0):     option
    61.367] (--) Depth 24 pixmap format is 32 bpp
    61.367] (II) NVIDIA: Using 6144.00 MB of virtual memory for indirect memory
    61.367] (II) NVIDIA:     access.
    61.370] (II) NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
    61.370] (II) NVIDIA(0):     may not be running or the "AcpidSocketPath" X
    61.370] (II) NVIDIA(0):     configuration option may not be set correctly.  When the
    61.370] (II) NVIDIA(0):     ACPI event daemon is available, the NVIDIA X driver will
    61.370] (II) NVIDIA(0):     try to use it to receive ACPI event notifications.  For
    61.370] (II) NVIDIA(0):     details, please see the "ConnectToAcpid" and
    61.370] (II) NVIDIA(0):     "AcpidSocketPath" X configuration options in Appendix B: X
    61.370] (II) NVIDIA(0):     Config Options in the README.
    61.388] (II) NVIDIA(0): Setting mode "DFP-0:nvidia-auto-select,DFP-2:nvidia-auto-select"
    61.505] (==) NVIDIA(0): Disabling shared memory pixmaps
    61.505] (==) NVIDIA(0): Backing store enabled
    61.505] (==) NVIDIA(0): Silken mouse enabled
    61.505] (**) NVIDIA(0): DPMS enabled
**    61.506] (WW) NVIDIA(0): Option "AllowIndirectGLX" is not used
    61.506] (WW) NVIDIA(0): Option "IndirectGLX" is not used**
    61.506] (II) Loading sub module "dri2"
    61.506] (II) LoadModule: "dri2"
    61.506] (II) Module "dri2" already built-in
    61.506] (II) NVIDIA(0): [DRI2] Setup complete
    61.506] (II) NVIDIA(0): [DRI2]   VDPAU driver: nvidia
**    61.508] (II) Initializing extension GLX**
    61.952] (II) config/udev: Adding input device Power Button (/dev/input/event1)
...

Then there are a bunch of new device warnings:


    62.054] (II) config/udev: Adding input device HDA Intel MID Line Out (/dev/input/event10)
    62.054] (II) No input driver specified, ignoring this device.
    62.054] (II) This device may have been added with another device file.
    62.055] (II) config/udev: Adding input device HDA Intel MID Front Headphone (/dev/input/event11)
    62.055] (II) No input driver specified, ignoring this device.
    62.055] (II) This device may have been added with another device file.
    62.055] (II) config/udev: Adding input device HDA Digital PCBeep (/dev/input/event6)
    62.055] (II) No input driver specified, ignoring this device.
    62.055] (II) This device may have been added with another device file.
    62.055] (II) config/udev: Adding input device HDA Intel MID Front Mic (/dev/input/event7)
    62.055] (II) No input driver specified, ignoring this device.
    62.055] (II) This device may have been added with another device file.
    62.056] (II) config/udev: Adding input device HDA Intel MID Rear Mic (/dev/input/event8)
    62.056] (II) No input driver specified, ignoring this device.
    62.056] (II) This device may have been added with another device file.
    62.056] (II) config/udev: Adding input device HDA Intel MID Line (/dev/input/event9)
    62.056] (II) No input driver specified, ignoring this device.
    62.056] (II) This device may have been added with another device file.
    62.056] (II) config/udev: Adding input device PC Speaker (/dev/input/event2)
    62.056] (II) No input driver specified, ignoring this device.
    62.056] (II) This device may have been added with another device file.
    62.056] (II) config/udev: Adding input device (unnamed) (/dev/ttyS0)
    62.056] (II) No input driver specified, ignoring this device.
    62.056] (II) This device may have been added with another device file.
    62.057] (II) config/udev: Adding input device (unnamed) (/dev/ttyS1)
    62.057] (II) No input driver specified, ignoring this device.
    62.057] (II) This device may have been added with another device file.
    62.057] (II) config/udev: Adding input device (unnamed) (/dev/ttyS10)
    62.057] (II) No input driver specified, ignoring this device.
    62.057] (II) This device may have been added with another device file.
    62.057] (II) config/udev: Adding input device (unnamed) (/dev/ttyS11)
    62.057] (II) No input driver specified, ignoring this device.
    62.057] (II) This device may have been added with another device file.
    62.057] (II) config/udev: Adding input device (unnamed) (/dev/ttyS12)
    62.057] (II) No input driver specified, ignoring this device.
    62.057] (II) This device may have been added with another device file.
    62.057] (II) config/udev: Adding input device (unnamed) (/dev/ttyS13)
    62.057] (II) No input driver specified, ignoring this device.
    62.057] (II) This device may have been added with another device file.
    62.058] (II) config/udev: Adding input device (unnamed) (/dev/ttyS14)
    62.058] (II) No input driver specified, ignoring this device.
    62.058] (II) This device may have been added with another device file.
    62.058] (II) config/udev: Adding input device (unnamed) (/dev/ttyS15)
    62.058] (II) No input driver specified, ignoring this device.
...


glxinfo shows I’m still using direct rendering:


$ glxinfo | head
name of display: :1
display: :1  screen: 0
**direct rendering: Yes**
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_no_error, GLX_ARB_create_context_profile, 
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, 
    GLX_ARB_multisample, GLX_EXT_buffer_age,

But I can force indirect on local host:


glxinfo -i | head
name of display: :1
display: :1  screen: 0
**direct rendering: No (-i specified)**
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:                                                                                             
    GLX_ARB_context_flush_control, GLX_ARB_create_context,                                                         
    GLX_ARB_create_context_no_error, GLX_ARB_create_context_profile,                                               
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,                                                     
    GLX_ARB_multisample, GLX_EXT_buffer_age,

I can’t do that on remote host:


$ glxinfo -i

name of display: localhost:11.0
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Error: couldn't find RGB GLX visual or fbconfig

How can I check that I’m really using indirect rendering on remote host?

As an update, I just added +iglx to Xorg using a wrapper script (I already tried this in Leap 43 without success):


ps ax | grep iglx
 2455 tty7     Sl+    0:02 /usr/bin/Xorg.original vt7 -displayfd 3 -auth /run/user/465/gdm/Xauthority -background none -noreset -keeptty -verbose 3 +iglx
 2705 tty2     Sl+    0:06 /usr/bin/Xorg.original vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3 +iglx

I also manually relinked /usr/lib64/xorg/modules/extensions/libglx.so to point to /usr/lib64/xorg/modules/extensions/libglx.so.390.87 rather than /usr/lib64/xorg/modules/extensions/xorg/xorg-libglx.so. Neither change had any effect.

/usr/lib64/xorg/modules/extensions/libglx.so is used by X:


    59.738] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
    60.044] (II) Module glx: vendor="NVIDIA Corporation"
    60.044]    compiled for 4.0.2, module version = 1.0.0
    60.044]    Module class: X.Org Server Extension

So, turns out my problem was pretty specific and not related to OpenSuSE particularly, so not sure how many others this will help, but just in case:

It looks like we were affected by a Mesa / GL bug in CentOS 7.5.1804 (the latest release at time of writing). Local hosts with NVidia drivers installed can’t use GLX applications on remote CentOS 7 machines over SSH when the following packages are installed on the remote machine:

mesa-libEGL, mesa-libGL, mesa-libgbm, mesa-libglapi 17.2.3-8.20171019.el7 and libdrm 2.4.83-2.el7

The solution was to either ditch NVidia drivers in favor of Nouveau on all local hosts (not practical for us), or to downgrade those packages on the CentOS 7 remote machine to:

mesa-libEGL, mesa-libGL, mesa-libgbm, mesa-libglapi17.0.1-6.20170307.el7 and libdrm 2.4.74-1.el7

Now we can finally run GLX applications over SSH again! rotfl!