During SST testing of snv_111(RE) I've encountered an issue with X server
not loading proper GLX extensions on an Ultra 24 machine with NVS 290 card.
The machine was upgraded via Live Upgrade from snv_110(RE) where no such
issues were seen, it seems like a regression in snv_111(RE).
From Xorg.0.log:
(EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
(EE) NVIDIA(0): log file that the GLX module has been loaded in your X
(EE) NVIDIA(0): server, and that the module is the NVIDIA GLX module. If
(EE) NVIDIA(0): you continue to encounter problems, Please try
(EE) NVIDIA(0): reinstalling the NVIDIA driver.
The SMF service svc:/application/opengl/ogl-select:default seems to pick wrong
type of GLX extension, it points to the generic Mesa library:
> ls -l /var/run/opengl/server/libglx.so
lrwxrwxrwx 1 root root 46 Mar 26 14:57 /var/run/opengl/server/libglx.so -> /usr/X11/lib/modules/extensions/mesa/libglx.so*
After inspecting the method script, it's clear that it's expecting different
value being returned by /usr/X/bin/constype:
+ /usr/X/bin/constype
+ DRIVER=NVDA
+ REGISTRY=/tmp/ogl_select9280
+ [ -e /tmp/ogl_select9280 ]
+ touch /tmp/ogl_select9280
+ [ -x /lib/opengl/ogl_select/mesa_vendor_select ]
+ /lib/opengl/ogl_select/mesa_vendor_select identify
+ 1>> /tmp/ogl_select9280
+ [ -x /lib/opengl/ogl_select/nvidia_vendor_select ]
+ /lib/opengl/ogl_select/nvidia_vendor_select identify
+ 1>> /tmp/ogl_select9280
+ [ -f /tmp/ogl_select9280 ]
+ readregistry
+ 0< /tmp/ogl_select9280
+ read DRIVERTMP VENDORTMP
+ [ SUNWtext = NVDA -a mesa != ]
+ read DRIVERTMP VENDORTMP
+ [ NVDAnvda = NVDA -a nvidia != ]
+ read DRIVERTMP VENDORTMP
+ getprop options/vendor
+ PROPVAL=
+ svcprop -q -p options/vendor application/opengl/ogl-select
+ [ 0 -eq 0 ]
+ svcprop -p options/vendor application/opengl/ogl-select
+ PROPVAL=notset
+ [ notset == "" ]
+ return
+ [ notset != -a notset != notset ]
+ /usr/bin/tr [A-Z] [a-z]
+ echo MESA
+ VENDOR=mesa
+ SELECT_SCRIPT=/lib/opengl/ogl_select/mesa_vendor_select
+ [ ! -x /lib/opengl/ogl_select/mesa_vendor_select ]
+ /lib/opengl/ogl_select/mesa_vendor_select
It expects "NVDAnvda", but "NVDA" is returned instead.
Full Xorg.0.log and xorg.conf are attached.
Work Around
Override the vendor string:
# svccfg -s application/opengl/ogl-select setprop options/vendor = nvidia
You also need to :
$ svcadm restart application/opengl/ogl-select
Then restart your X Server, compiz should function correctly.