ATI (简体中文)

From ArchWiki

Jump to: navigation, search


i18n
English
简体中文

Contents

[edit] 概述

ATI用户有两种驱动可选。如果你不确定该用哪种,请先试一试开源版的。开源驱动能满足大多数的需要,而且,一般来说遇到的麻烦也更少些。

ATI的私有驱动自7.10(8.42.3)版开始支持AIGLX(虽然还有bug)。现在,要使用Compiz Fusion或者Compiz这些带有composite功能的管理器,你既可以使用开源驱动,也可以使用私有的版本。目前,开源驱动在性能上不及私有版本,也缺乏双通道DVI(dual-link DVI)之类的功能。但另一方面,它能更好地支持双头显示(dual-head)。

[edit] 开源ATI驱动

开源驱动在Radeon X850以下的Radeon芯片组上能起到不同程度的效果。对Radeons 9200系列及其以下的显卡,它提供完备、稳定的支持以及完整的2D、3D加速。对Radeons 9500到X850的显卡,它提供完整的2D加速,也包括3D,但不像私有驱动那样支持所有的功能。你可以在这里找到一份完整的、被支持的芯片组列表。

[edit] 安装与配置

要安装的软件包是xf86-video-ati注意:如果你之前安装过私有驱动,请确认卸载catalystcatalyst-utils

pacman -Syu xf86-video-ati libgl

编辑xorg.conf,在给出的Section中添加或确认有以下的内容:

Section "Module"
  Load  "glx"
  Load  "dri"
  Load  "drm"
EndSection
Section "Device"
  Identifier "name"                     # 你的显卡名称
  Driver "radeon"
  Option "XAANoOffscreenPixmaps" "true" # aiglx需要这一项
EndSection
Section "DRI"
  Group        "video"
  Mode         0666
EndSection

使用这一驱动时,请确认你安装了libgl-dri而不是catalyst-utils。否则,错误的libGL.so将导致直接加速(direct rendering)无法工作。

[edit] 性能调整

下面这些选项属于Section "Device":

       Option "AGPMode" "4"

开源驱动被设计成在AGP 1x的速度下运行。一般来说,修改此速度是安全的。如果你发现哪里不正常,试着减小其值或者干脆把这一行删掉。

       Option "ColorTiling" "on"

打开ColorTiling是绝对安全的,并且这被认为是默认的设置。人们注意到,通过xorg.conf来开启它,性能会有所提高。

       Option "AccelMethod" "EXA"

加速方式(Acceleration architecture );只对较新的显卡有效。如果你打开它之后进不了X,删了吧。

       Option "EnablePageFlip" "on" 

开启Page Flip一般是安全的,同时也会禁用EXA,因此大多用在比较老的显卡上。新版驱动可以使之与EXA共存。

       Option "AGPFastWrite" "yes"

这一选项可以打开fast writes。很可能会出问题,所以做好删除它的准备,如果你到时进不了X的话。

要了解更多的配置选项请阅读manpage

driconf是一款很不错的工具,值得一试。它让你能修改一些设定,比如vsync,anisotropic,texture compression等等。有些程序(比如Google Earth )要求“disable Low Impact fallback",使用driconf可以做到这一点。

[edit] TV输出(TV out)

自2007年8月起,所有集成了tv-out功能的Radeon显卡都有了驱动的tv-out支持。 目前tv-out还有一些局限:它对输出的自动识别并不总是正确,而且只支持NTSC制式。 不管怎样,它在我的Radeon 7000上工作地很棒。这里是我的方法:

首先,检查你的S端子输出:xrandr应该会给你类似如下的结果:

Screen 0: minimum 320x200, current 1024x768, maximum 1280x1200
...
S-video disconnected (normal left inverted right x axis y axis)

现在我们要告诉Xorg线已经插好了

xrandr --output S-video --set load_detection 1

设定TV制式标准

xrandr --output S-video --set tv_standard ntsc

为它添加一个分辨率(目前只支持800x600)

xrandr --addmode S-video 800x600

我打算使用复刻模式(clone mode)

xrandr --output S-video --same-as VGA-0

好了,让我们来看看效果吧

xrandr --output S-video --mode 800x600

这时,在电视上你应该能看到你的桌面,分辨率是800x600。

要关掉这一输出:

xrandr --output S-video --off

