Difference between revisions of "ATI"

From ArchWiki
Jump to: navigation, search
m (Obtaining PKGBUILD)
m (Hardware Confilcts)
Line 228: Line 228:
 
* As well, the <code>radeonfb</code> framebuffer drivers have been known in the past to cause problems of this nature.  If your kernel has radeonfb support compiled in, you may want to try a different kernel and see if this helps.  Note: kernel26beyond _DOES_ have radeonfb support compiled in.
 
* As well, the <code>radeonfb</code> framebuffer drivers have been known in the past to cause problems of this nature.  If your kernel has radeonfb support compiled in, you may want to try a different kernel and see if this helps.  Note: kernel26beyond _DOES_ have radeonfb support compiled in.
  
===Hardware Confilcts===
+
===Hardware Conflicts===
  
 
Radeon cards used in conjunction with some versions of the nForce3 chipset (e.g. nForce 3 250Gb) won't have acceleration. Currently the cause of this is unknown but some sources indicates that it will be necessary to boot Windows with the drivers from nVIDIA, reboot the system and it will be possible to get 3D acceleration with this hardware. This can be verified issuing in a root console the following command:
 
Radeon cards used in conjunction with some versions of the nForce3 chipset (e.g. nForce 3 250Gb) won't have acceleration. Currently the cause of this is unknown but some sources indicates that it will be necessary to boot Windows with the drivers from nVIDIA, reboot the system and it will be possible to get 3D acceleration with this hardware. This can be verified issuing in a root console the following command:

Revision as of 22:15, 7 April 2007

ATI owners have two options for drivers. If you unsure which driver to use try the open source one first. The open source driver will suite most needs along with generally being less problematic.

The proprietary driver does not support Aiglx. To use Compiz or Beryl with ATI's driver you would need to use XGL. Currently the open source driver is not on par with the performance of the proprietary one. It also lacks TV-out, dual-link DVI support, and possibly other features. On the other hand it supports Aiglx and has better dual-head support.

Open Source ATI Drivers

The open source drivers will work to some degree on Radeon chipsets up to the Radeon X850. Radeons up to the 9200 series are fully featured, stable, with full 2D and 3D acceleration. Radeons from 9500 to X850 have full 2D acceleration, the y provide 3D acceleration as well but it doesn't support all the features that the proprietary drivers do. A full list of supported chipsets can be found here.

Installation and Configuration

The package is xf86-video-ati. Note: if you have previously installed the proprietary driver make sure to remove ati-fglrx,ati-fglrx-beyond, and ati-fglrx-utils.

pacman -S xf86-video-ati libgl-dri

Edit your xorg.conf, and add or make sure you have the following in their given sections. For

Section "Module"
  Load  "glx"
  Load  "dri"
  Load  "drm"
EndSection
Section "Device"
 Identifier "name"                     # your alias
 Driver "radeon"
 Option "XAANoOffscreenPixmaps" "true" #needed for aiglx
EndSection
Section "DRI"
 Group        "video"
 Mode         0660
EndSection

When using this driver, make sure you do not have ati-fglrx-utils installed but use libgl-dri instead. Otherwise you'll have the wrong libGL.so which will cause direct rendering not to work.

Performance tuning

The following options apply to Section "Device":

By design, the open source driver runs at 1x AGP speed. It is generally safe to modify this. If you notice hangs try reducing the value or removing the line entirely.

       Option "AGPMode" "4"

ColorTiling is completely safe to enable and supposedly is enabled by default. People have noted a performance increase when enabled via xorg.conf.

       Option "ColorTiling" "on"

Acceleration architecture, this will only work on newer cards. If you enable this and then can't get back into X, remove it.

       Option "AccelMethod" "EXA"

Page Flip is generally safe to enable. This would mostly be used on older cards as enabling this would disable EXA.

       Option "EnablePageFlip" "on" 

This will enable fast writes. This one can be problematic so be prepared to remove it if you can't get into X.

       Option "AGPFastWrite" "yes"

See the manpage for more configuration options. Another fine tool to try is driconf. It will allow you to modify several settings, like vsync, anisotropic filtering, texture compression etc.

