The name of the project comes from the French word nouveau, meaning new.[3] It was suggested by the original author, Stรฉphane Marchesin, after his IRC client's French-languageautocorrect system offered the word "nouveau" as a correction for the letters "nv".[4]
nouveau intends to support all Nvidia microarchitectures: Tesla, Fermi, Kepler, Maxwell, in Version 1.0.13 support of Pascal and in Version 1.0.15 support of Volta. Version 1.0.16 adds support for Turing.
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.[5] In June 2014, a breakthrough was finally achieved and initial re-clocking support was added to nouveau.[6][7][8] With Version 1.0.14 Pascal support is at the level of Maxwell 2.[9] With version 1.0.15 there is a patch for GTX 970 with 4GB and accelerations of Pascal to Maxwell 2 Level.
Tools
Unlike AMD, Nvidia provides no documentation 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.
Currently REnouveau has been mostly superseded by Valgrind-MMT.[citation needed]
Supported interfaces
Only the kernel has direct access to the hardware, including 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;[citation needed] 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 drivers and 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.
Vulkan
As of December 2023[update], Nouveau has some Vulkan API support through the experimental NVK driver.[13]
Video acceleration
Mesa 3D supports multiple interfaces, all designed to give user-space programs, such as e.g. GStreamer or HandBrake, access to the correspondent SIP blocks. 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.[14]
With the project Coriander, conversion of CUDA Code in OpenCL 1.2 is possible.[16]
GPU System processor
Nvidia FALCON
Around the year 2006 Nvidia introduced FALCON (FAst Logic CONtroller) to their GPUs.
NV-RISCV
At the 4th RISC-V Workshop in July 2016 Nvidia employees introduced their plans to replace FALCON with a new proprietary custom design based on the RISC-V instruction set.[17]
History
nouveau was started in 2005 by Stรฉphane Marchesin as a series of patches upon the "nv" driver,[18] and officially announced in February 2006 at a FOSDEM event.[19] The first live demo of nouveau was at Linux.conf.au 2007.[19] In 2010 nouveau was accepted in the 2.6.33 version of Linux kernel as an experimental driver.[18][20] On 26 March 2012, the nouveau driver was marked as stable and promoted from the staging area of Linux 3.4.[21][22] nouveau gained a major internal architecture overhaul in Linux 3.7.[22]
On 23 September 2013,[25] 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.[26]
As of 9 July 2016, Red Hat employee Ben Skeggs committed a patch which adds support for the Pascal-based GP104 chip found on GeForce GTX 1070 and GeForce GTX 1080-branded graphics cards to the Linux kernel.[27]
Status of 2016 and Future work were introduced in XDC2016.[28] Status of new efforts in OpenCL are shown on FOSDEM.[29]
In 2019 Nvidia made some documentation about their Kepler, Maxwell, Pascal and Volta chipsets available.[30][31] In 2024, lead engineer Ben Skeggs is hired by Nvidia, to continue working on the opensouce driver.[32]