Difference between revisions of "AMD Catalyst (简体中文)"

From ArchWiki
Jump to: navigation, search
(wikify some external links, use https for archlinux.org)
m (fix link)
Line 464: Line 464:
 
  $ grep '(WW)' /var/log/Xorg.0.log
 
  $ grep '(WW)' /var/log/Xorg.0.log
  
若看不懂显示的是什么东东,可将其提交到[http://www.bbs.archlinux.org/viewtopic.php?pid=1166052#p1166052/ support thread on the forums]论坛,注意要提交两者显示的信息。
+
若看不懂显示的是什么东东,可将其提交到[https://bbs.archlinux.org/viewtopic.php?pid=1166052#p1166052/ support thread on the forums]论坛,注意要提交两者显示的信息。
  
 
=== 在Wine上3D应用冻结 ===
 
=== 在Wine上3D应用冻结 ===

Revision as of 04:09, 6 December 2012

翻译状态: 本文是英文页面 AMD_Catalyst翻译,最后翻译时间:2012-10-21,点击这里可以查看翻译后英文页面的改动。

"AMD"的显卡驱动有两种:一是官方私有驱动(catalyst,译为催化剂),二是开源驱动(xf86-video-ati).本文主要与私有驱动有关。

AMD曾经将“catalyst”驱动命名为“fglrx” (FireGL and Radeon X). 现在虽然名为“catalyst”,但内核模块名称依然未变,为“fglrx.ko”. 因此,下文中任何提及fglrx 都是指“内核模块”,而不是指软件包. 曾经一段时间,arch官方不提供AMD的私有驱动,但在2012年十月,官方在[community]仓库再次提供AMD的私有驱动,当然针对HD 2xxx 3xxx 4xxx的旧版驱动不再提供. 目前,当升级x服务器时,可能还有未知问题。更多信息可查看[1].

与开源驱动相比, Catalyst在2D图形加速上不及,但3D渲染更胜一筹. R600及以上芯片组所支持的显卡请查看ATI/AMD Radeon。另可参见 this table, 或"Decoder ring",

安装

共有四种途径安装Catalyst。一种是通过[community]软件仓库来安装(推荐),但此种方式不能安装一些有用的软件包(截止10月4日,不提供xvba-video、lib32驱动和legacy驱动);第二种是用Vi0L0(非Arch官方维护人员)维护的软件库.此库包涵了所有必须的软件包.第三种方式就是通过AUR,Vi0L0提供的PKGBUILDs跟他用于构建他仓库的PKGBUILDs完全一样。最后你还可以通过AMD官方下载Catalyst的二进制驱动手动安装(不推荐,因为一旦内核更新,必须重新手动安装). 自Catalyst 12.4, AMD已将针对Radeon HD 5xxx 和 Radeon HD 2xxx, 3xxx and 4xxx 显卡驱动分开开发,因此在你选择何种安装方式之前,应查看你的显卡型号。Radeon HD 2xxx, 3xxx and 4xxx 显卡用 legacy驱动,Radeon HD 5xxx(包括更新的显卡)用普通Catalyst。但无论你需要哪种驱动,都应安装Catalyst utilities。

注意: 在了解每种安装方式的说明后,无论采用哪种方式,你都应了解一些通用的安装说明。

安装Catalyst

从官方软件仓库

这量最简单直接的方式,因为它不需要非官方的软件库,而且当内核更新时它会通过DKMS来自动重建内核模块。如果此方式能充分满足你的需求,推荐使用。安装很简单,直接使用 pacman:

# pacman -S catalyst-dkms catalyst-utils
注意: 如果pacman 问你是否移除libgl - 回答"Y"就行了
注意: 如果使用systemd,需启用DKMS服务,SysV用户不需启动。关于启动某项服务可参考systemd.

如果在64位系统上需要支持32位OpenGL,安装lib32-catalyst-utils.但要首先启用[multilib]软件库.

# pacman -S lib32-catalyst-utils

通过以下方式你还可以安装legacy版本的驱动。

从非官方软件库

如果你需要一些官方软件库没有提供的包而且不喜欢通过AUR来安装,则使用此方法。此软件库由Vi0L0维护。所有的包都经过签名,所以安全方面无需担心。下文提及的很多其他与AMD显卡有关的包也是由Vi0L0维护。

Vi0L0有两个软件库,每个拥有不同的驱动:

  • [catalyst]; Radeon HD 5xxx及更新的显卡使用的普通Catalyst驱动。
  • [catalyst-hd234k]; Radeon HD 2xxx, 3xxx and 4xxx显卡使用的旧版Catalyst驱动。
警告: 目前,旧版驱动不支持Xorg 1.13。AMD应该会在一二个世纪后添加支持,动作还算挺快的(呵呵)。确实要用此驱动,请查阅 #Xorg repositories以便了解如何回滚到Xorg 1.12.

启用上述软件库,可编辑/etc/pacman.conf,在其他软件库之前添加相应软件库。

# nano /etc/pacman.conf

添加 [catalyst], 如下:

[catalyst]
Server = http://catalyst.apocalypsus.net/repo/catalyst/$arch

添加 [catalyst-hd234k],如下:

[catalyst-hd234k]
Server = http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch

接着更新系统并安装Catalyst:

# pacman -Syu
# pacman -S catalyst catalyst-utils
注意: 当pacman询问是否移除libgl - 回答"Y"

如果在64位系统上需要支持32位OpenGL,安装lib32-catalyst-utils。启用[multilib]软件库后,通过如下命令安装:

# pacman -S lib32-catalyst-utils

两个软件库都提供其他能替代Catalyst的包,而且还为系统的multiple内核提供fglrx驱动模块:

  • Catalyst-generator; 该软件包能自动生成fglrx模块的配置文件。
  • Catalyst-hook;每当内核更新时,mkinitcpio会自动更新fglrx模块。
  • Catalyst-daemon; 功能跟Catalyst-hook和catalyst-dkms一样,每当内核更新时,会通过初始化脚本自动更新fglrx模块。systemd用户不需此软件.

Tools section可找到与以上软件包的更多细节. 最后,两者都提供xvba-videoAMDOverdriveCtrl。前者能提供视频硬解,后者可通过图形界面控制显卡频率。具体参见#GPU/Mem frequency, Temperature, Fan speed, Overclocking utilities

通过AUR安装

最后一种是通过AUR安装。如果你需为你的电脑进行定制安装,则用此方法。此方法极为繁琐,因为它需要的工作量最大,而且每次内核更新后你得手动更新Catalyst。

警告: 若通过AUR安装 Catalys, 每当内核更新,你得重装Catalyst。否则 启动X 服务会失败。
警告: 目前,旧版驱动不支持Xorg 1.13。AMD应该会在一二个世纪后添加支持,动作还算挺快的(呵呵)。确实要用此驱动,请查阅 #Xorg repositories 以便了解如何回滚到Xorg 1.12。

在 Vi0L0's 软件库中提到的一切软件包AUR中也可用::

AUR还提供些独家软件包。它含有被称为 Catalyst-total的包和一些牌beta阶段的软件:

Catalyst-total包能让AUR用户更为方便。它能构建驱动、内核工具、32位内核工具和Catalyst-hook(上面对其有说明)。

Catalyst-total-pxp让Catalyst对powerXpress提供实验性支持。

用AUR安装Catalyst 的更多信息,可参考 Installing from AUR

通过AMD的官方网站安装

警告: 此方法强烈不推荐!有可能造成文件冲突并导致X启动失败和丢失Arch-specific fixes。 若想尝试,你必须熟悉如何启动到命令行。
注意: 若你用此方安装了Catalyst,却不能进入桌面,可用如下命令将其卸载:
# /usr/share/ati/fglrx-uninstall.sh

1.)通过AMD官网或其他地方下载ati-driver-installer-*-*-x86.x86_64.run(*-* 是版本号)

2.) 给予执行权限: # chmod +x ati-driver*