你可能还发现视频只在显示器上播放,而电视上没有。XV_CRTC属性控制着Xv overlay的输出方向。

把输出指向电视:

xvattr -a XV_CRTC -v 1

要切换回显示器,把1改成0-1应用于双头显示(dual head)设置中的自动切换

[edit] ATI Catalyst驱动

ATI的私有驱动曾被称为fglrx,现在ATI将其重新命名为Catalyst。目前,改变的只是软件包的名字,内核模块依然保留着它原有的名字fglrx,因此下面提到的任何“fglrx"都特指内核模块,而不是软件包

[edit] 支持的设备

访问ATI Catalyst 7.12 (Linux) Release Notes,查看支持的显卡列表

[edit] 安装

自Xorg 7发布以来,Arch在extra软件仓库中提供预编译的catalyst软件包。如果你使用core或者extra中提供的内核,那么安装过程将会很简单。如果你使用定制的内核,那么你将需要一些额外的步骤。

[edit] 普通内核

[edit] kernel26

安装kernel26的fglrx驱动,你需要catalyst软件包。

# pacman -S catalyst

这个软件包只包含内核模块,同时还要安装catalyst-utils作为依赖。catalyst-utils独立于内核,同时为Xorg提供库和实用程序,其中也包含了ATI自己的libGL.so

[edit] 定制的内核

为定制的内核安装catalyst,你需要为你的内核编译专门的模块,并创建自己的catalyst-$kernel软件包。

如果你缺乏制作软件包的经验,首先阅读wiki中关于ABS的页面,这会使你接下来的工作更顺利。

[edit] 获取PKGBUILD

可以通过下面的两种方式从CVS或ABS中获取PKGBUILDfglrx.install文件

[edit] 编辑PKGBUILD并创建软件包

这里需要作三处修改:

第一,把

   pkgname=catalyst

改成

   pkgname=catalyst-KERNEL_NAME

其中KERNEL_NAME可以是任何你想要的名字

第二, 从依赖列表(dependencies)中移除kernel26

第三, 把

   _kernver=${_kernel_version}-ARCH

改成

   _kernver=`uname -r`

(或者直接把使用你定制的内核时uname -r的输出结果填到那里)

