跳转到内容

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应用程式的图形绘制;但在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).