OpenSolaris

Printable Version Enter a New Search
Bug ID 6822628
Synopsis constype returns unexpected value for nvidia card, ogl-select picks generic GLX extension in snv_111
State 10-Fix Delivered:Verified (Fix available in build)
Category:Subcategory xserver:programs
Keywords
Responsible Engineer Alan Coopersmith
Reported Against snv_111
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_111a
Fixed In snv_111a
Release Fixed solaris_nevada(snv_111a)
Related Bugs 6815700 , 6822917 , 6827560
Submit Date 26-March-2009
Last Update Date 10-April-2009
Description
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.
Comments
N/A