3.) 确保你安装了vesa类的基本驱动并且要移除有冲突的驱动(i.e. xf86-video-ati)。

4.) 建立由/usr/src/linux/usr/src/{kernelsource}。 的符号连接. 64位用户还需建立/usr/lib64/usr/lib的符号连接。

5.) 确保安装环境已就绪: # pacman -Syu base-devel linux-headers

6.) 然后运行 # ./ati-driver-installer-*-*-x86.86_64.run (安装文件会展开到一个临时目录,安装脚本开始执行...)

若没提示严重错误...

7.) 检查 /usr/share/ati/fglrx-install.log中的记录. 安装日志也可能在/lib/modules/fglrx/make.{ker_version}.log文件中.

注意: 若修改过make脚本, 最好换一名称保存。否则将不能彻底删除Catalyst。

配置驱动

安装完毕后,要配置 X,让其使用Catalyst。要确保fglrx模块在启动阶段加载,而且要禁用kernel mode setting.

配置X

你需要创建 xorg.conf 文件来配置X. Catalyst提供了aticonfig工具来创建和(或)修改此文件。 通过访问/etc/ati/amdpcsdb文件它几乎能配置显卡的各项参数。了解完整的配置选项aticonfig可运行:

# aticonfig --help | less
警告: 在将各项配置参数提交到/etc/X11/xorg.conf之前使用--output选项,/etc/X11/xorg.conf.d中的所有内容都会被覆盖。
注意: 如果坚持使用xorg.conf.d下的新配置文件:为了让Device section与/etc/X11/xorg.conf.d/20-radeon.conf相匹配,在aticonfig后追加--output。但这有一个缺点,很多依赖xorg.conf的aticonfig选项都无法使用。

