Thursday, May 15, 2008

Fedora 9 and Nouveau Nvidia Driver

Given that the current nvidia driver does not support all the fancy features which are required to run a fully productive desktop, i've tried to see the current state of the nouveau

Fedora 9 currently does not ship the 'nouvea_dri.so' with its mesa rpms. In order to get the feel of the dri using nouveau, i've compiled the mesa drivers from sources.


Instructions follows

NOTE: Do not report any issues to Fedora Bugzilla or Nouveau Bugzilla when using the Gallium Drivers. These are completely experimental.

NOTE: Since the gallium 3d does not support all the Visuals (ARGBGLX) required to run compiz, compiz does not work.

0. Below are my Hardware Details

Smolt profile :: http://www.smolts.org/client/show/pub_af62c229-68e1-4b66-9171-b8be36c7a3fd



[nareshv@fallenAngel mesa]$ /sbin/lspci | grep -i nvidia
01:00.0 VGA compatible controller: nVidia Corporation G72M [GeForce Go 7400] (rev a1)



1. Get the mesa sources (50M sources) using git


cd /tmp
git clone git://anongit.freedesktop.org/git/nouveau/mesa



2. Switch to the gallium-0.1 branch



cd mesa/
git checkout origin/gallium-0.1
git checkout -b gallium-0.1



3. Configure the Library installation paths. (open and edit the file so that below 2 settings should be like this)


[nareshv@fallenAngel configs]$ pwd
/tmp/mesa/configs
[nareshv@fallenAngel configs]$ grep INSTALL_DIR default | grep -v SEARCH
INSTALL_DIR = /usr/
DRI_DRIVER_INSTALL_DIR = /usr/lib/dri/


4. Make sure you have all the Xorg development libraries installed.


[root@fallenAngel ~]# rpm -qa lib\*-devel
libacl-devel-2.2.47-1.fc9.i386
libXfixes-devel-4.0.3-3.fc9.i386
libSM-devel-1.0.2-5.fc9.i386
libattr-devel-2.4.41-1.fc9.i386
libogg-devel-1.1.3-9.fc9.i386
libuser-devel-0.56.9-1.i386
libXau-devel-1.0.3-5.fc9.i386
libXmu-devel-1.0.4-1.fc9.i386
libcap-devel-2.06-4.fc9.i386
libxml2-devel-2.6.32-1.fc9.i386
libxcb-devel-1.1-4.fc9.i386
libX11-devel-1.1.4-1.fc9.i386
libdrm-devel-2.4.0-0.11.fc9.i386
libXt-devel-1.0.4-5.fc9.i386
libsepol-devel-2.0.26-1.fc9.i386
libgdiplus-devel-1.9-4.fc9.i386
libcurl-devel-7.18.1-1.fc9.i386
libXdmcp-devel-1.0.2-5.fc9.i386
libXdamage-devel-1.1.1-4.fc9.i386
libXxf86vm-devel-1.0.1-5.fc9.i386
libselinux-devel-2.0.61-1.fc9.i386
libXext-devel-1.0.4-1.fc9.i386
libXi-devel-1.1.3-4.fc9.i386
libstdc++-devel-4.3.0-8.i386
libidn-devel-0.6.14-7.i386
libvorbis-devel-1.2.0-3.fc9.i386
libICE-devel-1.0.4-3.fc9.i386


5. Start building mesa for your OS (i386 or x86_64)


[nareshv@fallenAngel mesa]$ ls
bin configs doxygen Makefile SConstruct winddk.py
common.py docs include progs src
[nareshv@fallenAngel mesa]$ make DRI_DIRS=nouveau linux-dri-x86

(replace linux-dri-x86 with linux-dri-x86_64 if you are on 64bit Fedora)



8. Try running glxgears with the latest drivers that are built


bash$ LD_LIBRARY_PATH="/tmp/mesa/lib" LIBGL_DRIVERS_PATH="/tmp/mesa/lib" glxgears



9. Verify that the screen has direct rendering enabled


[nareshv@fallenAngel tmp]$ LD_LIBRARY_PATH="/tmp/mesa/lib" LIBGL_DRIVERS_PATH="/tmp/mesa/lib" glxinfo 2>/dev/null | grep ^OpenGL
OpenGL vendor string: Tungsten Graphics, Inc. and nouveau
OpenGL renderer string: Gallium 0.1, NV46 on Nouveau/DRI
OpenGL version string: 1.5 Mesa 7.1
OpenGL extensions:


9. Screenshot with Gallium3d on my desktop ( I am getting from 900fps to 1200fps !, while the nouveau driver without this gallium gives only 250fps [same with nv driver])




10. I dont have any games to test the FPS, but you can try running openarena and see things working


NOTE: Remember, this gallium 3d is completely experimental and may not work with all the nvidia chipsets and might even crash your X when running heavy 3d applications. DONT REPORT ANY ISSUES WITH NOUVEAU TEAM WHEN USING GALLIUM

2 comments:

  1. I saw ur blog.. I liked it very much. I have few questions ... I recently bought HP Pavilion 9500t laptop. I want to install any linux version on it.. Would recommend me which version have most of the driver available for this laptop?

    ReplyDelete
  2. I have the same video card and when i try to compiled i got:


    ../../../../../src/mesa/drivers/dri/common/xmlconfig.c:940: error: ‘struct OptConfData’ has no member named ‘ignoringApp’
    ../../../../../src/mesa/drivers/dri/common/xmlconfig.c:941: error: ‘struct OptConfData’ has no member named ‘inDriConf’
    ../../../../../src/mesa/drivers/dri/common/xmlconfig.c:942: error: ‘struct OptConfData’ has no member named ‘inDevice’
    ../../../../../src/mesa/drivers/dri/common/xmlconfig.c:943: error: ‘struct OptConfData’ has no member named ‘inApp’
    ../../../../../src/mesa/drivers/dri/common/xmlconfig.c:944: error: ‘struct OptConfData’ has no member named ‘inOption’
    ../../../../../src/mesa/drivers/dri/common/xmlconfig.c:946: warning: implicit declaration of function ‘parseOneConfigFile’
    make[5]: *** [../../../../../src/mesa/drivers/dri/common/xmlconfig.o] Error 1
    make[5]: Leaving directory `/tmp/mesa/src/gallium/winsys/dri/nouveau'
    make[4]: *** [subdirs] Error 1
    make[4]: Leaving directory `/tmp/mesa/src/gallium/winsys/dri'
    make[3]: *** [subdirs] Error 1
    make[3]: Leaving directory `/tmp/mesa/src/gallium/winsys'
    make[2]: *** [subdirs] Error 1
    make[2]: Leaving directory `/tmp/mesa/src'
    make[1]: *** [default] Error 1
    make[1]: Leaving directory `/tmp/mesa'



    Do you know what is wrong?
    Salu2...

    ReplyDelete