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

From ArchWiki
Jump to: navigation, search
m (从非官方软件库: :标记为小贴士,参见Help:Style (简体中文))
Line 70: Line 70:
 
  # pacman-key --lsign-key 0xabed422d653c3094
 
  # pacman-key --lsign-key 0xabed422d653c3094
  
有时 catalyst.wirephire.com 因为超出带宽上限而不能提供下载(曾发生过这个问题).为解决这个问题,Yanom 提供了另一个镜像服务器 [http://70.239.162.206/catalyst-mirror] . 不过这个服务器不保证随时可用.
+
{{小贴士|有时 catalyst.wirephire.com 因为超出带宽上限而不能提供下载(曾发生过这个问题).为解决这个问题,Yanom 提供了另一个镜像服务器 [http://70.239.162.206/catalyst-mirror] . 不过这个服务器不保证随时可用.
  
*To Use:
+
*添加如下内容:
  
 
  [catalyst]
 
  [catalyst]
Line 82: Line 82:
 
  [catalyst-hd234k]
 
  [catalyst-hd234k]
 
  <nowiki>Server = http://70.239.162.206/catalyst-mirror/repo/catalyst-hd234k/$arch</nowiki>
 
  <nowiki>Server = http://70.239.162.206/catalyst-mirror/repo/catalyst-hd234k/$arch</nowiki>
 +
}}
  
 
完成后更新pacman数据库并安装软件包:
 
完成后更新pacman数据库并安装软件包:

Revision as of 02:53, 15 July 2013

Tango-preferences-desktop-locale.png本页面需要更新翻译,内容可能已经与英文脱节。要贡献翻译,请访问简体中文翻译组Tango-preferences-desktop-locale.png

附注: 需要完成翻译
翻译状态: 本文是英文页面 AMD_Catalyst翻译,最后翻译时间:2013-07-12,点击这里可以查看翻译后英文页面的改动。

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary heading Template:Article summary link Template:Article summary link Template:Article summary end

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

AMD曾经将“catalyst”驱动命名为“fglrx” (FireGL and Radeon X). 现在虽然名为“catalyst”,但内核模块名称依然为“fglrx.ko”. 因此,下文中任何提及fglrx 都是指“内核模块”,而不是指软件包.

自2013年4月26日,官方仓库不再提供Catalyst。 Catalyst 曾被移出Arch官方支持,原因是对质量与开发速度的不满。这次移出官方库是由于它和Xorg 1.14不兼容.

与开源驱动相比, Catalyst在2D图形加速上不及,但在3D渲染和电源管理上更胜一筹. 支持设备为 ATI/AMD Radeon显卡,芯片组 R600 及以上(Radeon HD 2xxx或者更新). model名称 (如X1900, HD4850) 与 chip名称 (分别是R580, RV770)间的对照请参见Xorg decoder ring或者这个表格.

Contents

安装

共有三种途径安装Catalyst。第一种是用Vi0L0(Arch非官方Catalyst维护人员)维护的软件库.此库包涵了所有可用的软件包.第二种方式就是通过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

从非官方软件库

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

Vi0L0有三个不同的Catalyst软件库:

  • [catalyst]; Radeon HD 5xxx及更新的显卡使用的普通Catalyst驱动。包含了最新的 (稳定版或者beta版) Catalyst;
  • [catalyst-stable]; Radeon HD 5xxx及更新的显卡使用的普通Catalyst驱动。包含了最新的稳定版 Catalyst;
  • [catalyst-hd234k*[catalyst]; Radeon HD 2xxx, 3xxx and 4xxx显卡使用的legacy Catalyst驱动
警告: legacy Catalyst不支持Xorg 1.13. 要使用此驱动的话,参见 #Xorg repositories 来回滚到 Xorg 1.12.
注意: Catalyst beta版驱动 13.6 已经支持Xorg 1.14。

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

# nano /etc/pacman.conf

添加 [catalyst], 添加如下:

[catalyst]
Server = http://catalyst.wirephire.com/repo/catalyst/$arch	

添加 [catalyst-stable],添加如下:

[catalyst-stable]
Server = http://catalyst.wirephire.com/repo/catalyst/$arch

添加 [catalyst-hd234k],添加如下:

[catalyst-hd234k]
Server = http://catalyst.wirephire.com/repo/catalyst-hd234k/$arch

你必须 添加Vi0L0的GPG key ,pacman才会信任这些软件仓库.

# pacman-key --keyserver pgp.mit.edu --recv-keys 0xabed422d653c3094
# pacman-key --lsign-key 0xabed422d653c3094
提示: 有时 catalyst.wirephire.com 因为超出带宽上限而不能提供下载(曾发生过这个问题).为解决这个问题,Yanom 提供了另一个镜像服务器 [1] . 不过这个服务器不保证随时可用.
  • 添加如下内容:
[catalyst]
Server = http://70.239.162.206/catalyst-mirror/repo/catalyst/$arch
[catalyst-stable]
Server = http://70.239.162.206/catalyst-mirror/repo/catalyst/$arch
[catalyst-hd234k]
Server = http://70.239.162.206/catalyst-mirror/repo/catalyst-hd234k/$arch

完成后更新pacman数据库并安装软件包:

# pacman -Syu
# pacman -S catalyst catalyst-utils
注意: 当pacman询问是否移除libgl - 回答"Y"
警告: Vi0L0软件仓库的Catalyst仅是为一个内核编译。Vi0L0越来越难跟上内核更新的步伐,我们也发现论坛上很多用户询问该怎么办. 解决方法
a) 等待Vi0L0为新内核重编译Catalyst,
b) 你自己完成这个工作,或者...
c) 别更新内核.
最方便的做法是b,别担心不是手动,使用Vi0L0的利器 #Catalyst-hook.

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

