跳至內容

nouveau

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

nouveau
首次釋出1.0 / 2012年6月18日,​12年前​(2012-06-18[1]
目前版本1.0.17(2021年1月23日,​3年前​(2021-01-23[2]
原始碼庫 編輯維基數據連結
作業系統LinuxBSD
平台x86x86-64ARM
類型驅動程式韌體
特許條款MIT特許條款
網站nouveau.freedesktop.org
中間:自由與開放原始碼堆疊。右方:專有驅動程式。

nouveau (/nˈv/) 是一個自由及開放原始碼顯示卡驅動程式英語Free and open-source graphics device driver,是為Nvidia顯示卡所編寫,也可用於屬於系統晶片NVIDIA Tegra系列,此驅動程式是由一群獨立的軟件工程師所編寫,Nvidia的員工也提供了少許幫助。

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

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

軟件架構

[編輯]
Nouveau已經以Gallium3D風格顯示卡驅動程式的方式重寫了。

Nouveau是一個Gallium3D風格的驅動程式,並以DRI的方式運作。它結合了兩個內核元件:直接呈現管理員及KMS驅動程式,以及用戶空間元件的libDRM及Mesa 3D

Nouveau計劃支援所有的Nvidia微架構: Tesla、Fermi、Kepler、Maxwell、Pascal和Volta。

調整頻率

[編輯]

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

工具

[編輯]
動作中的REnouveau的截圖(REnouveau是左上角的藍色視窗)

AMD形成強烈的對比,Nvidia並沒有提供任何關於顯示卡的檔案。 nouveau的開發者被迫使用淨室逆向工程以獲得讓他們可以編寫nouveau的資料。該專案使用多種自訂的程式以協助其逆向工程,像是MmioTrace(記憶體對映I/O追蹤)[10],REnouveau及Valgrind MMT[11]。參見Valgrind

REnouveau

[編輯]

REnouveau (nouveau逆向工程)[12]是一個以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的方式來存取它[13]

計算用API

[編輯]

OpenCL

[編輯]

OpenCL

CUDA

[編輯]

Nouveau不支援CUDA技術。

歷史

[編輯]
左方:傳統方式的顯示卡驅動程式;右方:Gallium3D風格的顯示卡驅動程式。兩種類型都共用了許多自由及開放原始碼的程式碼。

Nouveau原先是使用Mesa 3D的DRI來呈現3D電腦圖形,從而允許使用圖形處理器直接加速3D應用程式的圖形繪製;但在2008年2月對DRI的支援停止,並轉移到新的Gallium3D[14][15]

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

截至2014年1月31日,Nvidia的Alexandre Courbot致力於在一個廣泛的修補程式集中加入nouveau對GK20A(Tegra K1)的初步支援[17]

採用

[編輯]
Linux圖形堆疊的說明:直接呈現管理員、KMS驅動程式、libDRM、Mesa 3D、顯示伺服器皆為視窗型系統的元件,但玩遊戲時並不直接需要這些元件。

nouveau驅動程式已被以下Linux發行版作為Nvidia顯示卡的預設開放原始碼驅動程式: Fedora 11[18]openSUSE 11.3[19]。它也被包含在Ubuntu 9.04的套件庫中[20],並在Ubuntu 10.04中作為預設的驅動程式[21] 它也包括在Debian的套件庫中[22]。這個驅動程式包含在這些作業系統中,但是並不允許3D硬件加速。

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

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

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

Compiz建議使用nouveau而非Nvidia專有驅動程式[24]

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

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

參見

[編輯]

參考資料

[編輯]
  1. ^ von Eitzen, Chris. Free NVIDIA graphics driver reaches version 1.0. The H - Open. Heinz Heise. 18 June 2012 [2014-07-25]. (原始內容存檔於2014-07-28). 
  2. ^ Mirkin, Ilia. [Nouveau] [ANNOUNCE] xf86-video-nouveau 1.0.17. nouveau (郵寄清單). 2021-01-23 [2021-01-23]. (原始內容存檔於2021-01-30). 
  3. ^ Debian bug tracker. 17 August 2006 [7 April 2013]. (原始內容存檔於2019-02-17). 
  4. ^ nouveau Wiki. 7 July 2009 [23 September 2009]. (原始內容存檔於2014-07-23). 
  5. ^ The state of Nouveau, part I. LWN.net. 15 February 2008 [24 November 2009]. (原始內容存檔於2012-03-01). 
  6. ^ Nouveau vs. NVIDIA proprietary Linux vs. NVIDIA Windows 8.1. Phoronix. 2013-10-31 [2014-07-25]. (原始內容存檔於2014-07-31). 
  7. ^ Nouveau Re-Clocking Details Discussed Further. Phoronix. 2014-05-17 [2014-07-25]. (原始內容存檔於2014-07-03). 
  8. ^ Nouveau Re-Clocking Is Way Faster. Phoronix. 2014-06-20 [2014-07-25]. (原始內容存檔於2014-07-23). 
  9. ^ Nouveau PowerManagement documentation. freedesktop.org. [2014-07-25]. (原始內容存檔於2014-08-09). 
  10. ^ MmioTrace (Memory Mapped I/O Trace). nouveau Wiki. [2014-07-25]. (原始內容存檔於2012-03-01). 
  11. ^ Valgrind-mmt. nouveau Wiki. [2014-07-25]. (原始內容存檔於2015-01-01). 
  12. ^ REnouveau (Reverse Engineering for nouveau). nouveau Wiki. [2014-07-25]. (原始內容存檔於2012-03-01). 
  13. ^ Nouveau Video Acceleration. freedesktop.org. [2014-07-25]. (原始內容存檔於2014-07-29). 
  14. ^ The state of Nouveau, part 2. LWN.net. 26 February 2008 [7 March 2008]. (原始內容存檔於2012-03-01). 
  15. ^ Nouveau Companion 36 - The irregular Nouveau-Development companion. 7 March 2008 [7 March 2008]. (原始內容存檔於2008年5月11日). 
  16. ^ Nvidia offers to release public documentation on certain aspects of their GPUs. 2013-09-23 [2013-09-24]. (原始內容存檔於2013-09-25). 
  17. ^ drm/nouveau: initial support for GK20A (Tegra K1). 2014-01-31 [2014-07-25]. (原始內容存檔於2014-09-06). 
  18. ^ Michael Larabel. Testing Out The Nouveau Driver On Fedora 11. Phoronix. 2009-03-29 [2014-07-25]. (原始內容存檔於2014-08-13). 
  19. ^ Product highlights for openSUSE 11.3 version. openSUSE. [2010-12-29]. (原始內容存檔於2011-03-04). 
  20. ^ Michael Larabel. Ubuntu 9.04 To Get Nouveau Driver. Phoronix. 2010-12-09 [2014-07-25]. (原始內容存檔於2014-07-28). 
  21. ^ Bug #454821: Bugs: "xserver-xorg-video-nv" package: Ubuntu. [2010-02-24]. (原始內容存檔於2019-10-18). 
  22. ^ Debian. Nouveau nVidia drivers now available in Debian experimental. 2011-02-11 [2014-07-25]. (原始內容存檔於2013-07-21). 
  23. ^ Nouveau To Go Into Linux 2.6.33 Kernel!. Phoronix. 2009-12-11 [2014-07-25]. (原始內容存檔於2014-08-08). 
  24. ^ Sam Spilsbury, head maintainer of Compiz. Beware the benchmarks.. 2010-05-21 [2014-07-25]. (原始內容存檔於2014-08-12). Our recommendation: Use nouveau. 
  25. ^ Jonathan Corbet. The Nouveau driver graduates from staging. LWN.net. 2012-03-23 [2014-07-25]. (原始內容存檔於2014-07-22). 
  26. ^ Codethink Gets The NVIDIA Jetson TK1 Running With Linux 3.15, Wayland. Phoronix. 2014-06-12 [2014-07-25]. (原始內容存檔於2014-07-14).