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

其中:

XTXATI系列中最高端显卡型号的后缀;

XT:代表了顶级显卡的型号,一般就运行频率稍低于XTX,例如高端显卡Radeon X1950XTRadeon HD 2900XT,它们都采用了XT这个后缀;

XL:用于ATI高端显卡系列的后缀,级别比顶级级别的XT低,主要表现在频率和管线上有所缩水;

GTO:用于中高端显卡系列,比XL级别稍低。

Pro/GTProGT的级别都要低于XT,一般来说,采用同一核心代号的ATI显卡,Pro的级别要稍高于GT,如X1950ProX1950GT,主要表现在运行频率上,Pro要高于GT。但我们需要区分清楚,当采用不同核心代号的ATI显卡时,GT的级别是可以高于Pro的,如X1650GTX1650Pro,单从命名上看貌似X1650Pro要高级于X1650GT但实际却是相反的,X1650Pro采用了RV530的显示核心,要低级于1650GT采用的RV560,因此X1650Pro的级别要低于X1650GT

SE:全名为“Special Edition(特殊版),主要用于ATI中低端显卡系列的后缀,采用这个后缀的显卡在管线上会有所缩减。

2.1.2. HD+数字命名阶段

ATIRadeon HD 3000系列开始采用了新的命名方法,拿Radeon HD3870为例,其中“3”代表了显卡代数、“8”代表了系列,而“70”则代表了显卡的系列内型号,数字越大代表的级别就越高。这种命名方式比起过去的更为直观更容易区分开。

又例如HD6770HD69506是代表他们是第几代产品;后面的78代表高中低端系列:89是高端,67是中端,45是低端产品;后面的70代表系列内的高中低端产品:507090分别对应低中高端。 6770就是67系列的高端,6950就是69系列的中端。

2.1.3. Rx+xxx命名阶段

201310AMD正式宣布了新一代的独立显卡产品,同时也标志着沿用六代的“Radeon HD”命名方式成为历史,“Radeon Rx”闪亮登场。

新一代显卡的命名并不是接着HD7000继续顺延。HD8000命名留给了OEM,先前一条「欲重现9550辉煌」的新闻(传言:AMD现已决定将HD 8000命名方式留给OEM产品,而零售产品则会改名,用HD 9000系列来替代)令大家以为新显卡在HD8000名称被占用之后顺理成章地会叫做HD9000,同时期待会有重生的Radeon HD9550。不过最终登场是全新的Rx-xxx方式的命名,新显卡系列为Rx-2xx。具体来说,目前AMD自高到低将推出R9 290XR9 290R9 280XR9 270XR7 260XR7 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-R500Fixed-pipeline family

R600-Northern IslandsTeraScale-family

Southern Islands-最后是Graphics Core Next-family

2.2.   Nvidia显卡(N卡)

我们讨论的N卡都是基于GeForceGeForceNvidia的桌面游戏显卡系列,除此之外还有针对移动平台和专业图形工作站的系列,在此不讨论。

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,也是广为用户群体所接受的产品型号之一,主打中端——中高端的消费市场,较具代表的就是nVIDIA7”系列的7600GT

GSGS一般用于命名nVIDIA的主打产品,一般可以看作是GT的缩减版,级别低于GT,较为具代表性的就是7600GS。值得注意的是,采用GS命名的显卡,其核心架构可以和GT一样,只是在运行频率上落后于GT,但也可以是在核心架构上直接缩减,如7600GS的核心架构就和7600GT一样,而8800GS的核心架构则比8800GT要有所缩水,我们在选购显卡时,要注意区分开。

LE"Limit Edition"的缩写,表示限制版本,代表某一产品系列中的低端产品,主要是频率与标准版本相比有一定的下降。如:7300LE

其实关于nVIDIA显卡的命名后缀还有许多,如XTZTTiSEGE等,在这里就不一一列举了,因为常见的显卡命名后缀,并不包含它们在内,下面我们来了解显卡显示核心的架构概念。

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 IslandsN卡支持上一代的Kepler,不支持最新的Maxwell

不仅如此,开源驱动对上一代的显卡支持也不是最好的,性能远远低于闭源驱动。

不过让人感到乐观的是,近年两大显卡阵营的开源驱动团队都加大了投入(特别是AMDA卡开源驱动团队是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卡谁的性能好)

phoronix2014612日进行的测试《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 2014725日进行的测试《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卡开源驱动进展是否乐观)

phoronix2014728日进行的测试《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.2460%80%的性能;而其他的Kelper显卡只得到re-clocking的部分支持,只能达到闭源驱动的20%40%的性能。

另外,GTX650只相当于A卡中的HD6770,不考虑购买。

5.4.   A卡的开源驱动和闭源驱动性能比较(目的:A卡开源驱动进展是否乐观)

phoronix 201434日进行的测试如下:

http://www.phoronix.com/scan.php?page=article&item=amd_radeon_trusty&num=1

结果显示:

基于不同平台,Windows8.1Linux的闭源驱动性能差不多;基于相同的Linux平台,HD5000/6000的开源驱动性能接近闭源驱动,HD7000及以上显卡的开源驱动性能差得比较远。


phoronix 2014727日的文章《Open-Source AMD Users Report Hawaii GPUAcceleration Is Working》如下:

http://www.phoronix.com/scan.php?page=news_item&px=MTc1MDU

结果显示:

Hawaii(如R9 290XR9 290)的驱动据说可以工作了:提交内核补丁并更新了Hawaiimicrocode文件,使HawaiiGPU硬件加速可以正常工作。HawaiiA卡最新的架构,值得关注。

目前尚无数据。


phoronix2014729日的文章《Hawaii Bug-Fixes Start Hitting MainlineRadeonSI Gallium3D》如下:

http://www.phoronix.com/scan.php?page=news_item&px=MTc1MTY

结果显示:

       AMD的开发人员728日向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卡)

phoronix2014723日进行的测试如下:

http://www.phoronix.com/scan.php?page=article&item=amd_r600si_linux316&num=1

对下面7A卡进行性能测试

-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驱动还有很多工作需要做,最新的显卡们(例如HD7xxxR9 200R7 200)的性能明显不如几年前的HD6870HD6950

另外,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. 


phoronix2014623日的文章《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 optimizationslarge PTE supportHDMI deepcolor support HDMI audio clean-ups,以及其他bug-fixesGCN显卡性能提升20%30%

3.16内核于201483日星期日正式发布。


参考文档

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/


0 0
原创粉丝点击