Difference between revisions of "ATI"

From ArchWiki
Jump to: navigation, search
(french language link)
m (With KMS enabled)
Line 178: Line 178:
 
#Use the (unsupported) [radeon] repo:
 
#Use the (unsupported) [radeon] repo:
  
This repository will grant you up-to-date packages of the radeon driver and it is dependencies, from (mostly) git snapshots.
+
This repository will grant you up-to-date packages of the radeon driver and its dependencies, from (mostly) git snapshots.
  
 
<pre>
 
<pre>

Revision as of 04:16, 13 October 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Summary help replacing me
An overview of open source ATI/AMD video card drivers.
Related
KMS
Xorg
ATI Catalyst

Owners of ATI video cards have a choice between ATI's proprietary driver (Template:Package AUR) and the open source driver (Template:Package Official).

The open source driver is currently not on par with the proprietary driver in terms of 3D performance on newer cards or reliable TV-out support. It does, however, offer better dual-head support, excellent 2D acceleration, and provides sufficient 3D acceleration for OpenGL-accelerated window managers, such as Compiz or KWin.

If unsure, try the open source driver first; it will suit most needs and is generally less problematic (see the feature matrix for details). For an overview of ATI's proprietary "Catalyst" video card driver, see ATI Catalyst; this article covers the open source drivers. (ATI Catalyst is unsupported.)

Naming conventions

ATI's Radeon brand follows a naming scheme that relates each product to a market segment. Within this article, readers will see both product names (e.g. HD 4850, X1900) and code or core names (e.g. RV770, R580). Traditionally, a product series will correspond to a core series (e.g. the "X1000" product series includes the X1300, X1600, X1800, and X1900 products which utilize the "R500" core series – including the RV515, RV530, R520, and R580 cores).

For a table of core and product series, see Wikipedia:Comparison of AMD graphics processing units.

Overview

The Template:Codeline (radeon) driver:

  • Works with Radeon chipsets up to HD 4xxx (latest R700 chipsets) as well as HD 5xxx (latest R800 chipsets).
    • Radeons up to the X1xxx series are fully supported, stable, and full 2D and 3D acceleration are provided.
    • Radeons from HD 2xxx to HD 4xxx have full 2D acceleration and functional 3D acceleration, but are not supported by all the features that the proprietary driver provides (for example, powersaving is still in a testing phase).
  • Supports DRI1, RandR 1.2/1.3, EXA acceleration and kernel mode-setting/DRI2 (with the latest Linux kernel, libdrm and Mesa versions).
  • All cards from HD 5xxx (R800) and newer are supported, but for now, with 2D support only.
  • HDMI support will soon be implemented in xf86-video-ati over AtomBIOS. It is already working for some chipsets (RV620 at least are working fine).

Generally, xf86-video-ati should be your first choice, no matter which ATI card you own. In case you need to use a driver for newer ATI cards, you should prefer the proprietary catalyst driver.

Note: xf86-video-ati is recognized as "radeon" by Xorg (in Template:Filename).

Installation

Warning: If you have the proprietary driver (catalyst) installed, remove it and reboot before installing the radeon driver and make sure to remove the old Template:Filename.

To install Template:Codeline :

pacman -S xf86-video-ati

The -git version of the driver and other needed packages (linux-git, etc) can be found in the radeon repository or the AUR.

Configuration

Xorg will automatically load the driver and it will use your monitor's EDID to set the native resolution. Configuration is only required for tuning the driver.

If you want manual configuration, create Template:Filename, and add the following:

Section "Device"
    Identifier "r"
    Driver "radeon"
EndSection

Using this section, you can enable features and tweak the driver settings.

Kernel mode-setting (KMS)

KMS enables native resolution in the framebuffer and allows for instant console (tty) switching. KMS also enables newer technologies (such as DRI2) which will help reduce artifacts and increase 3D performance, even kernel space power-saving.

KMS for ATI video cards requires the Xorg free video user space driver Template:Package Official version 6.12.4 or later.

Enabling KMS

Since Linux kernel v.2.6.33, KMS is enabled by default for ATI cards.

Early KMS start

This method will start KMS as early as possible in the boot process (when the initramfs is loaded).

