中間：自由與開放原始碼堆疊。右方：專有驅動程式。
**nouveau** (/nuːˈvoʊ/) 是一個自由及開放原始碼顯示卡驅動程式（英语：），是為Nvidia的显示卡所編寫，也可用於屬於系统芯片的NVIDIA Tegra系列，此驅動程式是由一群獨立的軟體工程師所編寫，Nvidia的員工也提供了少许幫助。

該專案的目標為利用逆向工程Nvidia的專有Linux驅動程式來創造一個開放原始碼的驅動程式。由讓freedesktop.org託管的X.Org基金会所管理，並以Mesa 3D的一部份進行散布，該專案最初是基於只有2D繪圖能力的「nv」自由與開放原始碼驅動程式所開發的，但紅帽公司的開發者Matthew Garrett及其他人表示原先的程式碼被混淆處理過了。nouveau以MIT許可證授權。

專案的名稱是從法文的「nouveau」而來，意思是「新的」。這個名字是由原作者的的IRC客戶端的自動取代功能所建議的，當他鍵入「nv」時就被建議改為「nouveau」。

軟體架構
----

Nouveau已經以Gallium3D風格顯示卡驅動程式的方式重寫了。
Nouveau是一個Gallium3D風格的驅動程式，並以DRI的方式運作。它結合了兩個内核元件：直接呈現管理員及KMS驅動程式，以及使用者空間元件的libDRM及Mesa 3D。

Nouveau計畫支援所有的Nvidia微架構： Tesla、Fermi、Kepler、Maxwell及即將釋出的Pascal和Volta。

### 調整頻率

由於技術原因，Nvidia的顯示卡都會以一個較低的頻率（稱為「時脈」）啟動，在啟動後，驅動程式就會設定一個較高的頻率。因為缺乏顯示卡的相關文件，nouveau最初並不具備這個功能，這導致了效能的顯著損失。在2014年6月終於找到解決的方法，調整頻率功能的支援終於被加入到nouveau中。

### 工具

動作中的REnouveau的截圖（REnouveau是左上角的藍色視窗）
與AMD形成強烈的對比，Nvidia並沒有提供任何關於顯示卡的文件。 nouveau的開發者被迫使用淨室逆向工程以獲得讓他們可以編寫nouveau的資料。該專案使用多種自訂的程式以協助其逆向工程，像是MmioTrace（記憶體映射I/O追蹤），REnouveau及Valgrind MMT。參見Valgrind。

#### REnouveau

REnouveau （nouveau逆向工程）是一個以GNU通用公共许可证授權（使用SDL）的收集大多數nouveau逆向工程資料的程式。NVIDIA專有驅動程式的使用者可以透過REnouveau提供他們的NVIDIA顯示卡的硬體資訊的方式來協助nouveau的開發。REnouveau以複製目前顯示卡MMIO標示空間的方式運作，然後繪製一些圖形並取得另一份MMIO的複製品，並輸出差異部份到一個文字檔中。它執行了大約六打不同的測試，並壓縮成tar.bz2壓縮檔，然後以电子邮件寄送，並自動轉送到專案的FTP伺服器供開發者進行分析。

已支援的介面
------

只有内核可以直接存取硬體，包括顯示卡。終端使用者軟體透過多種為特定功能所編寫的应用程序接口存取。Nouveau被以Gallium3D風格驅動程式的方式編寫，這就意味著它與其他Gallium3D驅動程式共享大多數的程式碼。多數此種共享程式碼都在Mesa 3D中可看到，並由各Linux发行版進行散佈。

### 渲染API

Mesa 3D及驅動程式都包含了多渲染界面的支援，設計則交由使用者空間的程式，像是电子游戏或计算机辅助设计軟體等，存取對應的SIP塊。

#### Direct3D

Direct3D第9版的自由及開放原始碼實做在Mesa 3D可看到。它可以被nouveau所使用。但任何使用Direct3D的軟體都是為Windows所編寫的，所以這個軟體只能在Linux上與Wine一起使用。

#### OpenGL

渲染介面OpenGL是由科纳斯组织開發的。這個API的實做是Nvidia或AMD專有驅動程式的一部份。另一種實做方式是由自由軟體愛好者所編寫的，像是Brian Paul或是Intel及其合作者在Mesa 3D中所實做。因為是Gallium3D風格的驅動程式，Nouveau只需要一點小修改就可以與這個實做一同運作。

### 視訊加速

Mesa 3D支援多重呈現界面，所有已設計好的使用者空間程式，像是GStreamer等程式都可以存取相對應的SIP塊。也可以使用為了這個目的設計的電子電路，雖然這樣做會相對於使用PureVideo來說消耗更多的電量。 

Nouveau支援PureVideo技術，並提供VDPAU及XvMC的方式來存取它。

### 計算用API

#### OpenCL

OpenCL

#### CUDA

Nouveau不支援CUDA技術。

歷史
--

左方：傳統方式的顯示卡驅動程式；右方：Gallium3D風格的顯示卡驅動程式。兩種類型都共享了許多自由及開放原始碼的程式碼。
Nouveau原先是使用Mesa 3D的DRI來呈現三维计算机图形，從而允許使用圖形處理器直接加速3D應用程式的圖形繪製；但在2008年2月對DRI的支援停止，並轉移到新的Gallium3D。

在2013年9月23日，Nvidia公開宣佈他們將會釋出一些關於他們的圖形處理器的文件，來解決NVIDIA的圖形處理器在Nouveau上的可用性。

截至2014年1月31日，Nvidia的Alexandre Courbot致力於在一個廣泛的修補程式集中加入nouveau對GK20A（Tegra K1）的初步支援。

採用
--