最后,创建并安装软件包(makepkg -i或者makepkg然后pacman -A pkgname.pkg.tar.gz

[edit] 注意

  • 如果你使用仓库的多个内核,记得给每个内核都装上相应的catalyst模块。它们不会互相冲突。
  • 不需要改动catalyst-utils,它是独立于内核的。你需要做的只是编译一个内核模块。

[edit] ATI/AMD安装程序

[edit] 安装

警告:不推荐使用ati.com/amd.com的安装程序!

这样做会与各种pacman软件包发生文件冲突,同时也很可能造成X的运行失败。通过pacman获得的软件包是专门为Arch Linux配置的,建议你选择它们。

如果你已经尝试了用官方安装程序进行手动安装,并且发现电脑不再正常工作了,在/usr/share/ati里应该有一个卸载脚本,运行它,然后试一试pacman的软件包。

如果出于某种原因,你一定要使用ATI/AMD的安装程序,下面的步骤可能会对你有用:

  • 下载ATI/AMD的驱动安装程序
  • 给它可执行权限
  • 安装mesa
   #pacman -S mesa
  • 如果需要的话,安装Xorg
  • 检查ATI/AMD安装程序需要的其它包,这些包已在官方网站上列出。
   #pacman -Q | grep NameOfPackage
  • 按照接下来描述的方法用aticonfig更新xorg.conf
  • 如果有需要,在xorg.conf里添加指向fglrx.so模块的ModulesPath

[edit] 配置

ATI提供了aticonfig来修改已存在的xorg.conf,配置显卡的各个方面。 查看aticonfig选项的完整列表,运行

$ aticonfig --help

如果你还没有xorg.conf,运行下面的命令来生成一个

# Xorg -configure

用aticonfig修改xorg.conf有一个最简单的方法。运行aticonfig,后面不要加任何命令行参数,在输出结果未尾的examples中你可以找到它。

   Examples:
     1. Setting up fglrx for the first time.
          Single head :    aticonfig --initial --input=/etc/X11/xorg.conf
          Dual head   :    aticonfig --initial=dual-head --screen-layout=above
                           This command will generate a dual head configuration
                           file with the second screen located above the first
                           screen.

只要视实际情况调整两行中的一行来完成你的个人设置。

跟平常一样,最好还是亲眼检查一遍新的xorg.conf以保证文件的正确性。如果你愿意,你可以拿它与wiki中Xorg页面给出的Sample Xorg.conf files 相比较。

最后,运行startx来启动Xorg,确认direct rendering是否已经打开。在终端输入:

$ glxinfo | grep direct

如果显示为"direct rendering: yes",恭喜,你成功了!如果提示找不到glxinfo,你可能还需要安装mesa。

[edit] 已知问题及解决

[edit] 注销后KDM消失

如果你使用catalyst驱动,并且系统在注销以后自动回到控制台(vc/1),而不是正常时的KDM,你需要命令KDM在每次注销后重新启动X server:

$ sudo vim /opt/kde/share/config/kdm/kdmrc

在[X-*-Core]区段中加入:

TerminateServer=True

现在当你从KDE注销以后,应该可以看到KDM了。

[edit] Direct Rendering未开启

打不开Direct Rendering吗?运行:

   $ LIBGL_DEBUG=verbose glxinfo > /dev/null

输出结果的开头部分通常会给出没有direct rendering的原因。

常见的错误信息和解决方法如下:

   libGL error: XF86DRIQueryDirectRenderingCapable returned false
  • 确认你在加载fglrx内核模块之前加载了正确的agp模块。运行hwdetect --show-agp来确定你所需的agp模块,然后确认所有这些模块都被列在rc.conf中的MODULES=序列中,并且位于fglrx之前
   libGL error: failed to open DRM: Operation not permitted
   libGL error: reverting to (slow) indirect rendering
  • 为解决这个问题,要确保你的xorg.conf中有以下的section:
   Section "DRI"
       Mode 0666
   EndSection
   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都被用作源。通常可以把/etc/profile作为源加入到~/.xsession或~/.xinitrc中,但设置方式也可能视不同登陆管理器而有所差别。
  • 如果错误信息给出的路径是usr/lib/xorg/modules/dri/fglrx_dri.so,可能是有什么装错了。重装fglrx试试看。


   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
   $

应该只有三个libGL.so,如果你还有别的(比如/usr/X11R6/lib/libGL.so.1.2)就把它们删掉。这样应该能修复你的问题。

也许没有什么错误指出这是一个问题,但如果你使用X11DR7,确保你的系统中没有下面这些文件:

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

[edit] 休眠相关

[edit] 无法进入待机/休眠状态

想利用休眠脚本进入待机状态时,如果fglrx返回了错误信息,可以这样解决:在/etc/X11/xorg.conf的"Device" section中加入下面的选项,这一选项将允许fglrx模块进入待机状态。

Option      "UseInternalAGPGart" "no"

[edit] 无法从待机状态返回

如果你打开了framebuffer,catalyst驱动将不能从待机状态返回。若要关闭framebuffer,需在/boot/grub/menu.lst中添加vga=0的内核参数。比如:

# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /vmlinuz26 root=/dev/sda3 resume=/dev/sda2 ro vga=0
initrd /kernel26.img

[edit] 硬件冲突

在某些版本的nForce3主板上(比如nForce 3 250Gb),Radeon显卡没有3D加速。原因尚不明确,据说有一个办法可能让这一组合得到3D加速:用nVIDIA的驱动启动Windows,然后重启(--b)

可以这样来验证:

用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"

那就说明你遇到这个BUG了。

据说在某些情况下,降级主板的BIOS可能会有帮助,但这毕竟没有在所有的情况下都得到证实。而且,一次失败的BIOS降级有可能令你的硬件报废,所以请慎重行事。

更多关于这一bug的信息及可能的解决方法请看这里http://bugzilla.kernel.org/show_bug.cgi?id=6350

[edit] Compaq Presario笔记本电脑

即使安装了所需的驱动和配置文件,某些笔记本(比如装有Xpress 200M的Presario R4000 )仍然只给你一个空荡荡的屏幕。 问题似乎出在内核没有检测到正确的显存信息(即使你只有128M的显存,lspci -v也总是报告为256M)。修改BIOS的选项,使用"SidePort+UMA" ,让128M的显存加上128M的系统内存,这一方法看起来很管用。

这可能是BIOS或Linux PCI代码的bug。

[edit] 外部资源

这里可以找到更多信息

Personal tools