Xlib: extension "GLX" missing on display ":2.0" - tigervnc

1,746 views
Skip to first unread message

Jagga Soorma

unread,
Mar 31, 2018, 5:06:17 PM3/31/18
to TigerVNC User Discussion/Support
Hello,

I am trying to get glxgears/glxinfo working from a remote tigervnc session but it seems to be failing with the following error:

$ glxinfo
name of display: :2.0
Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".
Error: couldn't find RGB GLX visual or fbconfig

Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".
Xlib: extension "GLX" missing on display ":2.0".

# less /var/log/Xorg.0.log | grep gl
[ 68.529] (II) LoadModule: "glx"
[ 68.531] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
[ 68.571] (II) Module glx: vendor="NVIDIA Corporation"

# lspci -k | grep -iEA5 '3d|vga'

06:00.0 VGA compatible controller: NVIDIA Corporation GF119 [NVS 310] (rev a1)
Subsystem: Hewlett-Packard Company Device 1154
Kernel driver in use: nvidia
Kernel modules: nvidia-drm, nvidia, nouveau, nvidiafb
06:00.1 Audio device: NVIDIA Corporation GF119 HDMI Audio Controller (rev a1)
Subsystem: Hewlett-Packard Company Device 1154

# cat /etc/X11/xorg.conf
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 390.25 (buildmeister@swio-display-x86-rhel47-03) Wed Jan 24 20:46:04 PST 2018

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection

Section "Files"
FontPath "/usr/share/fonts/default/Type1"
EndSection

Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
# generated from data in "/etc/sysconfig/keyboard"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "us"
Option "XkbModel" "pc105"
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"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection

Am I missing something here? Any help would be greatly appreciated!

Thanks,
-J

Henrique Martins

unread,
Mar 31, 2018, 5:20:48 PM3/31/18
to TigerVNC User Discussion/Support, Jagga Soorma
> $ glxinfo
> name of display: :2.0
> Xlib: extension "GLX" missing on display ":2.0".
> ...
>
> # less /var/log/Xorg.0.log | grep gl
> [ 68.529] (II) LoadModule: "glx"
> [ 68.531] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
> [ 68.571] (II) Module glx: vendor="NVIDIA Corporation"

Isn't Xorg.0.log the log for display :0?
Your vnc session seems to be on display :2.

-- Henrique

Jagga Soorma

unread,
Mar 31, 2018, 5:32:51 PM3/31/18
to TigerVNC User Discussion/Support
Ahh apologies.  Here is the entries from the correct log file:

--
[root@newark log]# cat Xorg.2.log | grep -i glx
[269519.426] (II) LoadModule: "glx"
[269519.427] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
[269519.434] (II) Module glx: vendor="NVIDIA Corporation"
[269519.434] (II) NVIDIA GLX Module  390.25  Wed Jan 24 19:23:51 PST 2018
[269520.059] (II) Initializing extension GLX
--

Henrique Martins

unread,
Mar 31, 2018, 6:55:20 PM3/31/18
to TigerVNC User Discussion/Support
> Ahh apologies. Here is the entries from the correct log file:
> [root@newark log]# cat Xorg.2.log | grep -i glx
> [269519.426] (II) LoadModule: "glx"

Time for a google search on "vnc opengl".
Your situation may be covered by some of the answers.

-- Henrique

DRC

unread,
Mar 31, 2018, 9:31:01 PM3/31/18
to tigervn...@googlegroups.com
Better yet, search for "nvidia glx" in the Google Group. This is
basically a duplicate question:

https://groups.google.com/forum/#!searchin/tigervnc-users/nvidia$20glx%7Csort:date/tigervnc-users/7HyWGmvzahc/lPHXEcRFAwAJ

Long and the short of it:

When Xvnc is built using the X.org 1.19.x source, you must do one of the
following in order for the built-in (unaccelerated) OpenGL
implementation in Xvnc to work properly:

- Use an OpenGL client other than nVidia's. You don't necessarily need
to uninstall their drivers. You could just install a build of Mesa into
a non-system directory and manipulate LD_LIBRARY_PATH to load that
version of libGL, instead of nVidia's, whenever you want to run OpenGL
applications in Xvnc, OR

- Use a newer operating system that has native libglvnd support (Fedora,
for instance, but not RHEL/CentOS-- yet), OR

- Modify the X.org source such that it enables indirect OpenGL as
needed. This requires additional X.org modifications to ensure that
indirect OpenGL functions properly in a remote display environment
(TigerVNC has none of those modifications.)

Explanation:

X.org 1.19.x disables indirect OpenGL by default, and certain timing
changes that were made since X.org 1.18.x also make it such that, if you
re-enable indirect OpenGL, it won't work properly in a VNC environment
(framebuffer updates for the OpenGL windows won't be sent.) Reverting
those timing changes makes it such that direct rendering no longer
performs well. What we do in TurboVNC, since we're using an in-tree
X.org code base, is modify the server's GLX extension such that it
detects when an indirect OpenGL context has been created and temporarily
reverts the X server timing to the X.org 1.18.x behavior until all
indirect OpenGL contexts have been destroyed.

All of those problems go away if the system is libglvnd-enabled. In
that case, the nVidia proprietary drivers can use direct rendering with
Xvnc. libglvnd communicates with the GLX extension, which (in the case
of Xvnc) reports back that it only supports Mesa, and thus libglvnd will
marshal the OpenGL calls from the application to the Mesa libGL
implementation instead of nVidia's libGL implementation. Indirect
OpenGL is only required if there is a mismatch between client (nVidia)
and server (Mesa) OpenGL implementations.

Jagga Soorma

unread,
Apr 1, 2018, 1:02:37 AM4/1/18
to TigerVNC User Discussion/Support
Thanks DRC.  Really appreciate your detailed response.  Unfortunately, this is a critical system and I won't be able to upgrade the OS.  I am trying to take the least disruptive approach and just build mesa in a non standard directory, however can't seem to successfully configure it:

--
# ./configure --prefix=/var/tmp/mesa
..snip..
checking for DRIGL... yes
configure: error: libudev-dev or sysfs required for building DRI
--

I do have libudev installed on this machine:

--
# cat /etc/redhat-release
CentOS release 6.9 (Final)

# rpm -qa | grep -i libudev
libudev-147-2.73.el6_8.2.x86_64
libudev-devel-147-2.73.el6_8.2.x86_64
--

Do you know if there is some other package that I need installed?

Thanks,
-J

Jagga Soorma

unread,
Apr 1, 2018, 1:34:00 AM4/1/18
to TigerVNC User Discussion/Support
Also, looks like I am not using the version of xorg that you mentioned, so does that even apply in my case:

--
# rpm -qa | grep -i xorg | grep -i ser
xorg-x11-server-Xorg-1.17.4-16.el6.centos.x86_64
xorg-x11-server-utils-7.7-14.el6.x86_64
xorg-x11-server-common-1.17.4-16.el6.centos.x86_64
--

Thanks,
-J
Reply all
Reply to author
Forward
0 new messages