Proprietary Driver: Fglrx

Supported Devices

See ATI Linux Driver 8.33.6 Release Notes for a list of supported devices by this version of the drivers.

Installation

From the release of Xorg 7, Arch has provided pre-compiled fglrx packages in the extra repository. If you use either of the kernel26 or kernel26beyond kernels, the process is simple. If you use a custom kernel, a few extra steps need to be taken.

Stock Kernels

kernel26

To install ATI's fglrx drivers for the kernel26 package, you need to install the ati-fglrx package.

   # pacman -Sy ati-fglrx

kernel26beyond

To install ATI's fglrx drivers for the kernel26beyond package, you need to install the ati-fglrx-beyond package.

   # pacman -Sy ati-fglrx-beyond

Notes

  • These packages contain only the kernel module, and depend on the ati-fglrx-utils package. The ati-fglrx-utils package is kernel-independent and provides the libraries and utilities for Xorg, including ATI's own libGL.so.
  • After installing the package, you'll need to either source /etc/profile or log out, then back in to set up the environment properly.
  • If you run both kernel26 and kernel26beyond then install both ati-fglrx module packages. They won't conflict with one another.

Custom Kernels

To install fglrx for a custom kernel, you'll need to build your own ati-fglrx-$kernel package, containing the kernel module compiled specifically for your kernel.

If you are at all uncomfortable or inexperienced making packages, read up the ABS wiki page first so things go smoothly.

Obtaining PKGBUILD

Obtain the PKGBUILD and ati-fglrx.install files from CVS or ABS. Either:

Editing the PKGBUILD and building

Three changes need to be made here:

First, change

   pkgname=ati-fglrx

to

   pkgname=ati-fglrx-KERNEL_NAME

where KERNEL_NAME is whatever you want (custom, mm, themostawesomekernelever)

Second, remove kernel26 from the dependencies list.

Third, change

   _kernver=2.6.15-ARCH

to

   _kernver=`uname -r`

(or directly insert the output of uname -r when running your custom kernel there)

Finally, build and install the package. (makepkg -i or makepkg followed by pacman -A pkgname.pkg.tar.gz)

Notes

  • No changes need to be made to the ati-fglrx-utils package, which is completely kernel-independent. All you need to do is compile a kernel module.
  • To build and run the fglrx kernel module with 2.6.16 kernels, patches are needed! Check out the cvs entries for ati-fglrx in current for the required patch.

Configuration

With recent releases of their drivers, ATI has gotten rid of the fglrxconfig tool in favour of the more streamlined, simpler, and more up-to-date aticonfig tool. For a list of complete options that you can use with aticonfig (and this is a long list!), run

   $ aticonfig --initial

at the command prompt. You can use this tool to set up an xorg.conf file and configure essentially every aspect of the card.

To use this utility, make sure you have a working xorg.conf file already, and back it up. For the most part, aticonfig only modifies existing config files to work with fglrx. If you don't have an xorg.conf file yet, run

   # Xorg -configure

to generate one.

The simplest way to use aticonfig to adapt your xorg.conf file is listed in the examples at the end of the output if you run aticonfig without any command-line parameters:

   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.

Just adapt one of those two lines for your personal setup.

As always, it's a good idea to visually scan the resulting xorg.conf file to ensure everything seems right. If you want, you can compare it to one of the Sample Xorg.conf files listed on the Xorg7 wiki page.

Finally, run Xorg with startx and check if you have direct rendering by opening up a terminal and running

   glxinfo | grep direct (you may need to install the mesa package to get glxinfo)

If it says "direct rendering: yes" then you're good to go!

Troubleshooting

Errors about AIGLX in /var/log/Xorg.0.log

If you get errors like:

   (EE) AIGLX error: dlsym for __driCreateNewScreen_20050727 failed (/usr/lib/xorg/modules/dri/fglrx_dri.so: undefined symbol: __driCreateNewScreen_20050727)
   (EE) AIGLX: reverting to software rendering