對Linux圖形堆疊的說明：直接呈現管理員、KMS驅動程式、libDRM、Mesa 3D、顯示伺服器皆為視窗型系統的元件，但玩遊戲時並不直接需要這些元件。
nouveau驅動程式已被以下Linux發行版作為Nvidia顯示卡的預設開放原始碼驅動程式： Fedora 11及openSUSE 11.3。它也被包含在Ubuntu 9.04的套件庫中，並在Ubuntu 10.04中作為預設的驅動程式
它也包括在Debian的套件庫中。這個驅動程式包含在這些作業系統中，但是並不允許3D硬體加速。

2009年12月10日被Linux內核2.6.33版接受成為暫時驅動程式。

Fedora 13（2010年5月）允許安裝mesa-dri-drivers-experimental軟體包，可以此啟用實驗性的3D圖形硬體加速，若沒有安裝這個軟體包就無法啟用。

3D加速被Ubuntu 10.10包含在「libgl1-mesa-dri-experimental」軟體包中。

Compiz建議使用nouveau而非Nvidia專有驅動程式。

2012年3月26日，nouveau驅動程式被標示為穩定，並從Linux核心的暫時驅動程式提升為核心驅動程式。

2014年6月，Codethink回報可以在Linux內核 3.15上與Wayland一同執行，是使用EGL且是Tegra K1上的「100%開放原始碼的顯示卡驅動程式堆疊」。

參見
--

* 自由软件主题

* 自由及開放原始碼顯示卡驅動程式（英语：）
* NVIDIA顯示核心列表

參考資料
----

1. ↑  von Eitzen, Chris.. The H - Open. Heinz Heise. 18 June 2012  [2014-07-25]. （原始内容存档于2014-07-28）.
2. ↑ .  [2018年8月12日] （英語）.  引文格式1维护：未识别语文类型 (link)
3. ↑ . 17 August 2006  [7 April 2013]. （原始内容存档于2019-02-17）.
4. ↑ . 7 July 2009  [23 September 2009]. （原始内容存档于2014-07-23）.
5. ↑ . LWN.net. 15 February 2008  [24 November 2009]. （原始内容存档于2012-03-01）.
6. ↑ . Phoronix. 2013-10-31  [2014-07-25]. （原始内容存档于2014-07-31）.
7. ↑ . Phoronix. 2014-05-17  [2014-07-25]. （原始内容存档于2014-07-03）.
8. ↑ . Phoronix. 2014-06-20  [2014-07-25]. （原始内容存档于2014-07-23）.
9. ↑ . freedesktop.org.  [2014-07-25]. （原始内容存档于2014-08-09）.
10. ↑ . nouveau Wiki.  [2014-07-25]. （原始内容存档于2012-03-01）.
11. ↑ . nouveau Wiki.  [2014-07-25]. （原始内容存档于2015-01-01）.
12. ↑ . nouveau Wiki.  [2014-07-25]. （原始内容存档于2012-03-01）.
13. ↑ . freedesktop.org.  [2014-07-25]. （原始内容存档于2014-07-29）.
14. ↑ . LWN.net. 26 February 2008  [7 March 2008]. （原始内容存档于2012-03-01）.
15. ↑ . 7 March 2008  [7 March 2008]. （原始内容存档于2008年5月11日）.
16. ↑ . 2013-09-23  [2013-09-24]. （原始内容存档于2013-09-25）.
17. ↑ . 2014-01-31  [2014-07-25]. （原始内容存档于2014-09-06）.
18. ↑  Michael Larabel.. Phoronix. 2009-03-29  [2014-07-25]. （原始内容存档于2014-08-13）.
19. ↑ . openSUSE.  [2010-12-29]. （原始内容存档于2011-03-04）.
20. ↑  Michael Larabel.. Phoronix. 2010-12-09  [2014-07-25]. （原始内容存档于2014-07-28）.
21. ↑ .  [2010-02-24]. （原始内容存档于2019-10-18）.
22. ↑  Debian.. 2011-02-11  [2014-07-25]. （原始内容存档于2013-07-21）.
23. ↑ . Phoronix. 2009-12-11  [2014-07-25]. （原始内容存档于2014-08-08）.
24. ↑  Sam Spilsbury, head maintainer of Compiz.. 2010-05-21  [2014-07-25]. （原始内容存档于2014-08-12）. Our recommendation: Use nouveau.
25. ↑  Jonathan Corbet.. LWN.net. 2012-03-23  [2014-07-25]. （原始内容存档于2014-07-22）.
26. ↑ . Phoronix. 2014-06-12  [2014-07-25]. （原始内容存档于2014-07-14）.

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
Freedesktop.org托管的自由及开放源代码软件项目 |
| --- |
|  |
| 操作系统组件 | 
* Avahi（英语：）
* Compiz
* D-Bus
* DRI（英语：）
* Enchant（英语：）
* Flatpak
* kmscon（英语：）
* luit（英语：）
* nouveau
* PackageKit
* Plymouth
* PulseAudio
* Systemd
* Wayland
* X.Org Server
	+ Glamor
* Xephyr（英语：）

 |  |
|  |
| 函式庫 | 
* AppStream
* cairo
* Fontconfig
* GStreamer
* Mesa 3D
* fprint（英语：）
* HarfBuzz
* Pango
* Poppler
* Swfdec（英语：）
* Video Acceleration API（英语：）
* XCB
* Xft（英语：）

 |
|  |
| 軟體框架 | 
* CppUnit（英语：）
* Galago（英语：）
* GeoClue（英语：）
* Open Collaboration Services（英语：）
* Telepathy

 |
|  |
| 会议 | 
* Create Project（英语：）
* 波特兰计划

 |

 |