# pacman -S lib32-catalyst-utils

软件库还提供其他能“替代”Catalyst的包:

  • catalyst-generator; 该软件包能自动生成fglrx模块的配置文件。this package is able to generate fglrx modules packed into pacman compliant packages - most secure and KISS-compatible package in this side-note, although it has to be operated manually. 参见 #Catalyst-generator
  • catalyst-hook; 一个systemd服务,每当系统关机或重启后自动升级fglrx模块. 参见 #Catalyst-hook

工具 部分可找到与以上软件包的更多细节. 最后, 两个仓库都提供 xvba-video 包 (这个包提供视频加速, 参见 #视频加速), AMDOverdriveCtrl (控制超频/降频的图形界面程序,参见#显卡/显存频率, 温度, 风扇转速, 超频工具) 和为OpenCL/OpenGL 开发者提供的一组工具(参见 #OpenCL / OpenGL 开发)。

通过AUR安装

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

警告: 若通过AUR安装 Catalys, 每次内核更新你都得重新编译Catalyst,否则X将不能启动。

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

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

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

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

直接通过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)。安装与移除操作详见pacman.

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
注意: 如果对PowerXpress有疑问,安装 catalyst-total-pxpAUR.

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

# aticonfig --initial=dual-head --screen-layout=above
注意: 了解与设置双显有关的更多信息可查看#双屏显示

你可与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版本号

更多信息参考这里.

启动时加载模块

禁用radeon以防其自动加载. 在/etc/modprobe.d/modprobe.conf里禁用radeon,同时保证它不被/etc/modules-load.d/里的文件加载. 详见kernel modules#Blacklisting.

接下来,使模块fglrx自动加载. 添加fglrx/etc/modules-load.d/下已有的模块文件的新一行,或者创建一个新的模块文件并添加fglrx.

禁用KMS

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

添加 nomodeset 到你的 内核参数. 例如:

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

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

若使用GRUB,在/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。

注意: 对于glxgears,你也可以使用:
$ fgl_glxgears

来测试fglrx.

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

若有问题,参阅#故障排除.

自我编译内核

在手动编译的内核上,你必须构建你自己的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},因此这些步骤根本就可省略。 请参考 工具 部分.

PowerXpress support

PowerXpress technology allows switching notebooks with dual-graphic capability from integrated graphics (IGP) to discrete graphics either to increase battery life or to achieve better 3D rendering capabilities.

To use such functionality on Arch you will have to:

  • Get and build catalyst-total-pxpAUR package from the AUR, or
  • Install catalyst-utils-pxp package from the [catalyst] repository (plus additional lib32-catalyst-utils-pxp, if needed).

To perform a switch into Intel's IGP you will also have to install the mesa-libgl package and Intel's drivers: xf86-video-intel and intel-dri.

Note: With the latest version of Catalyst, version 13.1 (not Catalyst legacy) ChrisXY was able to work on the newest xorg-server (version 1.13.1), mesa 9.0.1 and xf86-video-intel 2.20.18.