If you have a special kernel (e.g. linux-zen), remember to use appropriate mkinitcpio configuration file, e.g. Template:Filename. These instructions are written for the default kernel (Template:Package Official).

  1. Remove all Template:Codeline options from the kernel line in the bootloader configuration file (Template:Filename for GRUB users). Using other framebuffer drivers (such as Template:Codeline or Template:Codeline) will conflict with KMS. Remove any framebuffer related modules from Template:Filename. Template:Codeline can now be used in conjunction with KMS.
  2. Add Template:Codeline to Template:Codeline array in Template:Filename. For AGP support, it is necessary to add Template:Codeline (or Template:Codeline, Template:Codeline, Template:Codeline, Template:Codeline etc.) before the Template:Codeline module.
  3. Re-generate your initramfs: Template:Codeline
  4. Add Template:Codeline to the kernel options in the bootloader configuration file to enable KMS.
  5. AGP speed can be set with Template:Codeline kernel option, where x is 1, 2, 4, 8 (AGP speed) or -1 (PCI mode).
  6. Reboot the system.

Late start

With this choice, KMS will be enabled when modules are loaded during the boot process.

If you have a special kernel (e.g. linux-zen), remember to use appropriate mkinitcpio configuration file, e.g. Template:Filename. These instructions are written for the default kernel (Template:Package Official).

  1. Remove all Template:Codeline options from the kernel line in the bootloader configuration file (Template:Filename for GRUB users). Using other framebuffer drivers (such as Template:Codeline or Template:Codeline) will conflict with KMS. Remove any framebuffer related modules from Template:Filename. Template:Codeline can now be used in conjunction with KMS.
  2. Add Template:Codeline to Template:Codeline array in Template:Filename. For AGP support, it may be necessary to add Template:Codeline (or ali_agp, Template:Codeline, Template:Codeline, Template:Codeline etc.) before the Template:Codeline module.
  3. Reboot the system.
Tip: Some users have reported faster udev module loading by adding Template:Codeline to Template:Filename.

Troubleshooting KMS

Generic problem solution

If your card often crashes when loading the radeon module, starting your login manager, entering desktop or crashes when you start 3D apps like glxgears you can try if the kernel boot option Template:Codeline solves your problems. See https://bugzilla.kernel.org/show_bug.cgi?id=15626 for X200m cards.

Note: As of kernel 2.6.35 (and probably .34), Template:Codeline is most likely to be the default setting, enabled upstream.

Disable KMS

Users should consider disabling kernel mode-setting if encountering kernel panics, distorted framebuffer on boot, no GPU signal, Xorg refusing to start, Xorg falling back to Mesa software rasterizer (no 3D acceleration) or 'POWER OFF' problem (kernel 2.6.33-2)at shutdown.

  1. Add Template:Codeline (or Template:Codeline, if this does not work) to the kernel options line in the bootloader configuration file (Template:Filename for GRUB users). That should work.
    Note: Adding nomodeset to the kernel boot line might prevent Gnome 3's gnome-shell or KDE's desktop effects from running.
    If you want to remove KMS support from the initramfs, follow the next two steps.
  2. If Template:Codeline was added to the Template:Codeline array in Template:Filename to enable early start, remove it.
  3. Rebuild the initramfs with
    # mkinitcpio -p linux

Alternatively, module options can be specified in a file within the Template:Filename directory. If using the radeon module (Template:Codeline) disable KMS by creating a file containing the above code:

Template:File

Renaming Template:Filename

Renaming Template:Filename, which may include options that conflict with KMS, will force Xorg to autodetect hardware with sane defaults. After renaming, restart Xorg.

Performance tuning

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:ATI#)

The following options apply to Section "Device" in Template:Filename.

By design, xf86-video-ati runs at AGP 1x speed. It is generally safe to modify this. If you notice hangs, try reducing the value or removing the line entirely (you can use values 1, 2, 4, 8). If KMS is enabled, this option is not used and it is superseded by Template:Codeline kernel option.

       Option "AGPMode" "4"

ColorTiling is completely safe to enable and supposedly is enabled by default. People have noticed a performance increase when enabled via Template:Filename.

       Option "ColorTiling" "on"