现在来配置 Catalyst. 若只有一个显示器,运行:

# aticonfig --initial

注意,若你使用双显示器则使用下面的命令。 此命令会成两个配置文件,第二个显示器的配置文件在第一个前面

# aticonfig --initial=dual-head --screen-layout=above
注意: 了解与设置双显有关的更多信息可查看#Double Screen (Dual Head / Dual Screen / Xinerama)

你可与Sample Xorg.conf上的任何一个示例文件进行对照。

虽然目前的版本的Xorg启动时能自动探测大多数选项,但不同Xorg版本的默认参数可能会有所不同,最好明确指定一些参数.

给一个示例配置 (注意) 仅供参考. 标'#'必须有,标'##'很可能会用到:

Section "ServerLayout"
        Identifier     "Arch"
        Screen      0  "Screen0" 0 0          # 0's are necessary.
EndSection
Section "Module"
        Load ...
        ...
EndSection
Section "Monitor"
        Identifier   "Monitor0"
        ...
EndSection
Section "Device"
        Identifier  "Card0"
        Driver      "fglrx"                         # Essential.
        BusID       "PCI:1:0:0"                     # Recommended if autodetect fails.
        Option      "OpenGLOverlay" "0"             ##
        Option      "XAANoOffscreenPixmaps" "false" ##
EndSection
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth    24
        SubSection "Display"
                Viewport   0 0
                Depth     24                        # Should not change from '24'
                Modes "1280x1024" "2048x1536"       ## 1st value=default resolution, 2nd=maximum.
                Virtual 1664 1200                   ## (x+64, y) to workaround potential OGL rect. artifacts/
        EndSubSection                               ## fixed in Catalyst 9.8
EndSection
Section "DRI"
        Mode 0666                                   # May help enable direct rendering.
EndSection
注意: 一旦升级Catalyst就要通过后面的方法删除amdpcsdb文件: 关闭X,删除/etc/ati/amdpcsdb,启动X然后运行amdcccle -否则amdcccle将会显示错误的Catalyst版本号

更多信息参考this thread.

启动时加载模块

不同的初始化系统(SysVinit和systemd)的设置方式不一样,但无论哪一种,都得在/etc/modprobe.d/modprobe.conf禁用radeon。具体可参见blacklisting in this article. 通过Arch官方安装Catalyst则无需此步骤,安装包会自动处理

注意: 强烈推荐使用systemd进行系统初始化,因为最新Arch安装镜像已默认使用systemd,通过rc.conf设置系统启动服务迟早会遭淘汰
在使用systemd上
  • 删除/etc/modules-load.d/下任何名称包含radeon的文件若该文件中含有其他多个模块,则只删除radeon)。
  • /etc/modules-load.d/的现有文件中添加fglrx或新建含有该行的文件。
在使用SysVinit上

编辑/etc/rc.conf:

  • 自MODULES中删除radeon
  • 在MODULES中添加 fglrx
注意: 若使用AGP接口的显卡还需添加agp

禁用KMS

由于Catalyst根本不使用KMS,得将其禁用。否则,当系统切换至tyy或在桌面环境下关机时,系统可能会冻结。

若使用GRUB Legacy,在menu.lst添加nomodeset给内核参数,如:

kernel /boot/vmlinuz-linux root=/dev/sda1 ro nomodeset

若使用GRUB 2,在/etc/default/grub添加nomodeset给内核参数,如:

GRUB_CMDLINE_LINUX="nomodeset"

然后以root身份运行;

# grub-mkconfig -o /boot/grub/grub.cfg

若使用Syslinux,在/boot/syslinux/syslinux.cfg添加nomodesetAPPEND行,如:

APPEND root=/dev/sda2 ro nomodeset