On any version of Catalyst below 13.1 (and all versions of Catalyst legacy) there are some problems with the new Intel drivers and the last noted working version of xf86-video-intel is 2.20.2-2, so you will probably have to downgrade from the latest version that you have gotten from Arch's repositories (although we recommend to test the newest one before downgrading - there's always some possibility that it will work).

xf86-video-intel 2.20.2-2 works only with xorg-server 1.12 and so it is a part of the xorg112 repository. If you want to use it you will have to downgrade xorg-server as well. For information on this, see #Xorg repositories.

Now you can switch between the integrated and the discrete GPU, using these commands:

# aticonfig --px-igpu    #for integrated GPU
# aticonfig --px-dgpu    #for discrete GPU

Just remember that fglrx needs /etc/X11/xorg.conf configured for AMD's card with 'fglrx' inside.

You can also use the pxp_switch_catalyst switching script that will perform some additional usefull operations:

  • Switching xorg.conf - it will rename xorg.conf into xorg.conf.cat (if there's fglrx inside) or xorg.conf.oth (if there's intel inside) and then it will create a symlink to xorg.conf, depending on what you chose.
  • Running aticonfig --px-Xgpu.
  • Running switchlibGL.
  • Adding/removing fglrx into/from /etc/modules-load.d/catalyst.conf.

Usage:

# pxp_switch_catalyst amd
# pxp_switch_catalyst intel

If you have got problems when you try to run X on Intel's driver you may try to force "UXA" acceleration; just make sure that your xorg.conf for Intel's GPU got Option "AccelMethod" "uxa", like here:

Section "Device"
        Identifier  "Intel Graphics"
        Driver      "intel"
        #Option      "AccelMethod"  "sna"
        Option      "AccelMethod"  "uxa"
        #Option      "AccelMethod"  "xaa"
EndSection

Running two X servers (one using the Intel driver, another one using fglrx) simultaneously

Because fglrx is crash-prone (regarding PowerXpress), it could be a good idea to use the Intel driver in the main X server and have a secondary X server using fglrx when 3D acceleration is needed. However, simply switching to the discrete GPU from the integrated GPU using aticonfig or amdcccle will cause all sorts of weird bugs when starting the second X.

