我最近购买了一台新电脑(大约在 2010 年 7 月),并且在 Linux 上使用专有视频驱动程序时遇到了一些问题。
硬件是:
- 显卡:ATI/AMD Radeon HD 5870(XFX HD-587X-ZNFC)
- 主板:华硕 P7P55D-E Deluxe;
- 处理器:英特尔 i5 750;
- 内存:金士顿 Hyperx KHX1600C8D3K2/4GX(2x - 共 8GB)
- 电源:XFX P1-750B-CAG9;
有不超频,甚至内存也没有(由于处理器内存控制器的限制,它们的频率为 1333mhz)。
该操作系统是一个自制的Linux发行版,包含以下软件:
- 架构:x86_64 (多库)
- 内核:2.6.35.10
- Xorg:7.5
- 窗口管理器:wmii-3.9.2
- 视频驱动程序:ATI/AMD Catalyst 10.12
有不桌面效果程序,如 compiz fusion 或 beryl。
存在的问题:
使用 ATI/AMD 专有驱动程序时,某些应用程序的绘制/重绘速度很慢,而这些应用程序会使驱动程序将显卡时钟频率提高到最大(0% GPU 活动,只有时钟频率增加)。我不知道如何准确描述绘制速度慢的情况,但我会列出一些应用程序和症状。
终端
- 绘制连续输出时闪烁严重;
- 当我处于具有全屏 xterm 的工作区时,gpu 负载在空闲时保持在 12%,并且,当 xterm 较小时,GPU 负载也较小。
“aticonfig --odgc”输出:
Default Adapter - ATI Radeon HD 5800 Series
Core (MHz) Memory (MHz)
Current Clocks : 157 300
Current Peak : 850 1200
Configurable Peak Range : [600-900] [900-1300]
GPU load : 12%
“aticonfig --pplib-cmd‘get activity’”输出:
Current Activity is Core Clock: 157MHZ
Memory Clock: 300MHZ
VDDC: 950
Activity: 12 percent
Performance Level: 0
Bus Speed: 5000
Bus Lanes: 16
Maximum Bus Lanes: 16
更多示例:
- mplayer 时间信息在终端上闪烁;
- “find /” 闪烁很多(使用 control-c 需要一些时间才能停止。但是,如果我更改工作区或在其上放置一些窗口,则在 control-c 之后,它会立即停止);
- “cat somefile”如果文件很大(例如Xorg.0.log)则需要一些时间来显示;
vim 和 less(例如:find / | less)没有太多问题,只是滚动时有一点闪烁;
mplayer (无 GUI)
- 使用 -vo x11 缓慢复制并搜索;
- 用 -vo xv 进行撕裂;
- 终端上的时间信息闪烁(xterm 后果);
格维姆
- 向上/向下滚动页面时绘制速度有点慢;
火狐
- 在某些页面(如 www.boadica.com.br)上绘制/重绘速度很慢,有时在启用 Flash 的 www.youtube.com 上也是如此(在许多页面上从未注意到);
- 显示黄色信息框并滚动页面时出现损坏(在信息框的相同位置出现灰色框);
“墙纸”
- 最小化全屏窗口或切换到空白工作区后需要一些是时候重新绘制壁纸了。
“显卡”
- 核心和内存时钟会随着上述事件以及其他情况(例如更改工作区(即使没有壁纸)、最小化、最大化或移动窗口)而增加;
空闲时钟:核心:157MHz,内存:300MHz
全时钟:核心:850MHz,内存:1200MHz
- 痛苦的缓慢滚动;
显示(来自 ImageMagick)
- 菜单速度慢,有时图像重绘速度也慢;
我使用的并且显然没有问题的程序:
- 瘸子;
- 洋泾浜语;
- mplayer (-vo gl,gl2);
- 搅拌机;
- unigine heaven(比 Windows 上的 fps 更好);
- 毁灭战士3;
- 胫骨;
- 半影序曲;
- 失忆症 黑暗后裔(葡萄酒);
- 暗黑破坏神2(葡萄酒);
Windows(Windows 7 Ultimate 64位)上没有问题。
特别注意:
Debian 和 Ubuntu gnome 外观 cpanel 的完整桌面效果不会引起任何问题,即使在更改工作区、最小化、最大化或移动窗口时核心和内存时钟也不会增加。
我测试过的内容:
测试失败:
- 测试了自 10.6 以来的所有驱动程序版本(大约在我在此 PC 上安装第一个 slackware 时发布);
- 测试了其他显卡 - ATI/AMD Radeon HD 5570(XFX HD-557X-ZHF2);
- 测试了 xorg.conf 上的某些选项,并且我在谷歌上找到了它们(其中一些选项在我的 xorg.conf 上有注释。我会在文章末尾发送链接);
- 测试了一些补丁,例如 Arch Linux Catalyst 页面中的 107_fedora_dont_fill_bg_none.patch 和 xserver-xorg-backclear.patch (https://wiki.archlinux.org/index.php/ATI_Catalyst(英文):
测试了其他发行版和软件版本:
- 在我自己的发行版上测试了 XORG-7.6;
- 测试了 Debian Squeeze (测试 - 从 2010-12-20 开始);
- 测试了 Ubuntu Marverick (10.10);
- 测试了 Slackware 13.1;
发行版信息:
架构:i386
Debian 和 Ubuntu,带有所有默认软件(内核、gnome、xorg、驱动程序);
Slackware 带有来自 AMD 页面的 Catalyst 和默认窗口管理器,例如:fvwm、xfce 和我自己构建的 wmii;
成功测试:
- 测试了其他显卡(仅在我的自制发行版上) - NVIDIA Geforce 7300GS,驱动程序为 260.19.29;
这并没有显示绘制速度慢的问题,但该卡有点过时了,所以不知道它是否缺少动态时钟等功能。我没有处理其他显卡,如 nvidia g/gt/gts/gtx 200~400~500 或 Radeon HD 3000/4000/6000 来进行更多测试。
测试其他硬件:
- 显卡:ATI/AMD Radeon HD 5570(XFX HD-557X-ZHF2);
- 主板:英特尔 DG31PR;
- 处理器:Core 2 Duo E6750;
该硬件的软件:
全新安装相同的发行版(除了我的),并使用相同的程序版本;
该显卡(HD 5570)在所有操作系统(Windows XP 和 Windows 7 也是如此)中均以最大时钟频率全时运行(类似于 500/750,不记得了),但它并没有出现我在这里遇到的相同问题。
我用 Google 搜索了大量有关 Linux 上 ATI/AMD 专有驱动程序常见问题的信息,除了 Firefox 损坏之外,没有发现类似问题,解决方案是禁用 ATI Direct2DAccel 并使用 XAA。使用 XAA 时问题仍然存在,而 pidgin 等其他应用程序和 Firefox 的其余部分也出现了同样的绘制/重绘缓慢的问题。
开源驱动程序:
使用开源驱动程序 (xf86-video-ati-6.13.2) 时,我没有遇到同样的缓慢绘制问题,但遇到了其他问题,目前无法解决这个问题。我不会在这里讨论这个问题,因为这是另一条问题,会把一切都搞混。如果碰巧这是唯一的解决方案,我会再开一个帖子来讨论它。
日志和配置:
答案1
帖子.config
缺少指向 Cypress (Radeon HD 58xx 系列) 固件的指针。将所有三个 CYPRESS_* 文件下载到/lib/firmware/radeon/
:
然后在你的.config
:
CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE="radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin"
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
顺便说一句 - 我在最近安装的 HD 6670 上看到了类似但不太明显的行为。它以 300MHz 的速度闲置,这可能有助于防止与 5800 相比过度的性能下降,这可能会有所帮助。感觉 GPU 频率上升期间会出现周期性故障。我已通过禁用 xcomposite 和所有额外的皮肤/动画/阴影等将 KDE 4.6 中的症状降到最低。