开源的强大,Archlinux ATI R600 开源驱动安装

说起来,开源究竟有多强大谁也说不好,仅指与我相关的ATI显卡驱动一例。

ATI显卡驱动在Linux上真是要多Suck有多Suck,一般说来,闭源驱动的性能总归是要好一些,这也确实,闭源的驱动在BenchMark上的表现超过开源驱动,但是这不妨碍他Fuck itself。观感上的问题就是ATI的闭源驱动在窗口Resize的时候会有明显的延迟,CPU会刷的一下升上去,为此有人搞了一个补丁。但是这个补丁会带来显示的问题,在性能不如Compiz的Kwin上尤其明显,当然也不是说Compiz就没有这个问题,但是少。

其次,ATI只官方支持Ubuntu,这是什么意思呢?一旦Xorg或者Kernel更新了(这两个和驱动关系很大),ATI的驱动往往跟不上更新,为啥,因为Ubuntu没有使用新的版本的内核或者Xserver。Nvidia则不然,能在内核未发布的时候保证支持。这是态度问题啊……

Catalyst驱动到现在还没有支持Xorg 1.7,导致我等使用Archlinux的同学要么就等着不更新,要么就抛弃闭源驱动。不更新有很多麻烦,有可能有很多依赖的包都会出现问题,尤其是Archlinux这种滚动更新的发行版,长时间不更新会带来更多的麻烦。

说起来,这种时候大家的选择只有忍耐,或者投奔开源。这时我早早的就开始在网上寻找开源3d的支持。于是我发现了这个:http://aur.archlinux.org/packages.php?ID=28981

当时还尝试自己编译相关支持,但是失败……后来有人终于成功搞出来,不过那已经是很久之后的事情了。ATI的开源3d也确实牵动着众多用户的心,很多人都有关注,各个网站也有相关文章,主要关注的还是Phoronix上的新闻。

那时还曾经头脑发热想去参与开发,后来发现自己啥也不懂就作罢了……

列出历史上的几篇激动人心的文章:

AMD Releases R600/700 Programming Guide ATI发布了编程指南,这是走向开源的第一步,这样就不用苦苦逆向工程搞出来什么寄存器是干什么的,同时还能带来更好的性能。

Open-Source ATI R600/700 3D Driver Almost Working 这篇文章标志着开源驱动就要到来啦~

ATI R600/700 OSS 3D Driver Reaches Gears Milestone glxgears works!一个大家常用的benchmark

然后就是等待内核2.6.31,其实这时候我一直都还没尝试过开源驱动,其实是没有成功。当Xserver 1.7到来的时候,大局迫使我向开源驱动靠拢。这时候我编译了drm-next的radeon模块,终于看见了3d work,太感动了,太激动了……虽然渲染错误时常出现,但是我也坚定的向Catalyst说了fuck and goodbye!

说起来感觉内核发布得越来越快?2.6.32很快就到来了,这是声明有官方支持的r600/r700的3d,测试发现渲染错误依然,不过不用自己编译相关模块了,倒是不错。

期间也出现了一些问题,例如early load,为此我写了一个mkinitcpio的hook,发在了评论里,被别人拿走打包了radeon-initrd,确实可以尽量早的启动kms。

后来2.6.32.2内核会导致无法启动的错误,后来发现有人测试2.6.33rc1的内核很好使,于是我也下载自己搞了一通,最后发现没有firmware?!没办法,幸好我之前注意到了一个叫做radeon_ucode的包,于是装上,哇!没有渲染错误的KDE SC 4.4是多么美妙!

以下是相关流程:

安装kernel 2.6.33rc1,虽然kernel26-rc提供了这个包,但是没有firmware会导致非常不爽,幸好这个包写了被注释掉的拆包机制,于是拆成header,firmware和kernel三个包安装好。

安装libdrm,2.4.17版本就可以用,但是官方源的2.4.17-2已经去掉了radeon的支持,于是要么用2.4.17-1,要么自己重新编译一个。

glproto和dri2proto都可以直接用。

安装mesa,由于我一直有关注mesa的git,于是我发现mesa 7.7的提交记录可以满足我的需求,又不用时常抓git的新代码,于是从mesa 7.6的pkgbuild改了一个新的,编译完成,需要注意的是其中一个补丁不能再用在mesa 7.7上,从mesa-split里面抓出来一个覆盖是个很好的选择。

安装xf86-video-ati-git,必须装个git版,自己编了一个,挺好使。

radeon_ucode,其实就下载三个文件,必须装上,否则无法加载。

如果出了问题,可以采用reisub大法,或者在grub当中加入nomodeset禁用KMS。

体验开源驱动的强大吧!

This entry was posted in Linux and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).

This site uses Akismet to reduce spam. Learn how your comment data is processed.