To run two X servers at the same time (each using different drivers), you should firstly set up a fully working X with Catalyst and then move its xorg.conf to a temporary place (for example, /etc/X11/xorg.conf.fglrx. The next time X is started, it will use the Intel driver by default instead of fglrx.

To start a second X server using fglrx, simply move xorg.conf back to the proper place (/etc/X11/xorg.conf) before starting X. This method even allows you to switch between running X sessions. When you are done using fglrx, move xorg.conf somewhere else again.

The only disadvantage of this method is not having 3D acceleration using the Intel driver. 2D acceleration, however, is fully functional. Other than that, this will provide us with a completely stable desktop.

Xorg软件库

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

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

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

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

[xorg113]

Catalyst 不支持 xorg-server 1.14.

[xorg113]
Server = http://catalyst.wirephire.com/repo/xorg113/$arch

[xorg112]

Catalyst < 12.10 和 Catalyst Legacy 不支持 xorg-server 1.13.

[xorg112]
Server = http://catalyst.wirephire.com/repo/xorg112/$arch

[xorg111]

Catalyst < 12.6 不支持 xorg-server 1.12.

[xorg111]
Server = http://catalyst.wirephire.com/repo/xorg111/$arch

工具

Catalyst-hook

Catalyst-hookAUR 是一个 systemd 服务,它在系统关机或重启后重新构建fglrx模块(如果需要的话,比如内核升级后).

使用之前请保证 base-devel 组和 linux-headers 包(对应你的内核)已经安装.

只需激活catalyst-hook.service服务即可:

# systemctl enable catalyst-hook
# systemctl start catalyst-hook

你也可以用这个软件包来手动构建fglrx模块. 在内核更新后运行 catalyst_build_module 脚本即可:

# catalyst_build_module all

一些技术细节:

The catalyst-hook.service is stopping the systemd "river" and is forcing systemd to wait until catalyst-hook finishes its job.

catalyst-hook.service 调用 catalyst_build_module check 来检查是否有必要重构建fglrx.

check 检查fglrx模块是否存在:

  • 不存在,将构建它;
  • 存在,它将比较两个参数来确定是否有必要重构建fglrx.

这里的参数是 /usr/lib/modules/<kernel_version>/build/Module.symvers 的md5值. (因为我(这里指Vi0L0)发现每一个版本的这个文件都不一样). 第一个参数是现有的 Module.symvers 文件md5.第二个参数是fglrx模块构建时 Module.symvers 文件的md5. 这个参数被catalyst_build_module脚本编译到fglrx模块.

如果参数不同,将编译新的fglrx模块.

check 检查整个 /usr/lib/modules/ 目录 ,为安装的所有内核编译fglrx模块(如果需要的话). 如果没有必要构建或重构建,进程将很快结束.

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-generator 是最安全的,最符合KISS原则的,因为:

  1. 你可以使用非特权用户来构建包;
  2. 它在 fakeroot 环境构建包;
  3. 它不乱丢文件,pacman知道文件们在哪;
  4. 你需要做的只是,记得去使用它
注意: 在构建catalyst-{内核版本}时,若看到下列警告,乃正常情况,不必莫名惊诧:

WARNING: Package contains reference to $srcdir

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

OpenCL / OpenGL 开发

Since years AMD is working on tools for OpenCL and OpenGL developement.

Now under the banner of "Heterogeneous Computing" AMD is providing even more of them, fortunately most of their computing tools are available also for Linux.

In the AUR and the [catalyst] repositories you will find packages that represent the most important work from AMD, namely; amdapp-aparapi, amdapp-sdk and amdapp-codexl.

APP shortcut stands for Accelerated Parallel Processing.

amdapp-aparapi

AMD's Aparapi is an API for expressing data parallel workloads in Java and a runtime component capable of converting the Java bytecode of compatible workloads into OpenCL so that it can be executed on a variety of GPU devices. If Aparapi can’t execute on the GPU, it will execute in a Java thread pool.

You can find more information about Aparapi here.

amdapp-sdk (formerly known as amdstream)

The AMD APP Software Development Kit (SDK) is a complete development platform created by AMD to allow you to quickly and easily develop applications accelerated by AMD APP technology. The SDK provides samples, documentation and other materials to quickly get you started leveraging accelerated compute using OpenCL, Bolt, or C++ AMP in your C/C++ application.

Since version 2.8 amdapp-sdk is providing aparapiUtil as well as aparapi's samples. A package is available on the [catalyst] repository; it depends on the amdapp-aparapi package. The AUR's package will let you decide whether you want aparapi's additions or not.

Version 2.8 does not provide Profiler functionality, it has been moved to CodeXL.

You can find more information about AMD APP SDK here.

amdapp-codexl

CodeXL is an OpenCL and OpenGL Debugger and Profiler, with a static OpenCL kernel analyzer. It's a GUI application written atop of the well known gDEBugger and is available only for x86_64 systems.

You can find more informations about CodeXL here.

功能

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 → General → General → Screenshots → Turn screenshots off
Options → Preferences → Performance → Threads for decoding: 1 (to turn off -lavdopts parameter)
注意: 如果启用了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 accelerated decoding

它有助于在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。你可以从这儿找到(不过它可能过时了).

更复杂的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"节则是剩下的参数。

Uninstallation

If for any reason this driver is not working for you or if you simply want to try out the open source driver, remove the catalyst and catalyst-utils packages. Also you should remove catalyst-generatorAUR, catalyst-hookAUR and lib32-catalyst-utilsAUR packages if they have been installed on your system.

Warning:
  • You may need to use pacman -Rdd to remove catalyst-utilsAUR (and/or lib32-catalyst-utilsAUR) because that package contains gl related files and many of your installed packages depend on them. These dependencies will be satisfied again when you install xf86-video-ati.
  • You may need to remove /etc/profile.d/ati-flgrx.sh and /etc/profile.d/lib32-catalyst (if it exists on your system), otherwise r600_dri.so will fail to load and you would not have 3D support.
Note: You should remove unofficial repositories from your /etc/pacman.conf and run pacman -Syu, because those repositories include out-dated Xorg packages to allow use of catalyst and the xf86-video-ati package needs up-to-date Xorg packages from the Official repositories.

Also follow these steps:

  • If you have the /etc/modprobe.d/blacklist-radeon.conf file remove it or comment the line blacklist radeon in that file.
  • If you have a file in /etc/modules-load.d to load the fglrx module on boot, remove it or comment the line containing fglrx.
  • Make sure to remove or backup /etc/X11/xorg.conf.
  • If you have installed the catalyst-hookAUR package, make sure to disable the systemd service.
  • If you have installed the catalyst-generatorAUR package, make sure to remove "fglrx" from the "MODULES" array of /etc/rc.conf in case the post-removal script of the package doesn't work.
  • If you used the "nomodeset" option in your configuration file in kernel parameters line and plan to use KMS, remove it.
  • Reboot before installing another driver.

故障排除

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

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

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

若看不懂显示的是什么东东,请先搜索论坛,没有结果的话,可将其提交到thread specific to ATI/AMD,注意要提交两者显示的信息。

在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(参考 #禁用KMS)。 你如果在使用legacy驱动 (catalyst-hd234k) 黑屏的话, 尝试降级 xorg-server 到 1.11 (使用 [xorg111] 库).

错误的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
  • Ensure that you are loading the correct agp modules for your AGP chipset before you load the fglrx kernel module. To determine which agp modules you'll need, run hwdetect --show-agp. Then open your fglrx.conf file in /etc/modules-load.d and add the agp module on a line before the fglrx line.
  • 若使用AGP的芯片组,确保加载fglrx模块之前加载正确的agp模块。要确定哪些agp模块,运行hwdetect --show-agp,然后打开/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.下面的命令应该得到这样的回显:

$ locate libGL.s

 /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

其他加载器,参考#禁用KMS

系统冻结或硬件锁死

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

硬件冲突

当和某些版本的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,或者复制以前的能工作的 /etc/ati/control 文件 (推荐 - 这也能解决水印的问题),就可能让Catalyst正常工作.

从AMD下载先前版本的fglrx,使用"--extract driver"参数运行. 文件将提取到 driver/common/etc/ati/control. 用它覆盖原来的control文件后重启X. 你可以试试不同版本的.

设置device的方法:在/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

如果你使用KDE,请确保 系统设置->工作空间外观与行为->桌面效果->高级 里,"为全屏窗口挂起桌面特效" 没有勾选.

GNOME3中移动窗口很慢

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

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

export CLUTTER_VBLANK=none

重启X或操作系统。

在1920x1080分辨率下不能全屏(欠扫描)

使用 amdcccle 图形界面工具 你可以选择 display, adjustments,设置 Underscan 为 0% (aticonfig默认值15%).

你也可以通过 aticonfig 来禁用underscanning:

# aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0

新版本中(比如 12.11),若CCC总是保存overscan设置失败的话,编辑 /etc/ati/amdpcsdb:

TVEnableOverscan=V0

然后注销,登录.

Dual Screen Setup: general problems with acceleration, OpenGL, compositing, performance

Try to disable xinerama and xrandr12. Check out ie. this way:

Type those commands:

# aticonfig --initial
# aticonfig --set-pcs-str="DDX,EnableRandR12,FALSE"

Then reboot your system. In /etc/X11/xorg.conf check that xinerama is disabled, if it's not disable it and reboot your system.

Next run amdcccle and pick up amdcccle->display manager->multi-display->multidisplay desktop with display(s) 2.

Reboot again and set up your display layout whatever you desire.

Disabling VariBright feature

Type the following command to disable VariBright:

# aticonfig --set-pcs-u32=MCIL,PP_UserVariBrightEnable,0

Hybrid/PowerXpress: turning off discrete GPU

When you are using catalyst-total-pxp or catalyst-utils-pxp and you are switching to integrated GPU you may notice that discrete GPU is still working, consuming power and making your system's temperature higher.

Sometimes ie. when your integrated GPU is intel's one you can use vgaswitcheroo to turn the discrete GPU off. Sometimes unfortunatelly, it's not working.

Then you may check out acpi_call. MrDeepPurple has prepared the script which he's using to perform 'turn off' task, he's calling script via systemd service while booting and resuming his system. Here's his script:

#!/bin/sh
libglx=$(/usr/lib/fglrx/switchlibglx query)
modprobe acpi_call
if [ "$libglx" = "intel" ]; then
    echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call
fi

Switching from X session to TTYs gives blank screen

Workaround for this "feature", which appeared in catalyst 13.2 betas, is to use vga= kernel option, like vga=792. You can get the list of supported resolutions with

hwinfo --framebuffer

command. Pick up the one from the very bottom, and copy-paste it into kernel line of your bootloader, so it could look like ie. vga=0x03d4