Saturday, September 18, 2010

NVidia GLX extensions

Recently, I started having issues with my video rendering: some screensavers were not working anymore and some games were just ... slow.

The basic troubleshooting gave its verdict: the GLX extensions were not taken into account by the NVIDIA (I have a GeForce 9000) driver. Why? Because the loaded extension was the one from the Xorg foundation rather than the one supplied by NVidia, as shown in the relevant Xorg.X.log where the vendor attribute associated with the glx module was "X.Org Foundation". This shows in the Xorg.X.log as an entry prefixed with "NVIDIA(0)" stating that the glx module isn't from NVidia.


The file in question, "/usr/lib64/xorg/modules/extensions/libglx.so", is provided by the package "xserver-xorg-core", where NVidia glx module is called libglx.so.XXX.YY, in my case libglx.so.256.44.

To solve this, as root:

service gdm stop
cd /usr/lib64/xorg/modules/extensions
mv libglx.so libglx.so.old
ln -s libglx.so.256.44 libglx.so
service gdm start

And voila, upon restart, the vendor now shows as "NVIDIA Corporation", and all opengl-aware applications are happy again!