Color Correction and Compiz Using Open Source Noveau Drivers

Posted on December 21, 2010

For work I was given a shiny Macbook Pro to replace my aging white Macbook. The white Macbook, despite its age, had an Intel video card. This meant that Ubuntu's drivers worked swimmingly with Compiz and all the compositing goodness we've come to expect from modern OSes. It also supported external monitors swimmingly. Now, I do graphic design work, so it's important that all my monitors support color correction. This is where I had issues with the new laptop:

The Macbook Pro came with an Nvidia graphics card, which, while much faster than the Intel card from the Macbook, has some quirky proprietary drivers when it comes to external monitor support. In short I was given the choice between 'Twin View', one big extended monitor with one color profile, and separate X screens entirely but with separate color profiles. Suck.

I started to wonder whether there was a non-proprietary solution to this problem since the open Intel drivers worked so damn well. Enter Nouveau. The Nouveau project is simply open-source driver support for Nvidia chipsets. Yes, their freedesktop page sucks pretty hard. Don't worry, though! Ubuntu Maverick includes the driver in the repository. Here's how to get it to work:

    sudo apt-get install xserver-xorg-video-nouveau libgl1-mesa-dri-experimental nouveau-firmware
    sudo apt-get remove nvidia-current (or whatever proprietary package you happen to have installed at the time)

The xserver driver is just that - a driver for X. The libgl1 bit includes up-to-date modules for extending the driver with 3D capabilities. It's still experimental but has recently become substantially more stable. And finally the nouveau-firmware package provides both 3D and 2D acceleration for the Nvidia chipsets. With that the Nouveau driver is pretty slow.

We thoroughly remove the proprietary drivers because their GLX modules conflict with the open-source modules.

Finally we configure X with a /etc/X11/xorg.conf stanza such as:

    Section "Module"
        Load    "glx"
    EndSection

    Section "Device"
        Identifier "nvidia"
        Driver "nouveau"
    EndSection

With this combination of technoligies I was able to get Compiz running quite fast enough and, thus far (knock on wood), no stability issues.

Rather than using the bullshit nvidia-settings tool that comes with the proprietary drivers to configure the external displays I can use the quite satisfactory Ubuntu tools: gcm-prefs (the color profile manager) and gnome-display-properties. Sweet.

comments powered by Disqus