GPU(显卡)的开源驱动调研
来源:互联网 发布:松江少儿编程 编辑:程序博客网 时间:2024/04/29 18:40
1. 概要
在桌面操作系统中,由于厂商对显卡驱动的完美支持,用户购买显卡时只需关注显卡的硬件特性,一般遵循“价格越贵性能越好”。作为核心竞争力,显卡厂商不会也不愿意完全开源自己的显卡驱动,只发布编译好的二进制机器码。不同的CPU其二进制码是不一样的,因此不被显卡厂商支持的CPU则无法使用这些驱动,只能转而求助于并不完善的开源驱动。这类CPU的用户在选购显卡时不能仅仅考虑该款显卡理论上有多牛,因为在开源驱动环境下,显卡也许远远达不到其主页上宣称的性能和功能。
本文首先介绍显卡命名方法;然后以AMD Radeon显卡(俗称A卡)和龙芯3A处理器为例,介绍开源驱动的组成,性能和功能;其间会与Nvidia显卡(N卡)做简单比较,说明在开源驱动下,我们应该选择A卡而不是游戏玩家最喜欢的N卡。
主要内容有:
- 显卡的命名方法:A卡和N卡
- 如何确认开源驱动是否支持某款显卡
- 显卡驱动的性能比较
2. 游戏显卡的命名方法
本文只针对游戏显卡(即桌面显卡),不考虑专业显卡等其他显卡。本章分别介绍AMD/ATI Radeon显卡、Nvidia GeForce显卡的命名规则。
2.1. AMD/ATI显卡(A卡)
AMD/ATI显卡的命名分为三个阶段。
2.1.1. 后缀命名阶段
Radeon HD300之前采用后缀命名规则,其高中低端的顺序如:
XTX > XT > XL/GTO > Pro/GT > SE
其中:
XTX:ATI系列中最高端显卡型号的后缀;
XT:代表了顶级显卡的型号,一般就运行频率稍低于XTX,例如高端显卡Radeon X1950XT、Radeon HD 2900XT,它们都采用了XT这个后缀;
XL:用于ATI高端显卡系列的后缀,级别比顶级级别的XT低,主要表现在频率和管线上有所缩水;
GTO:用于中高端显卡系列,比XL级别稍低。
Pro/GT:Pro和GT的级别都要低于XT,一般来说,采用同一核心代号的ATI显卡,Pro的级别要稍高于GT,如X1950Pro和X1950GT,主要表现在运行频率上,Pro要高于GT。但我们需要区分清楚,当采用不同核心代号的ATI显卡时,GT的级别是可以高于Pro的,如X1650GT和X1650Pro,单从命名上看貌似X1650Pro要高级于X1650GT,但实际却是相反的,X1650Pro采用了RV530的显示核心,要低级于1650GT采用的RV560,因此X1650Pro的级别要低于X1650GT;
SE:全名为“Special Edition”(特殊版),主要用于ATI中低端显卡系列的后缀,采用这个后缀的显卡在管线上会有所缩减。
2.1.2. HD+数字命名阶段
ATI自Radeon HD 3000系列开始采用了新的命名方法,拿Radeon HD3870为例,其中“3”代表了显卡代数、“8”代表了系列,而“70”则代表了显卡的系列内型号,数字越大代表的级别就越高。这种命名方式比起过去的更为直观更容易区分开。
又例如HD6770和HD6950。6是代表他们是第几代产品;后面的7和8代表高中低端系列:8,9是高端,6,7是中端,4,5是低端产品;后面的70代表系列内的高中低端产品:50,70,90分别对应低中高端。 6770就是67系列的高端,6950就是69系列的中端。
2.1.3. Rx+xxx命名阶段
2013年10月AMD正式宣布了新一代的独立显卡产品,同时也标志着沿用六代的“Radeon HD”命名方式成为历史,“Radeon Rx”闪亮登场。
新一代显卡的命名并不是接着HD7000继续顺延。HD8000命名留给了OEM,先前一条「欲重现9550辉煌」的新闻(传言:AMD现已决定将HD 8000命名方式留给OEM产品,而零售产品则会改名,用HD 9000系列来替代)令大家以为新显卡在HD8000名称被占用之后顺理成章地会叫做HD9000,同时期待会有重生的Radeon HD9550。不过最终登场是全新的Rx-xxx方式的命名,新显卡系列为Rx-2xx。具体来说,目前AMD自高到低将推出R9 290X、R9 290、R9 280X、R9 270X、R7 260X、R7 250这些型号。
2.1.4. A卡名称与其GPU核心架构代号的对应关系
Family
Engineering Names
Marketing Names
Fixed-pipeline family
R100
R100, RV100, RV200, RS100, RS200
7xxx, 320-345
R200
R200, RV250, RV280, RS300
8xxx - 9250
R300
R300, R350, RV350, RV380, RS400, RS480
9500 - 9800, X300 - X600, X1050 - X1150, 200M
R400
R420, R423, RV410, RS600, RS690, RS740
X700 - X850, X12xx, 2100
R500
RV515, R520, RV530, RV560, RV570, R580
X1300 - X2300, HD2300
TeraScale-family
R600
R600, RV610, RV630, RV620, RV635, RV670, RS780, RS880
HD2400 - HD4290
R700
RV770, RV730, RV710, RV740
HD4330 - HD5165, HD5xxV
Evergreen
CEDAR, REDWOOD, JUNIPER, CYPRESS, PALM (Wrestler/Ontario), SUMO (Llano), SUMO2 (Llano)
HD5430 - HD5970, all HD6000 not listed under Northern Islands, HD7350
Northern Islands
(北大西洋诸岛)
ARUBA (Trinity/Richland), BARTS, TURKS, CAICOS, CAYMAN
HD6450, HD6570, HD6670, HD6790 - HD6990, HD64xxM, HD67xxM, HD69xxM, HD7450 - HD7670
Graphics
Core Next-family
Southern Islands
(南太平洋岛)
CAPE VERDE, PITCAIRN, TAHITI, OLAND, HAINAN
(注:CAPE VERDE和OLAND都在北大西洋)
HD7750 - HD7970, R9 270, R9-280, R7 240, R7 250
Sea Islands
(海群岛)
BONAIRE, KABINI(印度卡比尼河), KAVERI(印度卡佛理岛), HAWAII
HD7790, R7 260, R9 290,Radeon HD 8000 series(OEM)
Volcanic Islands
(火山群岛)
Vesuvius
AMD Radeon Rx 200 Series-branded,如R9 295x2
Pirates Islands
(海盗岛)
2015年发布
AMD Radeon Rx 300 Series-branded
其中:注:红色为未来产品
R100-R500是Fixed-pipeline family
R600-Northern Islands是TeraScale-family
Southern Islands-最后是Graphics Core Next-family
2.2. Nvidia显卡(N卡)
我们讨论的N卡都是基于GeForce。GeForce是Nvidia的桌面游戏显卡系列,除此之外还有针对移动平台和专业图形工作站的系列,在此不讨论。
2.2.1. N卡命名规则
nVIDIA喜欢采用有规律的命名方式,对相同核心的不同型号显卡,以不同的命名规则区分开,以方便消费群体识别好显卡之间的级别。
nVIDIA各代显卡都遵循了由高至低命名规则:Ultra >GTX >GTS >GT >GS >LE。
Ultra:字面意思直译就有“激进,极端”的意思。而在nVIDIA的产品中也是如此,只要后缀带了这个家伙,一定是那类芯片中最高端的,它的命名级别比GTX还要高,细数NV的历代王者,基本都能看到它熟悉的身影。如8800Ultra,它就属于8800GTX的高频版本。
GTX:一般可以理解为GT eXtreme,代表了极端、极致的意思,用于nVIDIA最高级别的型号,如8800GTX和最新的9800GTX,都采用了GTX的后缀。
GTS:超级加强版“Giga-TexelShader”的缩写,千万像素的意思,也就是每秒的像素填充率达到千万以上。GTS最早出现在Geforce2产品中,代表当时的最高端的Geforce2。而现在一般用于表示GTX的缩减版,级别在GTX之后,如8800GTS。
GT:频率提升版本"GeForceTechnoloty"的缩写,级别低于GTS,也是广为用户群体所接受的产品型号之一,主打中端——中高端的消费市场,较具代表的就是nVIDIA“7”系列的7600GT。
GS:GS一般用于命名nVIDIA的主打产品,一般可以看作是GT的缩减版,级别低于GT,较为具代表性的就是7600GS。值得注意的是,采用GS命名的显卡,其核心架构可以和GT一样,只是在运行频率上落后于GT,但也可以是在核心架构上直接缩减,如7600GS的核心架构就和7600GT一样,而8800GS的核心架构则比8800GT要有所缩水,我们在选购显卡时,要注意区分开。
LE:"Limit Edition"的缩写,表示限制版本,代表某一产品系列中的低端产品,主要是频率与标准版本相比有一定的下降。如:7300LE。
其实关于nVIDIA显卡的命名后缀还有许多,如XT、ZT、Ti、SE、GE等,在这里就不一一列举了,因为常见的显卡命名后缀,并不包含它们在内,下面我们来了解显卡显示核心的架构概念。
2.2.2. N卡名称与其GPU核心代号的对应关系
Code name
Official Name
Nvidia 3D
object codename
里程碑事件
NV04
Riva TNT, TNT2
Fahrenheit
NV10
GeForce 256, GeForce 2, GeForce 4 MX
Celsius
NV20
GeForce 3, GeForce 4 Ti
Kelvin
VS出现
NV30
GeForce 5 / GeForce FX
Rankine
NV40
GeForce 6, GeForce 7
Curie
NV50
GeForce 8, GeForce 9, GeForce 100, GeForce 200, GeForce 300
Tesla
NVC0
GeForce 400, GeForce 500
Fermi
NVE0
GeForce 600, GeForce 700, GeForce GTX Titan
Kepler
NV110
GeForce 750
Maxwell
3. 显卡的发展(略)
4. 显卡的开源驱动支持
显卡的开源驱动包括Linux内核支持、2D驱动支持、3D驱动支持。
4.1. Linux内核支持
4.1.1. A卡
通过内核代码drivers/gpu/drm/radeon/radeon_family.h中的enum radeon_family可以看到,
2.6.36内核支持到Evergreen;
2.6.32内核(龙芯反向移植版)支持到Southern Islands;
3.15内核支持到Sea Islands,包括Sea Islands的最新架构Hawaii;但不支持最新的Volcanic Islands.(内核对Hawaii的完全支持要等到3.17)
4.1.2. N卡
通过内核代码drivers/gpu/drm/nouveau/core/engine/device/nve0.c中的nve0_identify可以看到,
2.6.36内核支持到GFxxx;
2.6.32内核(龙芯反向移植版)支持到Kelper的GK110;
3.15内核支持到Kelper的GK208;但不支持最新的Maxwell。
4.2. 2D驱动支持
4.2.1. A卡
A卡的2D驱动为xorg-video-ati,其官网描述如下:Driver for ATI/AMD Radeon based video chips,everything from Radeon 7000 (R100) to Radeon HD 7000 (Southern Islands) series。
更新的A卡需要使用glamor 2D驱动。
4.2.2. N卡
N卡的2D驱动为xorg-video-nouveau,其官网描述如下:2D/3D acceleration supported on all cards。
4.3. 3D驱动支持
4.3.1. A卡
Mesa的dri驱动src/mesa/drivers/dri/下有radeon,r200
Gallium驱动 src/gallium/drivers/下有r300,r600,radeonsi
其中:
radeon支持R100
r200支持R200
r300(称作r300g)支持R300,R400,R500
r600(称作r600g)支持R600,R700,Evergreen,Northern Islands
radeonsi支持Southern Islands,Sea Islands
4.3.2. N卡
Gallium驱动src/gallium/drivers/nouveau/nvc0
尽管目录为nvc0,其实包括了对nve0(即Kepler)的支持;但是对最新的Maxwell的支持还在开发中。
4.3.3. Mesa对标准的支持
API
OpenGL
OpenGL ES
OpenVG
EGL
GLX
Glide
Direct3D
当前版本
Date
4.4
2013-07-22
3.1
2014-03-17
1.1
2008-12-03
1.5
2014-03-19
1.4
2005-12-16
3.10
2013-04-03
11.2
2011-09-13
10.2
(2014-06-06)[10]
3.3[11]
3.0
1.1
1.4
1.4
deprecated
9.0c
10.1
(2014-03-04)[12]
3.3[13]
3.0
1.1
1.4
1.4
deprecated
9.0c
10.0
(2013-11-30)[14]
3.3[15]
3.0
1.1
1.4
1.4
deprecated
9.0c
9.0
(2012-10-08)
3.1[16]
2.0
1.1
1.4
1.4
?
?
8.0
(2012-02-08)
3.0
2.0
1.1
1.4
1.4
?
?
7.0
(2007-06-22)
2.1
N/A
N/A
N/A
1.4
?
?
6.0
(2004-01-06)
1.5
N/A
N/A
N/A
1.3
?
?
5.0
(2002-11-13)
1.4
N/A
N/A
N/A
1.3
?
?
4.0
(2001-10-22)
1.3
N/A
N/A
N/A
1.3
?
?
注释:
红色为旧版本;黄色为旧版本,但持续支持;绿色为最新版本
目前Mesa只能支持到OpenGL 3.3;而闭源驱动可以支持到OpenGL 4.4
4.4. 开源驱动的开发速度
4.4.1. 概况
由前面对开源驱动的三个主要部分的介绍,可以看出开源驱动的开发速度至少落后闭源驱动一代。
如A卡支持到上一代的Sea Islands,不支持最新的Volcanic Islands;N卡支持上一代的Kepler,不支持最新的Maxwell。
不仅如此,开源驱动对上一代的显卡支持也不是最好的,性能远远低于闭源驱动。
不过让人感到乐观的是,近年两大显卡阵营的开源驱动团队都加大了投入(特别是AMD,A卡开源驱动团队是AMD的员工;而N卡开源驱动团队则独立于Nvidia公司);另外,由于显卡更新换代很快,所以上一代的显卡仍然会是很多领域的主流产品。
开源驱动值得期待。
4.4.2. Radeon驱动开发者
Marek Olšákmarek.olsak@amd.com
Alex Deucheralexander.deucher@amd.com the lead open-source Radeon driver developer atAMD
ChristianKöniganother open-source AMD driver developer
JohnBridgmananother regular to the Phoronix Forums at AMD
Ian Romanick
等等
5. 显卡的驱动性能对比(持续更新)
5.1. A卡与N卡的闭源驱动性能比较(目的:A卡与N卡谁的性能好)
phoronix2014年6月12日进行的测试《35-Way NVIDIA/AMDProprietary Linux Graphics Driver Comparison》如下:
http://www.phoronix.com/scan.php?page=article&item=nvamd_binary_comparison&num=1
结果显示:
N卡完胜A卡,N卡的闭源驱动无论从性能还是兼容性都比A卡做得好。
5.2. A卡与N卡的开源驱动性能比较(目的:选择A卡还是 N卡)
phoronix 2014年7月25日进行的测试《Nouveau vs. Radeon vs.Intel Tests On Linux 3.16, Mesa 10.3-devel》如下:
http://www.phoronix.com/scan.php?page=article&item=amd_nvintel_316&num=1
结果显示:
A卡完胜N卡,不过由于nouveau驱动增加了re-colocking支持(半支持),其性能已经比之前有较明显的提升。
摘抄Michael Larabel的评论:The NVIDIAKepler GPU performance has improved with Linux 3.16 thanks to re-clockingsupport, but for most Kepler GPUs the re-clocking support only works partiallyand cannot be fully-clocked to the highest performance state. However, at leastthe Nouveau code is moving in the right direction. For Linux gamers caringabout open-source drivers, AMD Radeon remains the best choice for apleasurable, high performance experience.
5.3. N卡的开源驱动和闭源驱动性能比较(目的:N卡开源驱动进展是否乐观)
phoronix2014年7月28日进行的测试《Even With Re-Clocking,Nouveau Remains Behind NVIDIA's Proprietary Linux Driver》如下:
http://www.phoronix.com/scan.php?page=article&item=nvidia_nouveau_linux316&num=1
结果显示:
在为Kepler增加了re-clocking支持后,相应的N卡开源驱动性能有明显提升。但是目前只有GeForce GTX 650是全支持,能够达到闭源驱动340.24的60%~80%的性能;而其他的Kelper显卡只得到re-clocking的部分支持,只能达到闭源驱动的20%~40%的性能。
另外,GTX650只相当于A卡中的HD6770,不考虑购买。
5.4. A卡的开源驱动和闭源驱动性能比较(目的:A卡开源驱动进展是否乐观)
phoronix 2014年3月4日进行的测试如下:
http://www.phoronix.com/scan.php?page=article&item=amd_radeon_trusty&num=1
结果显示:
基于不同平台,Windows8.1和Linux的闭源驱动性能差不多;基于相同的Linux平台,HD5000/6000的开源驱动性能接近闭源驱动,HD7000及以上显卡的开源驱动性能差得比较远。
phoronix 2014年7月27日的文章《Open-Source AMD Users Report Hawaii GPUAcceleration Is Working》如下:
http://www.phoronix.com/scan.php?page=news_item&px=MTc1MDU
结果显示:
Hawaii(如R9 290X和R9 290)的驱动据说可以工作了:提交内核补丁并更新了Hawaii的microcode文件,使Hawaii的GPU硬件加速可以正常工作。Hawaii是A卡最新的架构,值得关注。
目前尚无数据。
phoronix2014年7月29日的文章《Hawaii Bug-Fixes Start Hitting MainlineRadeonSI Gallium3D》如下:
http://www.phoronix.com/scan.php?page=news_item&px=MTc1MTY
结果显示:
AMD的开发人员7月28日向Mesa提交了一系列解决Hawaiiradeonsi驱动bug的补丁。另外,内核对Hawaii的支持要等到3.17,摘抄Labarel的评论:Open-sourceAMD Linux users wishing to use a Hawaii GPU will still need to utilize thepatches that will not be queued up until the Linux 3.17 kernel (along with updating their Radeon microcode files) but the RadeonSIGallium3D Mesa improvements are starting to hit the mainline tree.
5.5. A卡系列的开源驱动性能比较(目的:选择哪款A卡)
phoronix2014年7月23日进行的测试如下:
http://www.phoronix.com/scan.php?page=article&item=amd_r600si_linux316&num=1
对下面7款A卡进行性能测试
-Sapphire Radeon HD 6770 1GB
-Sapphire Radeon HD 6870 1GB
-Sapphire Radeon HD 6950 2GB
- ASUSRadeon HD 7850 1GB
- XFXRadeon HD 7950 3GB
-Sapphire Radeon R7 260X 2GB
-Gigabyte Radeon R9 270X 2G
结果显示:
HD6870的综合性能最好,HD6950在少量OpenGL测试程序上表现得比HD6870略好(闭源驱动下,HD6950性能明显比HD6870好一些);另外,radeonsi驱动还有很多工作需要做,最新的显卡们(例如HD7xxx和R9 200,R7 200)的性能明显不如几年前的HD6870和HD6950。
另外,radeonsi对某些OpenGL程序不支持。见Larabel的评论:AMD GPU LLVM back-enderrors still prevented a number of the more demanding OpenGL games/benchmarksfrom running properly on the RadeonSI driver for the AMD GCN graphicsprocessors.
phoronix2014年6月23日的文章《Open-Source Radeon Performance BoostedBy Linux 3.16》如下:
http://www.phoronix.com/scan.php?page=article&item=linux316_radeon_boost&num=2
结果显示:
3.16内核添加了一些列A卡的补丁,包括GPU VM optimizations,large PTE support,HDMI deepcolor support, HDMI audio clean-ups,以及其他bug-fixes。GCN显卡性能提升20%~30%。
3.16内核于2014年8月3日星期日正式发布。
参考文档
1. 显卡命名规则
http://wenku.baidu.com/link?url=CfwJxaMvP-DT9iswPWQPnnwvGmEAFEtO72ognutGfOkNKHTLYpXTGCRrEdJEEn-TBOUgmKnw83A1b531H5MROz_cWt7FzG3xSg0NFeI58Ru
2. Radeon
http://www.x.org/wiki/radeon/
3. RadeonFeature
http://wenku.baidu.com/link?url=CfwJxaMvP-DT9iswPWQPnnwvGmEAFEtO72ognutGfOkNKHTLYpXTGCRrEdJEEn-TBOUgmKnw83A1b531H5MROz_cWt7FzG3xSg0NFeI58Ru
4. Nouveau
http://nouveau.freedesktop.org/wiki/
- GPU(显卡)的开源驱动调研
- GPU 显卡的CPU
- GPU和显卡的关系
- Debian8开源显卡驱动安装
- kali linux上为GPU安装显卡驱动
- tensorflow-gpu安装(首先设置显卡驱动)
- 安装nvidia的显卡驱动
- Ubuntu下的显卡驱动
- ubuntu 默认的显卡驱动
- 显卡驱动下载的路径
- Ubuntu 显卡驱动的安装
- 如何在Gentoo上使用Radeon显卡的开源驱动
- fedora17下nvidia双显卡闭源驱动的安装
- GPU 显卡计算能力
- Kali-linux安装AMD开源独立显卡驱动
- 显卡驱动
- 显卡驱动
- ubuntu 安装 NVIDIA 显卡驱动, 切换双显卡的方法。
- 教你透彻了解红黑树
- Rails4.1 Action Controller 概述
- 【ThinkingInC++】6、内存存放地址的地方
- Notepad++背景颜色设置
- 平方数
- GPU(显卡)的开源驱动调研
- js中创建json对象
- ANDROID sdk开发,修改字体Typeface实例
- js data 格式转换
- 【ThinkingInC++】7、空指针
- LeetCode | Search in Rotated Sorted Array(在旋转数组中查找)
- 焊锡丝的含锡量越高越好吗?
- Android Widget 小部件(二) 使用configure
- HDU 1150 Machine Schedule 二分图匹配