Acceleration architecture; this will work only on newer cards. If you enable this and then cannot 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. With recent drivers can be used together with EXA.

       Option "EnablePageFlip" "on"

AGPFastWrite will enable fast writes for AGP cards. This one can cause instabilities, so be prepared to remove it if you cannot get into X.

       Option "AGPFastWrite" "yes"

EXAVSync option attempts to avoid tearing by stalling the engine until the display controller has passed the destination region. It reduces tearing at the cost of performance and has been know to cause instability on some chips. Really useful when enabling Xv overlay on videos on a 3D accelerated desktop. It is not necessary when KMS (thus DRI2 acceleration) is enabled.

      Option "EXAVSync" "yes"

See an example Device Section in Template:Filename:

Section "Device"
       Identifier  "My Graphics Card"
       Driver      "radeon"
       Option      "DRI" "on"
       Option      "DynamicPM" "on"      # Dynamic powersaving.
       Option      "ClockGating" "on"    # Assisting option for powersaving.
       Option      "AccelMethod" "EXA"   # EXA should fit most cases.
       Option      "EXAVSync" "on"       # EXAVSync is explained above.
       Option      "DMAForXv" "on"       # Forced option in order to enable Xv overlay.
       Option      "ScalerWidth" "2048"  # That should fix some very rare bugs.
       Option      "EnablePageFlip" "on" # It will not be enabled on R5xx cards.
       Option      "RenderAccel" "on"    # Optional. It should be enabled by default.
       Option      "AccelDFS" "on"       #Optional. See the man page.
       BusID       "PCI:1:0:0"
EndSection

See the manpage for more configuration options. Template:Codeline

A fine tool to try is driconf. It will allow you to modify several settings, like vsync, anisotropic filtering, texture compression, etc. Using this tool it is also possible to "disable Low Impact fallback" needed by some programs (e.g. Google Earth).

Powersaving

The powersaving part is totally different with and without KMS.

With KMS enabled

With the radeon driver, power saving is disabled by default but the stock kernel (2.6.35 as of this writing) provides a "sysfs" utility to enable it.

Power saving through KMS is still a work in progress for the most part. It should work, but some chips do have problems with it. A common issue for all is screen blinking when the kernel switches between power states, and in some configurations it even causes system freezes. But KMS is awesome, so it is your choice. The UMS method is generally more stable, however its power savings might not be as good as those provided by KMS options.

There are two ways to enable power management:

  1. Try adding Template:Codeline to the kernel parameters (if using the stock kernel < 2.6.35). If you are using Linux kernel >= 2.6.35 this option is no longer needed and the sysfs interface will be present by default. If this option is passed to a kernel >= 2.6.35, the driver will fail and fall back to software rendering.
  2. Use the (unsupported) [radeon] repo:

This repository will grant you up-to-date packages of the radeon driver and its dependencies, from (mostly) git snapshots.

[radeon]
Server = http://spiralinear.org/perry3d/$arch/

You can select the methods via sysfs.

With root access, you have two choices:

1. Dynamic frequency switching (depending on GPU load)

Template:Cli

The "dynpm" method dynamically changes the clocks based on the number of pending fences, so performance is ramped up when running GPU intensive apps, and ramped down when the GPU is idle. The re-clocking is attempted during vertical blanking periods, but due to the timing of the re-clocking functions, does not always complete in the blanking period, which can lead to flicker in the display. Due to this, dynpm only works when a single head is active.

Note: The "profile" method mentioned below is not as aggressive as "dynpm," but is currently much more stable and flicker free and works with multiple heads active.

2. Profile-based frequency switching

Template:Cli

The "profile" mode will allow you to select one of the five profiles below. Different profiles, for the most part, end up changing the frequency/voltage of the card.

  • "default" uses the default clocks and does not change the power state. This is the default behavior.
  • "auto" selects between "mid" and "high" power states based on the whether the system is on battery power or not. The "low" power state are selected when the monitors are in the dpms off state.
  • "low" forces the gpu to be in the low power state all the time. Note that "low" can cause display problems on some laptops; this is why auto only uses "low" when displays are off.
  • "mid" forces the gpu to be in the "mid" power state all the time. The "low" power state is selected when the monitors are in the dpms off state.
  • "high" forces the gpu to be in the "high" power state all the time. The "low" power state is selected when the monitors are in the dpms off state.

