nouveau (software)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Initial release 1.0 / 18 June 2012; 21 months ago (2012-06-18)[1]
Stable release 1.0.10 / 7 November 2013; 5 months ago (2013-11-07)[2]
Development status Active
Operating system GNU/Linux, FreeBSD
Platform x86
Type Device driver and firmware
License MIT License
Everything is executed on the CPU. Everything? Not quite... some data is sent to the GPU, along with GPU instruction to be executed on the GPU. The rendered results are not sent back, are stored in a framebuffer. The content of a framebuffer is sent to the display controller.

nouveau (/nˈv/) is a free and open-source graphics device driver for Nvidia video cards written by independent software engineers. Nouveau is written conforming to the Gallium3D API and works on top of the Direct Rendering Infrastructure (DRI).

Nouveau intends to support all Nvidia microarchitectures: Tesla, Fermi, Kepler, Maxwell and probably the to be released Pascal.

The project's goal is to create an open source driver by reverse engineering Nvidia's proprietary Linux drivers. Managed by the X.Org Foundation hosted by is distributed as part of Mesa 3D, the project was initially based on the 2D-only free and open-source "nv" driver, which Red Hat developer Matthew Garrett and others claim had been obfuscated.[3] nouveau is licensed under the MIT License.

The name of the project comes from the French word nouveau, meaning new.[4] It was suggested by the original author's IRC client's French autoreplace feature, which suggested the word "nouveau" when he typed "nv".[5]


Mesa /DRI and Gallium3D have different driver models. Both share a lot of free and open-source code

Nouveau originally used the Direct Rendering Infrastructure (DRI) of Mesa 3D for rendering 3D computer graphics, which allows to accelerate 3D drawing using the graphics processing unit (GPU) directly from the 3D application; but in February 2008 the work on DRI support ceased and moved on to the new Gallium3D.[6][7]

On 23 September 2013[8] Nvidia publicly announced, that they would release some documentation about their GPUs with the intent to address areas that impact the out-of-the-box usability of NVIDIA GPUs with Nouveau.


Illustration of the Linux graphics stack
An possible example matrix when implementing the Gallium3D driver model. Through the introduction of the Gallium3D Tracker Interface and the Gallium3D WinSys Interface, only 18 instead of 36 modules are required. Each WinSys module can work with each Gallium3D device driver module and with each State Tracker module.

The nouveau driver has been used as the default open-source driver for Nvidia cards in the Fedora 11[9] and openSUSE 11.3[10] distributions of GNU/Linux. It is included in the repository of Ubuntu 9.04[11] and made default in Ubuntu 10.04.[12] It is also included in Debian.[13] The drivers included in these operating systems, however, do not allow hardware acceleration of 3D operations.

On 10 December 2009 nouveau was accepted in the 2.6.33 version of Linux kernel as a staging driver.[14]

Fedora 13 (May 2010) allows installing the mesa-dri-drivers-experimental package, which activates experimental hardware acceleration for 3d graphics, which was not activated without this package.

3D acceleration has been included in the libgl1-mesa-dri-experimental package since Ubuntu 10.10.

Compiz recommends nouveau over the Nvidia proprietary driver.[15]

On 26 March 2012, the nouveau driver was marked as stable and promoted from the staging area of the Linux kernel.[16]


A screenshot of REnouveau in action (REnouveau is the blue window in the top left corner)

The project uses several custom-made programs for its reverse engineering, such as MmioTrace (Memory Mapped I/O Trace),[17] REnouveau and Valgrind MMT.[18] See Valgrind.


REnouveau (Reverse Engineering for nouveau)[19] is a program licensed under the GNU GPL (using SDL) that collects data for most of nouveau's reverse engineering work. Users with the proprietary NVIDIA drivers can help the development of nouveau by providing information about the hardware of their NVIDIA cards through REnouveau. REnouveau works by copying the current graphics card MMIO register space, drawing some graphics and taking another copy of the MMIO, and outputting the difference to a text file. It runs about six dozen different tests which the user of the computer then makes a tar.bz2 archive of and submits by e-mail, after which it is automatically transferred to the project's FTP servers for the developers to analyze.

See also[edit]


  1. ^ von Eitzen, Chris (18 June 2012). "Free NVIDIA graphics driver reaches version 1.0". The H - Open. Heinz Heise. Retrieved 13 June 2013. 
  2. ^ Airlie, Dave (7 November 2013). "xf86-video-nouveau 1.0.10". nouveau mailing list. Retrieved 14 April 2014.
  3. ^ "Debian bug tracker". 17 August 2006. Retrieved 7 April 2013. 
  4. ^ "nouveau Wiki". 7 July 2009. Retrieved 23 September 2009. 
  5. ^ "The state of Nouveau, part I". 15 February 2008. Retrieved 24 November 2009. 
  6. ^ "The state of Nouveau, part 2". 26 February 2008. Retrieved 7 March 2008. 
  7. ^ "Nouveau Companion 36 - The irregular Nouveau-Development companion". 7 March 2008. Retrieved 7 March 2008. 
  8. ^ "Nvidia offers to release public documentation on certain aspects of their GPUs". 2013-09-23. Retrieved 2013-09-24. 
  9. ^ Michael Larabel (29 March 2009). "Testing Out The Nouveau Driver On Fedora 11". Phoronix. 
  10. ^ "Product highlights for openSUSE 11.3 version". openSUSE. Retrieved 29 December 2010. 
  11. ^ Michael Larabel (9 December 2010). "Ubuntu 9.04 To Get Nouveau Driver". Phoronix. 
  12. ^ "Bug #454821: Bugs: "xserver-xorg-video-nv" package: Ubuntu". Retrieved 24 February 2010. 
  13. ^ Debian (11 February 2011). "Nouveau nVidia drivers now available in Debian experimental". 
  14. ^ "Nouveau To Go Into Linux 2.6.33 Kernel!". Phoronix. 11 December 2009. 
  15. ^ Sam Spilsbury, head maintainer of Compiz (21 May 2010). "Beware the benchmarks.". "Our recommendation: Use nouveau." 
  16. ^ Jonathan Corbet (23 March 2012). "The Nouveau driver graduates from staging". 
  17. ^ "MmioTrace (Memory Mapped I/O Trace)". nouveau Wiki. 
  18. ^ "Valgrind-mmt". nouveau Wiki. 
  19. ^ "REnouveau (Reverse Engineering for nouveau)". nouveau Wiki.