检查安装是否成功

重启电脑并登录, 运行下列命令可查看fglrx是否正确运行:

$ lsmod | grep fglrx
$ fglrxinfo

若两者均有输出, 安装成功。进行桌面环境并运行以下命令检查直接渲染模式是否启用:

$ glxinfo | grep direct

若显示"direct rendering: yes",恭喜你,到位了! 若无glxinfo命令,安装mesa-demos package。

警告: 最近几版Xorg,库函数路径变了,因此即使安装libGL.so也不一定能正确人加载。请检查GL是否工作,可阅读"Troubleshooting"段落

若有问题,参阅#Troubleshooting.

自我编译内核

在手动编译的内核上,你必须构建你自己catalyst-$kernel包.

如果你讨厌打包或毫无经验,可先阅读ABS

  1. Catalyst上获取PKGBUILDcatalyst.install文件。
  2. 编辑PKGBUILD. 两个地方需要修改:
    1. pkgname=catalyst 修改为 pkgname=catalyst-$kernel_name,$kernel_name可以随意取(如:custom, mm)。
    2. linux的依赖修改为$kernel_name
  3. 构建并安装软件包;运行makepkg -imakepkg,接着运行 pacman -U pkgname.pkg.tar.gz
注意: 如果在安装有多内核的系统上,你必须为所有内核安装Catalyst-utils包。这不会引起冲突
注意: Catalyst-generator能为你自动构建catalyst-{kernver},因此这些步骤根本就可省略。 请参考 Tools section.

Xorg软件库

Catalyst由于其缓慢的更新而被人大为诟病。因升级Xorg而造成两者不兼容是稀松平常的事。也就意味着Catalyst用户要么不升级Xorg要么使用一个只包含Xorg包的回溯软件库,该库中不提供更新版Xorg以确保兼容性。 Vi0L0提供好几个这样的库.

若想让pacman更新其他软件而不更新Xorg,查看skip package from being upgraded。不更新的软件是:

  • xorg-server-*
  • xorg-input-*
  • xorg-video-*

若要使用这类软件库,在/etc/pacman.conf的所有库(甚至Catalyst)前面添加下面中的一个 。

[xorg112]

截止目前,当前Catalyst 不支持1.13。

[xorg112]
Server = http://catalyst.apocalypsus.net/repo/xorg112/$arch

[xorg111]

低于 12.6的Catalyst不支持xorg-server 1.12。

[xorg111]
Server = http://catalyst.apocalypsus.net/repo/xorg111/$arch

工具

Catalyst-hook

Catalyst-hook是一个针对mkinitcpio的钩子。跟 catalyst-dkms一样,每当内核更新时,它会自动升级fglrx模块。在更新fglrx之前,它会尝试更新linux-headers

当更新内核时,钩子会调用catalyst_build_module命令来更新fglrx模块以使两者相匹配。此外,它还可调用catalyst_build_module remove来删除不需要的旧flgrx模块

注意: 若使用此功能,一定要 关注的内核的安装提示,Catalyst-hook会显示是否一切顺利。
注意: 若是自编译内核且使用非标准的mkinitcpio配置文件(如:linux-zen使用/etc/mkinitcpio-zen.conf),那必须在你非标准的配置文件中添加fglrx至 HOOKS行,以便当内核更新时能自动重新编译。
注意: If you aren't using the stock linux kernel at all and still want to use auto-recompilation, you should remove linux-headers from the SyncFirst list of /etc/pacman.conf after running 'catalyst_build_module auto'. If you also have custom linux-headers, you can swap linux-headers in the SyncFirst line with your custom one, for example linux-lts-headers.

Catalyst-generator

Catalyst-generator包能构建并安装fglrx模块,该模块与pacman兼容 的catalyst-${内核版本}相适应。与Catalyst-hook的区别是必须手动使用此命令,而Catalyst-hook则不需。

通过makepkg,它能构建catalyst-${内核版本}二进制包并用pacman安装。

非特权用户使用catalyst_build_module来构建并安装catalyst-${内核版本}包。安装时会提示输入root密码。

简单说一下如何使用此包:

  1. root用户: 使用catalyst_build_module remove。此举会删除无用的catalyst-{kernver} 包。
  2. 非特权用户: 使用catalyst_build_module ${内核版本}, ${内核版本}是指升级过后的内核版本。也可通过catalyst_build_module all为所有安装的内核构建catalyst-${内核版本}。
  3. 若要删除catalyst-generator, 在使用catalyst_build_module remove_all命令删除catalyst-generator之前最好切换到root用户,这会删除得极为彻底。