So lets say we want the "low" option...for this, run the following command:

Template:Cli

Replace "low" with any of the aforementioned profiles as necessary.

Note: Echoing a profile value to this file is not permanent, so when you find something that fits your needs, you will need to add it to /etc/rc.local, so it is executed at system startup.

Power management is supported on all asics (r1xx-evergreen) that include the appropriate power state tables in the vbios; not all boards do (especially older desktop cards).

To view the voltage that the GPU is running at, perform the following command and you will get something like this output:

Template:Command

If /sys/kernel/debug is empty, run this command:

Template:Cli

To permanently mount, add the following line to /etc/fstab:

debugfs   /sys/kernel/debug   debugfs   defaults   0   0

It depends on which GPU line yours is, however. Along with the radeon driver versions, kernel versions, etc. So it may not have much/any voltage regulation at all.

Thermal sensors are implemented via external i2c chips or via the internal thermal sensor (rv6xx-evergreen only). To get the temperature on asics that use i2c chips, you need to load the appropriate hwmon driver for the sensor used on your board (lm63, lm64, etc.). The drm will attempt to load the appropriate hwmon driver. On boards that use the internal thermal sensor, the drm will set up the hwmon interface automatically. When the appropriate driver is loaded, the temperatures can be accessed via lm_sensors tools or via sysfs in /sys/class/hwmon .

I have developed a small gui, a PowerPlaySwitcher (is an initial version)

Without KMS

In your Template:Filename file, add 2 lines to "Device" Section:

       Option      "DynamicPM"          "on"
       Option      "ClockGating"        "on"

If the two options are enabled successfully, you will see following lines in /var/log/Xorg.0.log:

       (**) RADEON(0): Option "ClockGating" "on"
       (**) RADEON(0): Option "DynamicPM" "on"
       Static power management enable success
       (II) RADEON(0): Dynamic Clock Gating Enabled
       (II) RADEON(0): Dynamic Power Management Enabled

If you desire low power cost, you can add an extra line to "Device" Section of Template:Filename:

       Option      "ForceLowPowerMode"   "on"

TV out

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:ATI#)

Since August 2007, there is TV-out support for all Radeons with integrated TV-out.

It is somewhat limited for now, it does not always autodetect the output correctly and only NTSC mode works.

First, check that you have an S-video output: Template:Codeline should give you something like

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

Now we should tell Xorg that it is actually connected (it is, right?)

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

Setting tv standard to use:

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

Adding a mode for it (currently it supports only 800x600):

xrandr --addmode S-video 800x600

I will go for a clone mode:

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

So far so good. Now let us try to see what we have:

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

At this point you should see a 800x600 version of your desktop on your TV.

To disable the output, do

xrandr --output S-video --off

Also you may notice that the video is being played on monitor only and not on the TV. Where the Xv overlay is sent is controlled by XV_CRTC attribute.

To send the output to the TV, I do

xvattr -a XV_CRTC -v 1
Note: you need to install xvattr from AUR to execute this command.

To switch back to my monitor, I change this to Template:Codeline. Template:Codeline is used for automatic switching in dualhead setups.

Please see Enabling TV-Out Statically for how to enable TV-out in your xorg configuration file.

Force TV-out in KMS

Kernel can recognize Template:Codeline parameter in following form:

 video=<conn>:<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd]

(see KMS)

For example:

 video=DVI-I-1:1280x1024-24@60e

or

 "video=9-pin DIN-1:1024x768-24@60e"

Parameters with whitespaces must be quoted. Current mkinitcpio implementation also requires # before. For example:

 root=/dev/disk/by-uuid/d950a14f-fc0c-451d-b0d4-f95c2adefee3 ro quiet radeon.modeset=1 security=none # video=DVI-I-1:1280x1024-24@60e "video=9-pin DIN-1:1024x768-24@60e"
  • Grub can pass such command line as is.
  • Lilo needs backslashes for doublequotes (append="...... # .... \"video=9-pin DIN-1:1024x768-24@60e\"")
  • Grub2: TODO

