Nouveau on Gentoo

For some time already, Gentoo has provided packages for the open source nouveau driver for NVidia graphics chipsets. Some users have discovered this and attempted to install nouveau, running into a few problems, most commonly experiencing the API break before libdrm 2.4.18 and after kernel 2.6.33.

Should I run nouveau or not?

Nouveau works strictly better than xf86-video-nv and has the following philosophical and technical advantages over the proprietary driver:
  • Open source.
  • Can always build with the latest kernel and xorg-server code from git.
  • Supports all Riva TNT, GeForce and integrated chipsets, except for the GTX 400 series.
  • Kernel Modesetting for framebuffer console at native display resolution and flicker-free vt switch.
  • XRandR 1.2 support for dynamic output configuration.

Nouveau does however not yet support some features of the proprietary driver. So if you depend on those, you will have to stay with the blob for now:
  • No power management support.
  • No video decode acceleration.
  • Limited multi-card support (all non-primary cards must be NV50/G80 or later generation, no SLI)
  • TV-out only works on NV40 and older.
  • 3D acceleration is experimental and not recommended for the timid.
Check the nouveau Feature Matrix for more details.

    Installing nouveau on Gentoo

    If you have decided that you want to try nouveau, the best way to proceed depends on whether you run a (mostly) stable system, an unstable (~arch) system or whether you always live on the bleeding edge of development.

    Before you begin, ensure that eselect opengl is set to x11 and you are not loading the proprietary nvidia kernel module.

    Stable users: You can run nouveau on an otherwise stable system with the following packages from ~arch:
    • Kernel 2.6.33 (set DRM_NOUVEAU=m or =y)
    • x11-drivers/xf86-video-nouveau (latest version)
    • x11-drivers/nouveau-firmware (only needed for NV50 generation cards)
    However the drm in kernel 2.6.33 is a bit old and will not support the integrated 8200/8300/9300/9400/ION chipsets.

    ~arch users and stable users who want newer nouveau: You cannot use the nouveau drm in kernel 2.6.33 with the unstable version of x11-libs/libdrm due to the aforementioned API break. So you need the following packages:
    • x11-base/nouveau-drm (latest version), see here if it complains about missing kernel options which you cannot find in menuconfig
    • x11-drivers/xf86-video-nouveau (latest version)
    • >=x11-libs/libdrm-2.4.18
    Bleeding edge users, or users who want 3D acceleration: You should run the latest kernel and mesa code for best results:
    • Nouveau from Kernel 2.6.34_rc4 or newer, or x11-base/nouveau-drm-9999 from the x11 overlay (needs 2.6.34_rc2 at least)
    • x11-drivers/xf86-video-nouveau (latest version)
    • >=x11-libs/libdrm-2.4.20
    • =media-libs/mesa-9999 from the x11 overlay, built with USE="gallium" and VIDEO_CARDS="nouveau" (only if you want the experimental 3D acceleration for which nouveau developers provide no end user support).
    Stop by in #gentoo-desktop on freenode or post in the forums if you have any questions.


      Anonymous said...

      I know it's supposed to be "not for the timid", but I'm running Compiz on Nouveau on a mobile 8400GS, and everything works fine, transparent cube and all. There's a few barely-noticeable artifacts, but it actually seems (a bit) snappier than the proprietary driver.

      Now, I didn't try Quake3 of course :)

      drkatz said...

      I used the git kernel (2.6.34.rc4) off the nouveau site, built xorg 1.8.1, and emerged enlightenment and the e_bling module. Enlightenments compositing works very well in software and hardware renderer. Software is a *bit* faster.
      Thanks for the guide, and the comment. Got me brave enough to check it out.

      Anonymous said...

      I tried nouveau last week and got about 4000 F.P.S. with glxgears. OpenGL screensaver's worked fine (at least the ones that I tested did), and Half Life 2 even started in Wine and Steam, though it was completely unplayable because the 3D graphics were practically nonexistent.