当删除Catalyst-generator时,Catalyst-generator不能自动删除那些catalyst-{内核版本}包,这是因为pacman不允许有一个以上的实例同时运行。若在使用pacman -R catalyst-generator前忘记运行catalyst_build_module remove_all, catalyst-generator将会询问删除catalyst-generator自身后要删除哪个catalyst-{内核版本}包。

注意: 在构建catalyst-{内核版本}时,若看到下列警告,乃正常情况,不必莫名惊诧:

WARNING: Package contains reference to $srcdir

WARNING: '.pkg' is not a valid archive extension

Catalyst-daemon

警告: 由于systemd与普通initscript daemons不兼容,所以systemd用户不能使用此工具。

每次启动时,Catalyst-daemon守护进程会检查内核是否更新过。若更新过,它会重建fglrx模块;若没有,则加载前次构建的模块。在2.4 GHz CPU电脑上,整个过程只需20ms。

Catalyst-daemon的自动重新编译功能是通过一个叫autofglrx的初始化脚本实现的。Autofglrx的检查方式为比较启动内核(由uname -v提供)和使用当前fglrx模块内核的构建时间。之所以能这样比较,是因为编译时,它将uname -v的信息添加到fglrx模块描述里。

重构过程中,autofglrx会调用catalyst_build_module构建模块,调用catalyst_build_module remove删除老旧无用的fglrx模块。运行后,它并不会一直驻留在系统内存。

注意: 安装autofglrx后,在/etc/rc.confautofglrx添加到DAEMONS。要将它放在DM(显示管理器)之前(若是通过此配置运行DM)并且不要在后台运行(不能在其前添加@符号)。
注意: 若使用你自己的编译标识导致此工具有问题 - 请将你的标识写入/usr/bin/catalyst_build_module文件。

Features

Tear Free Rendering

Catalyst 11.1中,很可能是添加了三重缓存和v-sync,Tear Free Desktop减少了2D,3D视频应用的屏幕撕裂毛病。但这需要额外的GPU处理。

要启用'Tear Free Desktop',运行amdcccle,然后设置Display OptionsTear Free

或以root身份运行:

# aticonfig --set-pcs-u32=DDX,EnableTearFreeDesktop,1

若禁用,使用amdcccle或以root身份运行:

# aticonfig --del-pcs-key=DDX,EnableTearFreeDesktop

视频加速

Video Acceleration API (VA API)是为基于Linux/UNIX操作系统提供利用GPU加速视频处理的一个开源函数库和应用程序接口规范。启用视频加速后,通过各种入口(VLD, IDCT, Motion Compensation, deblocking)它能加速常用编码标准(MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3)视频文件的解码过程(俗称硬解)。

VA-API在xvba-videoAUR上有一个私有后端(2009年10月), 它允许使用VA-API的程序通过XvBA (X-Video Bitstream Acceleration API designed by AMD)函数库来充分利用拥有uvd2(第二代通用视频解码单元)芯片组的视频加速功能.

xvba-video和支持XvBA的软件仍还在开发,但在大多数情况下它都能很好的工作. 通过AUR构建或直接通过[community]安装xvba-videoAUR包,并安装mplayer-vaapi and libva。然后将视频播放器的视频输出设置为vaapi:gl:

$ mplayer -vo vaapi:gl movie.avi

此选项可添加到mplayer的配置文件,参考MPlayer

针对 smplayer:

Options → Preferences → General → Video (tab) → Output driver: User Defined : vaapi:gl
Options → Preferences → General → Video (tab) → Double buffering on
Options → Preferences → Advanced → Options for MPlayer → Options: -vo vaapi
Options → Preferences → General → General → Screenshots → Turn screenshots off
Options → Preferences → Performance → Threads for decoding (Set your CPU(s) number)
注意: 如果启用了Tear Free Desktop,则按下列步骤:
Options -> Preferences -> General -> Video (tab) -> Output driver: vaapi

若视频输出中没有vaapi:gl选项 - 可使用:

vaapi, vaapi:gl2 or 简单的 xv(0 - AMD Radeon AVIVO Video).

针对 VLC:

Tools → Preferences → Input & Codecs → Use GPU acceleration

它有助于在amdcccle中启用v-sync:

3D → More Settings → Wait for vertical refresh = Always On
注意: 若使用Compiz/KWin,消除画面抖动的唯一方法就是切换至全屏并且 关闭Redirected Fullscreen。 使用compiz,需在ccsm的General Options中设置Redirected Direct Rendering。若此举无效,则将其关闭。KWin默认关闭此功能,若出现画面抖动则通过System Settings → Desktop Effects → Advanced将"Suspend desktop effects for fullscreen windows"开启或关闭。

显卡/显存频率, 温度, 风扇转速, 超频工具

$ aticonfig --od-getclocks可以获知当前显卡/显存频率。

$ aticonfig --pplib-cmd "get fanspeed 0"可以获知风扇转速(显卡);

$ aticonfig --odgt可以获知显卡温度。

$ aticonfig --pplib-cmd "set fanspeed 0 50"可以设置风扇转速,其中查询索引50代表速度百分比。

若超频或与之相反,则使用图形工具反而相对容易些,如需要qt的ATi Overclocking Utility

i686版在here;x86_64版在here。下载后直接运行。 更复杂AMDOverdriveCtrl也能达到此目的,它的主页是here。可通过AUR或Vi0L0's非官方软件库构建安装包。

双屏显示

介绍

警告: 由于安装方式的不同,并且每种安装方式需要与其相对应进行配置,因此设置双屏显示并没有特定的解决办办法。这也是你必须根据你自己的需要采用相应步骤的原因。当然可以多尝试几种方法。所以,在修改之前,将你的配置保存到/etc/X11/xorg.conf,以便遇到问题是你可以从命令行恢复。
  • 本节讲述如何配置"BIG Desktop"效果。主要是不同尺寸的屏幕如何通过两个不同的输出接口(DVI + HDMI)共享一个显卡。
  • Xinerama解决办法有些不便,尤其是不能与XrandR兼容。因为XrandR对于我们所讲的来说是必须的,所以不使用Xinerama。
  • 双头显示能让你有两个不同的会话(一个屏幕一个)。你可以随心所欲地干任何事情,但不能将窗口从一个屏幕移动到另一个屏幕。若只有一个屏幕,你得在Xorg会话里为Server Layout section的每个会话定义鼠标,具体方法查看:

ATI Documentation

ATI Catalyst Control Center

ATI的图形工具非常有用,我们将尽可能地使用它。运行下面命令可启用它:

$ {kdesu/gksu} amdcccle
警告: 千万不要直接使用sudo。 Sudo虽能给予管理员权限,却使用用户账户的信息(如环境变量)。GNOME下使用gksu,KDE下使用kdesu

安装

开始之前,确保你的硬件接插正确,电源开启,而且你得你的硬件属性(2D还是3D屏,屏幕尺寸,刷新率等)。通常情况下,在启动阶段两个显示器都会被识别却不需正确区分先后顺序,而是依赖热插拔功能。尤其在不使用(/etc/X11/xorg.conf)配置时。

首先要让你的桌面环境和X认识你的显示器。为此,要为你两个显示器生成基本的Xorg配置文件:

# aticonfig --initial --desktop-setup=horizontal --overlay-on=1

# aticonfig --initial=dual-head --screen-layout=left