You can get list of your video outputs with following command:

ls -1 /sys/class/drm/ | grep -E '^card[[:digit:]]+-' | cut -d- -f2-

HDMI Audio

xf86-video-ati can enable HDMI audio output for all supported chipsets up to r7xx when using KMS. Just use xrandr to enable the output and Test as described below.

Testing HDMI Audio

  1. Connect your PC to the TV via HDMI cable.
  2. Use xrandr to get picture to the TV. Ex: Template:Codeline. Simply typing Template:Codeline will give you a list of your valid outputs.
  3. Run Template:Codeline to get the list of your sound devices. Find HDMI and note the card number and corresponding device number. Example of what you want to see: Template:Codeline
  4. Try sending sound to this device: Template:Codeline. Be sure to change plughw:z,y to match your hardware number found with last command. You should be able to hear the test sound from your TV.
  • Note with Kernel 3.0 the audio module is disabled by default in the kernel. Add Template:Codeline to your kernel line in the boot loader to re-enable.

see https://bbs.archlinux.org/viewtopic.php?id=124130

Dual Head Setup

Independent X Screens

Independent dual-headed setups can be configured the usual way. However you might want to know that the radeon driver has a Template:Codeline option which allows you to bind a specific device section to an output of your choice, for instance using :

       Section "Device"
       Identifier     "Device0"
       Driver         "radeon"
       Option         "ZaphodHeads"   "VGA-0"
       VendorName     "ATI"
       BusID          "PCI:1:0:0"
       Screen          0
       EndSection

This can be a life-saver, because some cards which have more than two outputs (for instance one HDMI out, one DVI, one VGA), will only select and use HDMI+DVI outputs for the dual-head setup, unless you explicitely specify Template:Codeline.

Moreover, this option allows you to easily select the screen you want to mark as primary.

Troubleshooting

I encounter artifacts when logging into my DE or WM

If you encounter artifacts, first try starting X without Template:Filename. Recent versions of Xorg are capable of reliable auto-detection and auto-configuration for most use cases. Outdated or improperly configured Template:Filename files are known to cause trouble.

In order to run without a configuration tile, it is recommended that the Template:Codeline package group be installed.

Artifacts may also be related to kernel mode setting. Consider disabling KMS.

You may as well try disabling EXAPixmaps to Template:Codeline in Template:Filename:

Option "EXAPixmaps" "off"

AccelDFS option is likely to cause the artifacts, try disabling this as well

Option "AccelDFS" "off"

I have installed a free driver and my card is painfully slow

Some cards can be installed by default trying to use KMS. You can check whether this is your case running:

dmesg | egrep "drm|radeon"

This command might show something like this, meaning it is trying to default to KMS:

[drm] radeon default to kernel modesetting.
...
[drm:radeon_driver_load_kms] *ERROR* Failed to initialize radeon, disabling IOCTL

If your card is not supported by KMS (anything older than r100), then you can disable KMS. This should fix the problem.

AGP is disabled (with KMS)

If you experience poor performance and dmesg shows something like this

[drm:radeon_agp_init] *ERROR* Unable to acquire AGP: -19

then check if the agp driver for your motherboard (e.g., Template:Codeline, Template:Codeline etc.) is loaded before the Template:Codeline module, see Enabling KMS.

My TV is showing a black border around the screen

When I connected my TV to my Radeon HD 5770 using the HDMI port, the TV showed a blurry picture with a 2-3cm border around it. This is not the case when using the proprietary driver. However, this protection against overscanning (see Wikipedia:Overscan) can be turned off using xrandr:

xrandr --output HDMI-0 --set underscan off

Black screen and no console, but X works in KMS

This is a solution to no-console problem that might come up, when using two or more ATI cards on the same PC. Fujitsu Siemens Amilo PA 3553 laptop for example has this problem. This is due to fbcon console driver mapping itself to wrong framebuffer device that exist on the wrong card. This can be fixed by adding a this to the kernel boot line:

fbcon=map:1

This will tell the fbcon to map itself to the Template:Filename framebuffer dev and not the Template:Filename, that in our case exist on the wrong graphics card.