it is because you use the new xorg package which uses AIGLX rather than XGL which is not supported by fglrx yet. This can be solved by adding the following lines to /etc/X11/xorg.conf, which disable AIGLX which triggers the old XGL driver:


   Section "ServerFlags"
       Option  "AIGLX" "off"
   EndSection
   Section "Extensions"
       Option "Composite" "Disable"
   EndSection

Direct Rendering Doesn't Work

Having trouble getting direct rendering working? Run

   $ LIBGL_DEBUG=verbose glxinfo > /dev/null

at the command prompt. At the very start of the output, usually it'll give you a nice error message saying why you don't have direct rendering.

Common errors, and their solutions, are:


   libGL error: XF86DRIQueryDirectRenderingCapable returned false
  • Ensure 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 ensure that all modules listed from that command are in the MODULES= array in rc.conf, before fglrx.


   libGL error: failed to open DRM: Operation not permitted
   libGL error: reverting to (slow) indirect rendering
  • For this, make sure you have the following section in your xorg.conf somewhere:
   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
  • Something hasn't been installed right. If the paths in the error message are /usr/X11R6/lib/modules/dri/fglrx_dri.so, then ensure you've logged completely out of your system, then back in. If you're using a graphical login manager (gdm, kdm, xdm) ensure that /etc/profile is sourced every time you log in. This is usually accomplished by adding source /etc/profile into ~/.xsession or ~/.xinitrc, but may vary between login managers.
  • If the paths above in your error message _are_ /usr/lib/xorg/modules/dri/fglrx_dri.so then something hasn't been correctly installed. Try reinstalling the ati-fglrx-utils package.


   fglrx: libGL version undetermined - OpenGL module is using glapi fallback
  • This could be caused by having multiple versions of libGL.so on your system. Run:
   $ sudo updatedb
   $ locate libGL.so

This should return the following output:

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

These are the only three libGL.so files you should have on your system. If you have any more (eg. /usr/X11R6/lib/libGL.so.1.2), then remove them. This should fix your problem.

You might not get any error to indicate that this is a problem. If you are using X11R7, make sure you do not have these files on your system:

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

Hibernate/Sleep Issues

  • fglrx returns an error when attempting to suspend through hibernate scripts. Adding the following line to your "Device" section in xorg.conf will allow the module to enter suspend mode.

Option "UseInternalAGPGart" "no"

System Freezes/Hard locks

  • To prevent system lockups, try adding the following lines to your fglrx "Device" section in xorg.conf
   Option "UseInternalAGPGART"         "no"
   Option "KernelModuleParm"           "agplock=0" # AGP locked user pages: disabled

Note: Neither both options are anymore necessary since 8.24.18, because ATI removed the internal AGP GART support from the driver.

  • As well, the radeonfb framebuffer drivers have been known in the past to cause problems of this nature. If your kernel has radeonfb support compiled in, you may want to try a different kernel and see if this helps. Note: kernel26beyond _DOES_ have radeonfb support compiled in.

Hardware Conflicts

Radeon cards used in conjunction with some versions of the nForce3 chipset (e.g. nForce 3 250Gb) won't have acceleration. Currently the cause of this is unknown but some sources indicates that it will be necessary to boot Windows with the drivers from nVIDIA, reboot the system and it will be possible to get 3D acceleration with this hardware. This can be verified issuing in a root console the following command:

    dmesg | grep agp

If you get somthing similar to this (using an nForce3 based system)

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

and also if issuing this command...

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

...got something similar to:

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

Then you got this bug.

Some sources indicates that in some cases, downgrading the Motherboard BIOS helps, but this can't be verified in all cases. Also a bad BIOS downgrade can render your hardware useless, so beware.

See bug http://bugzilla.kernel.org/show_bug.cgi?id=6350 for more information and a potential fix.

Compaq Presario Laptops

After installing the drivers and editing the configuration file as required, some laptops (Presario R4000 with XPress200M) just come up with a blank screen. The problem seems to be incorrect memory detected by the kernel.(even if you have 128M of video memory lspci -v always reports 256M). Changing the BIOS settings so it uses "SidePort+UMA" option and using 128M video memory plus another 128M taken from system seems to work around fine as a workaround. It could be a bug in the BIOS or in the Linux PCI code.


External Resources

More Info can be found here