{{注意|overlay非常重要,因为它能让两个显示器拥有1种(多种)像素。

提示: 运行aticonfig --help了解所有可用的命令。

现在可编辑基本的Xorg配置文件(如:添加分辨率)。分辨率一定要正确,尤其是使用不同尺寸的显示器。分辨率在"Screen" section:

SubSection "Display"
Depth 24
Modes "X-resolution screen 1xY-resolution screen 1" "Xresolution screen 2xY-resolution screen 2"
EndSubSection

这以后就不需手动编辑xorg.conf,而ATI的图形化工具。重启X,确保正确支持两个显示器和识别屏幕分辨率(两个屏幕相互独立而不是完全一样。

设置

现在只需以root身份启动ATI控制中心,在显示菜单设置你需要的选项(下拉菜单中的小箭头)。设置好后重启X就大功造成(你和我都可松口气了,这段翻译有点难度,呵呵)!

重启X之前,不要忘了核实xorg.conf。主要是核实"Display"下的"Screen"节, 在"Virtual"行里,两个显示器的分辨率应该一样。"Server Layout"节则是剩下的参数。

故障排除

若能启动到命令行,问题很可能出在/etc/X11/xorg.conf

可阅读/var/log/Xorg.0.log或通过下列命令查找线索:

$ grep '(EE)' /var/log/Xorg.0.log
$ grep '(WW)' /var/log/Xorg.0.log

若看不懂显示的是什么东东,可将其提交到support thread on the forums论坛,注意要提交两者显示的信息。

在Wine上3D应用冻结

若在Wine上3D应用挂起,禁用TLS。使用aticonfig或编辑/etc/X11/xorg.conf。使用aticonfig:

# aticonfig --tls=off

或以root身份打开/etc/X11/xorg.conf,在Device段添加Option "UseFastTLS" "off"

只需来个二选一,然后重启X让其生效。

视频颜色不正常

仍然使用vaapi:gl来防止画面抖动,但这样不会有视频加速:

  • 不使用-vo vaapi运行mplayer
  • 若是smplayer,在Options → Preferences → Advanced → Options for MPlayer → Options:中删除-vo vaapi

此后还可以启动smplayer的截屏功能。

KWin and composite

根据你的显卡,在OpenGL和XRender渲染方式中选择一种更快的。在某些情况下,XRender还可以解决一些人为的错误。

重启或启动x后,黑屏并且一直不退出

检查在启动加载器的内核参数行是否添加了nomodeset(参考 #Disable kernel mode setting)。

错误的ACPI硬件调用

出现此种错误很可能是fglrx模块与系统的ACPI硬件调用配合不够默契而自身禁用,屏幕也就不会有输出。

果真那样,运行:

$ aticonfig --acpi-services=off

注销后KDM消失

若使用Catalyst,当注销后你会获取tty1这个控制台而不是KDM的欢迎界面。每次注销后你必须让kdm重启X服务器:

$ sudo nano /usr/share/config/kdm/kdmrc

将标题为[X-:*-Core]段里下面行前的注释删掉:

TerminateServer=True

当前注销KDE后KDM就会出现。

直接渲染无效

警告: 在安装或升级catalyst后却没重启系统,也有可能出现此种错误,因为系统需要加载fglrx.ko模块来让驱动正常工作。

若直接渲染有问题,运行:

$ LIBGL_DEBUG=verbose glxinfo > /dev/null

从此命令输出的第一行至末尾都与直接渲染无效有关,且非常详细。

常见错误提示和解决办法:

libGL error: XF86DRIQueryDirectRenderingCapable returned false
  • 若使用AGP的芯片组,确保加载fglrx模块之前加载正确的agp模块。要确定哪些agp模块,先运行hwdetect --show-agp,若使用SysVinit,则将之前命令所列的模块名称添加到rc.conf的MODULES=行(若有fglrx, 则要全位于fglrx之前);否则,打开/etc/modules-load.d下的fglrx.conf,将agp模块添加到fglrx行之前
libGL error: failed to open DRM: Operation not permitted
libGL error: reverting to (slow) indirect rendering
libGL: OpenDriver: trying /usr/lib/xorg/modules/dri//fglrx_dri.so
libGL error: dlopen /usr/lib/xorg/modules/dri//fglrx_dri.so failed
(/usr/lib/xorg/modules/dri//fglrx_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to find driver: fglrx_dri.so
  • 某些软件未正确安装。在错误提示中,若路径为/usr/X11R6/lib/modules/dri/fglrx_dri.so,彻底注销,然后重新登录。若使用图形化的登录管理器(gdm, kdm, xdm),确保每次登录时/etc/profile都会被读取。将source /etc/profile添加到~/.xsession~/.xinitrc通过都达到以上目的(不同的登录管理器修改的文件不一样)。
  • 若路径为/usr/lib/xorg/modules/dri/fglrx_dri.so,试着重装catalyst包。

若错误信息为:

fglrx: libGL version undetermined - OpenGL module is using glapi fallback

可能是因为系统装了多个版本的libGL.so,运行:

$ sudo updatedb
$ locate libGL.so

结果如下:

$ locate libGL.so
/usr/lib/libGL.so
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2

系统应只有3个libGL.so文件,若不止(例如/usr/X11R6/lib/libGL.so.1.2),则将其删除。

若使用X11R7且系统中有下列文件,系统并不会给出任何错误提示,一定要将他们删除:

/usr/X11R6/lib/libGL.so.1.2
/usr/X11R6/lib/libGL.so.1

休眠问题

视频播放不能从休眠状态中恢复

若启动了framebuffer,Catalyst不能从挂机状态中恢复。在内核参数选项中添加vga=0可禁用framebuffer。如在Grub Legacy的/boot/grub/menu.lst:

kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/sda2 ro quiet vga=0

其他加载器,参考#Disable kernel mode setting

系统冻结或硬件锁死

  • 过去,radeonfb的framebuffer驱动很容易导致这个问题。若内核编译时启用对radeonfb的支持,应换内核看是否能解决此问题。
  • 若退出桌面环境(关机、挂机和切换到tty等)时系统冻结,很可能忘记禁用KMS。(参见 #Disable kernel mode setting)

硬件冲突

当和某些版本的nForce3芯片组一起使用时,Radeon不能3D加速。目前虽还未找到具体原因,但有资料表明: indicate that it may be possible to get acceleration with this combination of hardware by booting with the drivers from 先用nVIDIA驱动启动到Windows然后再重启系统就可能获得3D加速。在root控制台使用下列命令可识别此问题:

$ dmesg | grep agp

与下列相似(使用基于nForce3系统)的输出:

    agpgart: Detected AGP bridge 0
    agpgart: Setting up Nforce3 AGP.
    agpgart: aperture base > 4G

或以下命令...

$ tail -n 100 /var/log/Xorg.0.log | grep agp

...与下面相似的输出:

(EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"

则就有问题。

有些资料说在某些情形下降级主板的BIOS可能有助于解决问题,但注意此方法并不是在各种情况下都适用,而且方法不对则很可能让显卡报废。

参考this bugreport

播放视频时系统短时间死机

使用Catalyst可导致此问题。

当用mplayer,若不定时出现几秒到几分钟的死机。查看 /var/log/messages.log,若有与下面相似的信息:

Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<f8bc628c>] ? ip_firegl_ioctl+0x1c/0x30 [fglrx]
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<c0197038>] ? vfs_ioctl+0x78/0x90
Nov 28 18:31:56 pandemonium [<c01970b7>] ? do_vfs_ioctl+0x67/0x2f0
Nov 28 18:31:56 pandemonium [<c01973a6>] ? sys_ioctl+0x66/0x70
Nov 28 18:31:56 pandemonium [<c0103ef3>] ? sysenter_do_call+0x12/0x33
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium =======================

给内核参数添加nopat,至少在我的电脑上此方法适用。

"aticonfig: No supported adaptaters detected"

若运行:

# sudo aticonfig --initial

输出:

aticonfig: No supported adaptaters detected

但你确实有AMD的显卡(or APU),在etc/X11/xorg.conf中设置device就可能让Catalyst正常工作。

/etc/X11/xorg.conf将device段设置为:

Section "Device"
 Identifier "ATI radeon ****"
 Driver "fglrx"
EndSection

此处****为设备型号(6870 for the HD 6870的显卡为6870,APU E-350为6310,通过网络是很容易查到的).

Xorg启动后很可能使用amdcccle而不是aticonfig。这里会有一个"AMD不支持硬件"水印。

用下面脚本可将此水印删除:

#!/bin/sh
DRIVER=/usr/lib/xorg/modules/drivers/fglrx_drv.so
for x in $(objdump -d $DRIVER|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
 sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
done

然后重启。

让chromium支持WebGL

在Google的Chromium/Chrome浏览器里,Linux的Catalyst驱动被列入了黑名单。 编辑/usr/share/applications/chromium.desktop文件,添加--ignore-gpu-blacklist标识到Exec行,它看起来应像下面这样:

Exec=chromium %U --ignore-gpu-blacklist

也可在终端中用相同的标识运行chromium:

$ chromium --ignore-gpu-blacklist
警告: Catalyst并不支持GL_ARB_robustness扩展,因此一些恶意网站可能使用WebGL对你的显卡发动DoS攻击。参考this.

用阿道比(就是Adobe,网友的搞笑翻译)的flashplugin观看flash,画面迟滞或冻结

/etc/adobe/mms.cfg编辑为下面这样(也就是禁用的硬件加速):

#EnableLinuxHWVideoDecode=1
OverrideGPUValidation=true

GNOME3中移动窗口很慢

大多数情况下,此方法有效。

将下面行添加到~/.profile/etc/profile:

export CLUTTER_VBLANK=none

重启X或操作系统。

在1920x1080分辨率下不能全屏

ATI 默认开启了屏幕缩放,在 xorg.conf 的 Monitor 段中加入:

Option      "DPMS" "true"

完整例子如下:

Section "Monitor"
        Identifier   "0-DFP5"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "1920x1080"
        Option      "TargetRefresh" "60"
        Option      "Position" "0 0"
        Option      "Rotate" "normal"
        Option      "Disable" "false"
EndSection