nouveau (software)
Initial release | 1.0 / 18 June 2012[1] |
---|---|
Stable release | 1.0.12 / 8 December 2015[2] |
Development status | Active |
Written in | C |
Operating system | Linux, BSDs |
Platform | x86, x86-64, ARM |
Type | Device driver and firmware |
License | MIT License |
Website |
nouveau |
nouveau (/nuːˈvoʊ/) is a free and open-source graphics device driver for Nvidia video cards and the Tegra family of SoCs written by independent software engineers, with minor help from Nvidia employees.
The project's goal is to create an open source driver by reverse engineering Nvidia's proprietary Linux drivers. It is managed by the X.Org Foundation, hosted by freedesktop.org, and 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]
Software architecture
Nouveau is a Gallium3D-style device driver and works on top of the Direct Rendering Infrastructure (DRI). It is composed of the two Kernel-components DRM & KMS driver, and the user-space components libDRM, and Mesa 3D.
Nouveau intends to support all Nvidia microarchitectures: Tesla, Fermi, Kepler, Maxwell and probably the to-be-released Pascal and Volta.
Re-clocking
For technical reasons Nvidia GPUs all boot with a low frequency (called "clock"), the device driver has to set a higher frequency after booting. Due to lack of documentation of GPU, nouveau lacked this capability from the beginning on. The result was/is a major loss in performance, as proven by benchmarks which compared the performance of Nvidia proprietary device driver with nouveau's.[6] In June 2014 a breakthrough was finally achieved, and initial re-clocking support was added to nouveau.[7][8][9]
Tools
In a very sharp contrast to AMD, Nvidia has provided no documentation whatsoever about their GPUs. The developers of nouveau have been forced to use clean-room reverse engineering to obtain the necessary data to enable them to write nouveau. The project uses several custom-made programs for its reverse engineering, such as MmioTrace (Memory Mapped I/O Trace),[10] REnouveau and Valgrind MMT.[11]
REnouveau
REnouveau (Reverse Engineering for nouveau)[12] 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.
Supported interfaces
Only the kernel has direct access to the hardware, this includes the graphics card. End-user software accesses it through various interfaces, that are specific to the task. Nouveau is being written as a Gallium3D-type of device driver, which means that it shares large amounts of code with other Gallium3D drivers. Most of this shared core is being mainlined in Mesa 3D and then distributed as such by the various Linux distributions.
Rendering APIs
Mesa 3D and the drivers it includes, supports multiple rendering interfaces, all designed to give user-space programs, such as e.g. video games or CAD software, access to the correspondent SIP blocks.
Direct3D
A free and open-source implementation of Direct3D version 9 has been mainlined into Mesa 3D. It can be used with nouveau; however, since any software that is using Direct3D is programmed for Windows this software can only be used together with Wine on Linux.
OpenGL
The rendering interface OpenGL is being developed by the Khronos Group. Implementations of this API are part of Nvidia's or AMD's proprietary "Catalyst". Another implementation is being written by free software enthusiasts, such as Brian Paul or Intel and coordinated in Mesa 3D. Being a Gallium3D-type of driver, Nouveau needs only minor adaptations to work with this implementation.
Video acceleration
Mesa 3D supports multiple interfaces, all designed the give user-space programs, such as e.g. GStreamer or HandBrake, access to the correspondent SIP blocks. And it is also possible to use the IC designed for rendering calculations for this purpose, though this approach consumes much more electrical power, compared to utilizing the PureVideo SIP block.
Nouveau supports PureVideo and provides access to it through VDPAU and partly through XvMC.[13]
Nouveau does not support Nvidia NVENC.
Computing APIs
OpenCL
CUDA
Nouveau does not support CUDA.
History
Nouveau was started in 2005 by Stephane Marchesin as a series of patches upon the "nv" driver,[14] and officially announced in February 2006 at FOSDEM event.[15] The first live demo of nouveau was at Linux.conf.au 2007.[15] In 2010 nouveau was accepted in the 2.6.33 version of Linux kernel as an experimental driver[14][16] On 26 March 2012, the nouveau driver was marked as stable and promoted from the staging area of Linux 3.4.[17][18] Nouveau gained a major internal architecture overhaul in Linux 3.7.[18]
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.[19][20]
On 23 September 2013[21] 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.
As of 31 January 2014, Nvidia's Alexandre Courbot committed an extensive patch set which add initial support for the GK20A (Tegra K1) to nouveau.[22]
Adoption
The nouveau driver has been used as the default open-source driver for Nvidia cards in the Fedora 11.[23] and openSUSE 11.3[24] distributions of GNU/Linux. It is included in the repository of Ubuntu 9.04[25] and made default in Ubuntu 10.04.[26] It is also included in Debian.[27] The drivers included in these operating systems, however, do not allow hardware acceleration of 3D operations.
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.[28]
In June 2014, Codethink reported to run Wayland-based Weston compositor with Linux kernel 3.15, making use of EGL and a "100% open-source graphics driver stack" on a Tegra K1.[29]
Benchmarks
In comparison, benchmarks, nouveau has not been able to keep up with Nvidia's proprietary graphics device drivers.[30]
See also
- Free and open-source graphics device driver
- Comparison of Nvidia graphics processing units
- Fastra II
- VESA BIOS Extensions
References
- ↑ von Eitzen, Chris (18 June 2012). "Free NVIDIA graphics driver reaches version 1.0". The H - Open. Heinz Heise. Retrieved 13 June 2013.
- ↑ Airlie, Dave (8 December 2015). "xf86-video-nouveau 1.0.12". nouveau (Mailing list).
- ↑ "Debian bug tracker". 17 August 2006. Retrieved 7 April 2013.
- ↑ "nouveau Wiki". 7 July 2009. Retrieved 23 September 2009.
- ↑ "The state of Nouveau, part I". LWN.net. 15 February 2008. Retrieved 24 November 2009.
- ↑ "Nouveau vs. NVIDIA proprietary Linux vs. NVIDIA Windows 8.1". Phoronix. 2013-10-31.
- ↑ "Nouveau Re-Clocking Details Discussed Further". Phoronix. 2014-05-17.
- ↑ "Nouveau Re-Clocking Is Way Faster". Phoronix. 2014-06-20.
- ↑ "Nouveau PowerManagement documentation". freedesktop.org.
- ↑ "MmioTrace (Memory Mapped I/O Trace)". nouveau Wiki.
- ↑ "Valgrind-mmt". nouveau Wiki.
- ↑ "REnouveau (Reverse Engineering for nouveau)". nouveau Wiki.
- ↑ "Nouveau Video Acceleration". freedesktop.org.
- 1 2 Peres, Martin; Stach, Lucas. "Nouveau Recap, on-going and future work" (PDF). Retrieved 1 September 2014.
- 1 2 "The state of Nouveau, part I". LWN.net. Retrieved 1 September 2014.
- ↑ "Nouveau To Go Into Linux 2.6.33 Kernel!". Phoronix. 11 December 2009.
- ↑ Jonathan Corbet (23 March 2012). "The Nouveau driver graduates from staging". LWN.net.
- 1 2 Peres, Martin. "Nouveau XDC 2013 slides" (PDF). X.Org. Retrieved 1 September 2014.
- ↑ "The state of Nouveau, part 2". LWN.net. 26 February 2008. Retrieved 7 March 2008.
- ↑ "Nouveau Companion 36 - The irregular Nouveau-Development companion". 7 March 2008. Retrieved 7 March 2008.
- ↑ "Nvidia offers to release public documentation on certain aspects of their GPUs". 2013-09-23. Retrieved 2013-09-24.
- ↑ "drm/nouveau: initial support for GK20A (Tegra K1)". 2014-01-31.
- ↑ Michael Larabel (29 March 2009). "Testing Out The Nouveau Driver On Fedora 11". Phoronix.
- ↑ "Product highlights for openSUSE 11.3 version". openSUSE. Retrieved 29 December 2010.
- ↑ Michael Larabel (9 December 2010). "Ubuntu 9.04 To Get Nouveau Driver". Phoronix.
- ↑ "Bug #454821: Bugs: "xserver-xorg-video-nv" package: Ubuntu". Retrieved 24 February 2010.
- ↑ Debian (11 February 2011). "Nouveau nVidia drivers now available in Debian experimental".
- ↑ Sam Spilsbury, head maintainer of Compiz (21 May 2010). "Beware the benchmarks.".
Our recommendation: Use nouveau.
- ↑ "Codethink Gets The NVIDIA Jetson TK1 Running With Linux 3.15, Wayland". Phoronix. 2014-06-12.
- ↑ "Benchmarking Nouveau and Nvidia's proprietary GeForce driver on Linux". Phoronix. 2014-07-28.
|