Difference between revisions of "ATI"

From ArchWiki
Jump to: navigation, search
m (Some 3D applications show textures as all black or crash)
(update man page references, updated man page links (interactive))
(Tag: wiki-scripts)
 
(372 intermediate revisions by 80 users not shown)
Line 1: Line 1:
 
[[Category:Graphics]]
 
[[Category:Graphics]]
[[Category:X Server]]
+
[[Category:X server]]
[[cs:ATI]]
 
 
[[de:ATI]]
 
[[de:ATI]]
 
[[es:ATI]]
 
[[es:ATI]]
 
[[fr:ATI]]
 
[[fr:ATI]]
 
[[it:ATI]]
 
[[it:ATI]]
 +
[[ja:ATI]]
 
[[pl:ATI]]
 
[[pl:ATI]]
 
[[ru:ATI]]
 
[[ru:ATI]]
 
[[tr:ATI]]
 
[[tr:ATI]]
[[zh-CN:ATI]]
+
[[zh-hans:ATI]]
{{Article summary start}}
+
{{Related articles start}}
{{Article summary text|An overview of the open source ATI/AMD video card driver.}}
+
{{Related|AMD Catalyst}}
{{Article summary heading|Related}}
+
{{Related|AMDGPU}}
{{Article summary wiki|AMD Catalyst}}
+
{{Related|Xorg}}
{{Article summary wiki|Xorg}}
+
{{Related|Vulkan}}
{{Article summary end}}
+
{{Related articles end}}
  
Owners of '''ATI/AMD''' video cards have a choice between AMD's [[AMD Catalyst|proprietary driver]] ({{AUR|catalyst}}) and the open source driver ({{Pkg|xf86-video-ati}}). This article covers the open source driver.
+
Owners of '''AMD''' (previously '''ATI''') video cards have a choice between [[AMD Catalyst|proprietary driver]] ({{AUR|catalyst}}) and the open source drivers ([[ATI]] for older or [[AMDGPU]] for newer cards). This article covers the '''ATI'''/[https://wiki.freedesktop.org/xorg/radeon/ Radeon] open source driver for older cards.
  
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 provide sufficient 3D acceleration for OpenGL-accelerated [[window manager]]s, such as [[Compiz]] or KWin.
+
The open source driver is ''on par'' performance-wise with the proprietary
 +
driver for many cards. (See this [https://www.phoronix.com/scan.php?page=article&item=radeonsi-cat-wow&num=1 benchmark].)
  
If unsure, try the open source driver first, it will suit most needs and is generally less problematic (see the [http://www.x.org/wiki/RadeonFeature feature matrix] for details).
+
If unsure, try the open source driver first, it will suit most needs and is
 +
generally less problematic. See the [https://www.x.org/wiki/RadeonFeature feature matrix] to know what is supported for the GPU. See the [https://www.x.org/wiki/RadeonFeature/#index5h2 decoder ring] to translate marketing names (e.g. Radeon HD4330) to chip names (e.g. R700).
  
==Naming conventions==
+
== Selecting the right driver ==
ATI's [[Wikipedia:Radeon|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]].
+
Depending on the card you have, find the right driver in [[Xorg#AMD]]. This page has instructions for '''ATI'''.
  
==Overview==
+
== Installation ==
The {{ic|xf86-video-ati}} (radeon) driver:
 
*Works with Radeon chipsets up to HD 6xxx and 7xxxM (latest Northern Islands 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 6xxx 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 [[KMS|kernel mode-setting]]/DRI2 (with the latest Linux kernel, libdrm and Mesa versions).
 
  
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|If coming from the proprietary Catalyst driver, see [[AMD Catalyst#Uninstallation]] first.}}
  
{{Note|xf86-video-ati is recognized as "'''radeon'''" by Xorg (in {{ic|xorg.conf}}). }}
+
[[Install]] the {{Pkg|xf86-video-ati}} package. It provides the DDX driver for 2D acceleration and it pulls in {{Pkg|mesa}} as a dependency, providing the DRI driver for 3D acceleration.
  
==Installation==
+
For 32-bit application support on x86_64, also install {{Pkg|lib32-mesa}} from [[multilib]].
{{Out of date|This section still references rc.conf, which has been deprecated.}}
 
=== Preparing system for catalyst users ===
 
If you have the proprietary driver (catalyst) installed, you need to get rid of it. Basically you need to remove {{ic|catalyst}} and {{ic|catalyst-utils}} packages. Also you should remove {{Aur|catalyst-daemon}}, {{Aur|catalyst-generator}}, {{Aur|catalyst-hook}} and {{Aur|lib32-catalyst-utils}} packages if they have been installed on your system.
 
  
{{Warning|You may need to use {{ic|pacman -Rdd}} to remove {{aur|catalyst-utils}} (and/or {{aur|lib32-catalyst-utils}}) because that package contains ''gl'' related files and many of your installed packages depend on them.}}
+
Support for [[#Enabling video acceleration|accelerated video decoding]] is provided by {{Pkg|mesa-vdpau}} and {{Pkg|lib32-mesa-vdpau}} packages.
  
{{Note|You should remove unofficial reporitories which are menitoned in [[ATI Catalyst]] wiki page from your {{ic|/etc/pacman.conf}} and run {{ic|pacman -Syu}}. Because, those repositories include out-dated Xorg packages to allow use of catalyst and {{Pkg|xf86-video-ati}} package needs up-to-date Xorg packages from [[Official repositories]]}}
+
== Loading ==
  
Also follow these steps:
+
The radeon kernel module should load fine automatically on system boot.
  
* If you have a {{ic|/etc/modprobe.d/blacklist-radeon.conf}} file remove it or comment the line {{ic|blacklist radeon}} in that file.
+
If it does not happen, then:
* Make sure to remove the old {{ic|/etc/X11/xorg.conf}}
 
* If you have installed {{Aur|catalyst-hook}} package, make sure to remove ''fglrx'' from "HOOKS" array of {{ic|/etc/mkinitcipo.conf}} in case if post-removal script of the package don't work.
 
* If you have installed {{Aur|catalyst-generator}} package, make sure to remove "fglrx" from "MODULES" array of {{ic|/etc/rc.conf}} in case if post-removal script of the package don't work.
 
* If you have installed {{Aur|catalyst-daemon}} package, make sure to remove "autofglrx" from "DAEMONS" array of {{ic|/etc/rc.conf}} in case if post-removal script of the package don't work.
 
* If you used "nomodeset" option in your [[Boot Loader#Configuration files|configuration file]] in kernel parameters line and plan to use [[#Kernel mode-setting (KMS)|KMS]], remove it.
 
* '''Reboot''' before installing the radeon driver.
 
  
=== Installing xf86-video-ati ===
+
* Make sure you do '''not''' have {{ic|nomodeset}} or {{ic|1=vga=}} as a [[kernel parameter]], since radeon requires [[KMS]].
[[pacman|Install]] {{Pkg|xf86-video-ati}}, available in the [[Official Repositories]].  
+
* Also, check that you have not disabled radeon by using any [[Kernel_modules#Blacklisting|kernel module blacklisting]].
  
The -git version of the driver and other needed packages (linux-git, etc) can be found in the [https://bbs.archlinux.org/viewtopic.php?id=79509&p=1 radeon repository] or the [[AUR]].
+
=== Enable early KMS ===
 +
 
 +
{{Tip|If you have problems with the resolution, [[Kernel mode setting#Forcing modes and EDID]] may help.}}
 +
 
 +
[[Kernel mode setting]] (KMS) is supported by the radeon driver and is mandatory and enabled by default.
 +
 
 +
KMS is typically initialized after the [[Arch boot process#initramfs|initramfs stage]]. It is possible, however, to enable KMS during the initramfs stage. To do this, add the {{ic|radeon}} module to the {{ic|MODULES}} line in {{ic|/etc/mkinitcpio.conf}}:
 +
 
 +
MODULES="... radeon ..."
 +
 
 +
Now, regenerate the initramfs:
 +
 
 +
# mkinitcpio -p linux
 +
 
 +
The change takes effect at the next reboot.
 +
 
 +
== Xorg configuration ==
  
==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.
 
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.
  
Line 75: Line 77:
 
Using this section, you can enable features and tweak the driver settings.
 
Using this section, you can enable features and tweak the driver settings.
  
== Kernel mode-setting (KMS) ==
+
== Performance tuning ==
 +
=== Enabling video acceleration ===
  
[[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.
+
See [[Hardware video acceleration]].
  
KMS for ATI video cards requires the [[Xorg]] free video user space driver {{Pkg|xf86-video-ati}} version 6.12.4 or later.
+
=== Driver options ===
 +
The following options apply to {{ic|/etc/X11/xorg.conf.d/'''20-radeon.conf'''}}.
  
=== Enabling KMS ===
+
Please read {{man|4|radeon}} and [https://www.x.org/wiki/RadeonFeature/#index4h2 RadeonFeature] first before applying driver options.
  
Since Linux kernel v.2.6.33, KMS is '''enabled''' by default for ATI cards.
+
'''Acceleration architecture'''; Glamor is available as a 2D acceleration method implemented through OpenGL, and it [https://cgit.freedesktop.org/xorg/driver/xf86-video-ati/commit/?id=f11531c99fcd6473f58b4d10efaf3efd84304d8e is the default] for R600 (Radeon HD2000 series) and newer graphic cards. Older cards use EXA.
  
==== Early KMS start ====
+
Option "AccelMethod" "glamor"
  
''This method will start KMS as early as possible in the [[boot process]] (when the [[initramfs]] is loaded).''
+
'''DRI3''' is enabled by default [https://www.phoronix.com/scan.php?page=news_item&px=Radeon-AMDGPU-1.19-Updates since xf86-video-ati 7.8.0]. For older drivers, which use DRI2 by default, switch to DRI3 with the following option:
  
If you have a special kernel (e.g. linux-zen), remember to use appropriate mkinitcpio configuration file, e.g. {{ic|/etc/mkinitcpio-zen.conf}}. These instructions are written for the default kernel ({{Pkg|linux}}).
+
Option "DRI" "3"
  
# Remove all {{ic|<nowiki>vga=</nowiki>}} options from the ''kernel'' line in the bootloader [[Boot Loader#Configuration files|configuration file]].  Using other framebuffer drivers (such as {{ic|[[uvesafb]]}} or {{ic|radeonfb}}) will conflict with KMS. Remove any framebuffer related modules from {{ic|/etc/mkinitcpio.conf}}. {{ic|<nowiki>video=</nowiki>}} can now be used in conjunction with KMS.
+
'''TearFree''' is a tearing prevention option which prevents tearing by using the hardware page flipping mechanism:
# Add {{ic|radeon}} to {{ic|MODULES}} array in {{ic|/etc/mkinitcpio.conf}}. For AGP support, it is necessary to add {{ic|intel_agp}} (or {{ic|ali_agp}}, {{ic|ati_agp}}, {{ic|amd_agp}}, {{ic|amd64_agp}} etc.) before the {{ic|radeon}} module.
 
# Re-generate your initramfs: {{ic|# mkinitcpio -p linux}}
 
# AGP speed can be set with {{ic|<nowiki>radeon.agpmode=x</nowiki>}} kernel option, where x is 1, 2, 4, 8 (AGP speed) or -1 (PCI mode).
 
# '''Reboot''' the system.
 
  
==== Late start ====
+
Option "TearFree" "on"
  
''With this choice, KMS will be enabled when modules are loaded during the [[boot process]].''
+
'''ColorTiling''' and '''ColorTiling2D''' are supposed to be enabled by default. Tiled mode can provide significant performance benefits with 3D applications. It is disabled if the DRM module is too old or if the current display configuration does not support it. KMS ColorTiling2D is only supported on R600 (Radeon HD2000 series) and newer chips:
  
If you have a special kernel (e.g. linux-zen), remember to use appropriate mkinitcpio configuration file, e.g. {{ic|/etc/mkinitcpio-zen.conf}}. These instructions are written for the default kernel ({{Pkg|linux}}).
+
Option "ColorTiling" "on"
 +
Option "ColorTiling2D" "on"
  
# Remove all {{ic|<nowiki>vga=</nowiki>}} options from the ''kernel'' line in the bootloader [[Boot Loader#Configuration files|configuration file]]. Using other framebuffer drivers (such as {{ic|[[uvesafb]]}} or {{ic|radeonfb}}) will conflict with KMS. Remove any framebuffer related modules from {{ic|/etc/mkinitcpio.conf}}. {{ic|<nowiki>video=</nowiki>}} can now be used in conjunction with KMS.
+
When using Glamor as acceleration architecture, it is possible to enable the '''ShadowPrimary''' option, which enables a so-called "shadow primary" buffer for fast CPU access to pixel data, and separate scanout  buffers  for  each  display  controller (CRTC). This may improve performance for some 2D workloads, potentially at the expense of other (e.g. 3D, video) workloads. Note that enabling this option currently disables Option "EnablePageFlip":
# Add {{ic|radeon}} to {{ic|MODULES}} array in {{ic|/etc/rc.conf}}. For AGP support, it may be necessary to add {{ic|intel_agp}} (or ali_agp, {{ic|ati_agp}}, {{ic|amd_agp}}, {{ic|amd64_agp}} etc.) before the {{ic|radeon}} module.
 
# '''Reboot''' the system.
 
  
{{Tip|Some users have reported faster [[udev]] module loading by adding {{ic|<nowiki>options radeon modeset=1</nowiki>}} to {{ic|/etc/modprobe.d/modprobe.conf}}.}}
+
Option "ShadowPrimary" "on"
  
=== Troubleshooting KMS ===
+
'''EXAVSync ''' is only available when using EXA and can be enabled 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 known to cause instability on some chips:
  
==== Disable KMS ====
+
Option "EXAVSync" "yes"
  
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.
+
Below is a sample configuration file of {{ic|/etc/X11/xorg.conf.d/'''20-radeon.conf'''}}:
  
# Add {{ic|<nowiki>radeon.modeset=0</nowiki>}} (or {{ic|nomodeset}}, if this does not work) to the kernel options line in the bootloader [[Boot Loader#Configuration files|configuration file]]. 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.
+
{{bc|
# If {{ic|radeon}} was added to the {{ic|MODULES}} array in {{ic|mkinitcpio.conf}} to enable ''early start'', remove it.
+
Section "Device"
# Rebuild the [[initramfs]] with {{bc|# mkinitcpio -p linux}}
+
Identifier  "Radeon"
 +
Driver "radeon"
 +
Option "AccelMethod" "glamor"
 +
        Option "DRI" "3"
 +
        Option "TearFree" "on"
 +
        Option "ColorTiling" "on"
 +
        Option "ColorTiling2D" "on"
 +
EndSection
 +
}}
  
Alternatively, module options can be specified in a file within the {{ic|/etc/modprobe.d}} directory. If using the '''radeon''' module ({{ic|<nowiki>lsmod | grep radeon</nowiki>}}) disable KMS by creating a file containing the above code:
+
{{Tip|{{Pkg|driconf}} is a tool which allows several settings to be modified: 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).}}
  
{{hc|/etc/modprobe.d/radeon.conf|2=options radeon modeset=0}}
+
=== Kernel parameters ===
 +
{{Tip|You may want to debug the new parameters with {{ic|systool}} as stated in [[Kernel modules#Obtaining information]].}}
  
==== Renaming {{ic|xorg.conf}} ====
+
Defining the '''gartsize''', if not autodetected, can be done by adding {{ic|1=radeon.gartsize=32}} as a [[kernel parameter]].
  
Renaming {{ic|/etc/X11/xorg.conf}}, which may include options that conflict with KMS, will force Xorg to autodetect hardware with sane defaults. After renaming, '''restart''' Xorg.
+
{{Note|Setting this parameter should not be needed anymore with modern AMD video cards:
 
+
{{bc|<nowiki>
== Performance tuning ==
+
[drm] Detected VRAM RAM=2048M, BAR=256M
The following options apply to {{ic|/etc/X11/xorg.conf.d/'''20-radeon.conf'''}}.
+
[drm] radeon: 2048M of VRAM memory ready
 +
[drm] radeon: 2048M of GTT memory ready.
 +
</nowiki>}}
 +
}}
  
By design, xf86-video-ati runs at AGP 4x 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 {{ic|radeon.agpmode}} kernel option.
+
The changes take effect at the next reboot.
  
Option "AGPMode" "8"
+
==== Deactivating PCIe 2.0 ====
  
'''ColorTiling''' is completely safe to enable and supposedly is enabled by default. Most users will notice increased performance but it is not yet supported on R200 and earlier cards. Can be enabled on earlier cards, but the workload is transferred to the CPU
+
Since kernel 3.6, PCI Express 2.0 in '''radeon''' is turned on by default.
  
Option "ColorTiling" "on"
+
It may be unstable with some motherboards. It can be deactivated by adding {{ic|1=radeon.pcie_gen2=0}} as a [[kernel parameter]].
  
'''Acceleration architecture'''; this will work only on '''newer''' cards. If you enable this and then cannot get back into X, remove it.
+
See [https://www.phoronix.com/scan.php?page=article&item=amd_pcie_gen2&num=1 Phoronix article] for more information.
  
Option "AccelMethod" "EXA"
+
=== Gallium Heads-Up Display ===
  
'''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.
+
The radeonsi driver supports the activation of a heads-up display (HUD) which can draw transparent graphs and text on top of applications that are rendering, such as games. These can show values such as the current frame rate or the CPU load for each CPU core or an average of all of them. The HUD is controlled by the GALLIUM_HUD environment variable, and can be passed the following list of parameters among others:
 +
*"fps" - displays current frames per second
 +
*"cpu" - displays the average CPU load
 +
*"cpu0" - displays the CPU load for the first CPU core
 +
*"cpu0+cpu1" - displays the CPU load for the first two CPU cores
 +
*"draw-calls" - displays how many times each material in an object is drawn to the screen
 +
*"requested-VRAM" - displays how much VRAM is being used on the GPU
 +
*"pixels-rendered" - displays how many pixels are being displayed
  
Option "EnablePageFlip" "on"
+
To see a full list of parameters, as well as some notes on operating GALLIUM_HUD, you can also pass the "help" parameter to a simple application such as glxgears and see the corresponding terminal output:
 +
{{bc|1=# GALLIUM_HUD="help" glxgears }}
  
'''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. This option is not used when KMS is on.
+
More information can be found from this [https://lists.freedesktop.org/archives/mesa-dev/2013-March/036586.html mailing list post] or [https://kparal.wordpress.com/2014/03/03/fraps-like-fps-overlay-for-linux/ this blog post].
  
Option "AGPFastWrite" "yes"
+
== Hybrid graphics/AMD Dynamic Switchable Graphics ==
  
'''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.
+
It is the technology used on recent laptops equiped with two GPUs, one power-efficent (generally Intel integrated card) and one more powerful and more power-hungry (generally Radeon or Nvidia). There are two ways to get it work:
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"
+
* If it is not required to run 'GPU-hungry' applications, it is possible to disable the discrete card (see [https://help.ubuntu.com/community/HybridGraphics#Using_vga_switcheroo Ubuntu wiki]): {{ic|echo OFF > /sys/kernel/debug/vgaswitcheroo/switch}}.
 +
* [[PRIME]]: Is a proper way to use hybrid graphics on Linux, but still requires a bit of manual intervention from the user.
  
Bellow is a sample config file {{ic|/etc/X11/xorg.conf.d/'''20-radeon.conf'''}}:
+
== Powersaving ==
 +
{{Note|Power management is supported on all chips that include the appropriate power state tables in the vbios (R1xx and newer). "dpm" is only supported on R6xx and newer chips.}}
  
{{bc|
+
With the radeon driver, power saving is disabled by default and has to be enabled manually if desired.
Section "Device"
 
      Identifier  "My Graphics Card"
 
        Option "AGPMode"              "8"  #not used when KMS is on
 
Option "AGPFastWrite"          "off" #could cause instabilities enable it at your own risk
 
Option "SWcursor"              "off" #software cursor might be necessary on some rare occasions, hence set off by default
 
Option "EnablePageFlip"        "on"  #supported on all R/RV/RS4xx and older hardware and set off by default
 
Option "AccelMethod"          "EXA" #valid options are XAA and EXA. EXA is the newest acceleration method and it is the default.
 
Option "RenderAccel"          "on"  #enabled by default on all radeon hardware
 
Option "ColorTiling"          "on"  #enabled by default on RV300 and later radeon cards.
 
Option "EXAVSync"              "off" #default is off, otherwise on
 
Option "EXAPixmaps"            "on"  #when on icreases 2D performance, but may also cause artifacts on some old cards
 
Option "AccelDFS"              "on"  #default is off, read the radeon manpage for more information
 
EndSection
 
}}
 
  
Defining the '''gartsize''', if not autodetected, can be done by adding {{ic|1=radeon.gartsize=32}} into [[kernel parameters]]. Size is in megabytes and 32 is for RV280 cards.
+
You can choose between three different methods:
  
Alternatively, do it with a modprobe option in {{ic|/etc/modprobe.d/radeon.conf}}:
+
# [[#Dynamic power management|dpm]] (enabled by default since kernel 3.13)
 +
# [[#Dynamic frequency switching|dynpm]]
 +
# [[#Profile-based frequency switching|profile]]
  
options radeon gartsize=32
+
See https://www.x.org/wiki/RadeonFeature/#index3h2 for more details.
  
'''For further information and other options, read the radeon manpage and the module's info page''':
+
=== Dynamic power management ===
man radeon
 
  
modinfo radeon
+
Since kernel 3.13, DPM is enabled by default for [https://kernelnewbies.org/Linux_3.13#head-f95c198f6fdc7defe36f470dc8369cf0e16898df lots of AMD Radeon hardware]. If you want to disable it, add the parameter {{ic|1=radeon.dpm=0}} to the [[kernel parameters]].
  
A fine tool to try is [https://www.archlinux.org/packages/community/any/driconf/ 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).
+
{{Tip| DPM works on R6xx gpus, but is not enabled by default in the kernel (only R7xx and up). Setting the {{ic|1=radeon.dpm=1}} kernel parameter will enable dpm.}}
  
=== Activate PCI-E 2.0 ===
+
Unlike [[#Dynamic frequency switching|dynpm]], the "dpm" method uses hardware on the GPU to dynamically change the clocks and voltage based on GPU load. It also enables clock and power gating.
Can be unstable with some motherboards or not produce any performarce, test yourself adding "radeon.pcie_gen2=1" on the kernel command line.
 
  
{{Note|2012-10-01: As for 3.6 kernel, PCI-E 2.0 in radeon seems to be turned on by-default. Note may be edited after more detailed check.}}
+
There are 3 operation modes to choose from:
  
More info on [http://www.phoronix.com/scan.php?page=article&item=amd_pcie_gen2&num=1 Phoronix article]
+
* {{ic|battery}} lowest power consumption
 +
* {{ic|balanced}} sane default
 +
* {{ic|performance}} highest performance
  
==Powersaving==
+
They can be changed via sysfs
 +
# echo battery > /sys/class/drm/card0/device/power_dpm_state
  
The powersaving part is totally different with and without KMS.
+
For testing or debugging purposes, you can force the card to run in a set performance mode:
  
===With KMS enabled===
+
* {{ic|auto}} default; uses all levels in the power state
 +
* {{ic|low}} enforces the lowest performance level
 +
* {{ic|high}} enforces the highest performance level
  
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.
+
# echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level
  
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.
+
==== Commandline Tools ====
  
There are two ways to enable power management:
+
* [https://github.com/superjamie/snippets/blob/master/radcard radcard] - A script to get and set DPM power states and levels
  
#Try adding {{ic|1=radeon.dynpm=1}} 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.
+
=== Old methods ===
#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.
+
==== Dynamic frequency switching ====
  
{{bc|1=
+
This method dynamically changes the frequency depending on GPU load, 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.
[mesa-git]
 
Server = http://pkgbuild.com/~lcarlier/$repo/$arch/
 
}}
 
  
 +
It can be activated by simply running the following command:
  
You can select the methods via sysfs.
+
# echo dynpm > /sys/class/drm/card0/device/power_method
  
With root access, you have two choices:
+
==== Profile-based frequency switching ====
  
1. '''Dynamic frequency switching (depending on GPU load)'''
+
This method will allow you to select one of the five profiles (described below). Different profiles, for the most part, end up changing the frequency/voltage of the GPU. This method is not as aggressive, but is more stable and flicker free and works with multiple heads active.
  
{{bc|# echo dynpm > /sys/class/drm/card0/device/power_method}}
+
To activate the method, run the following command:
  
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.
+
# echo profile > /sys/class/drm/card0/device/power_method
  
{{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.}}
+
Select one of the available profiles:
 +
* {{ic|default}} uses the default clocks and does not change the power state. This is the default behaviour.
 +
* {{ic|auto}} selects between {{ic|mid}} and {{ic|high}} power states based on the whether the system is on battery power or not.
 +
* {{ic|low}} forces the gpu to be in the {{ic|low}} power state all the time. Note that {{ic|low}} can cause display problems on some laptops, which is why {{ic|auto}} only uses {{ic|low}} when monitors are off. Selected on other profiles when the monitors are in the [[DPMS]]-off state.
 +
* {{ic|mid}} forces the gpu to be in the {{ic|mid}} power state all the time.
 +
* {{ic|high}} forces the gpu to be in the {{ic|high}} power state all the time.
  
2. '''Profile-based frequency switching'''
+
As an example, we will activate the {{ic|low}} profile (replace {{ic|low}} with any of the aforementioned profiles as necessary):
  
{{bc|# echo profile > /sys/class/drm/card0/device/power_method}}
+
# echo low > /sys/class/drm/card0/device/power_profile
  
The "profile" mode will allow you to select one of the five profiles below.
+
==== Persistent configuration ====
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.
+
The activation described above is not persistent, you may use this [[udev]] rule (example for [[#Profile-based frequency switching]]):
* "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:
+
{{hc|/etc/udev/rules.d/30-radeon-pm.rules|<nowiki>
 +
KERNEL=="dri/card0", SUBSYSTEM=="drm", DRIVERS=="radeon", ATTR{device/power_method}="profile", ATTR{device/power_profile}="low"
 +
</nowiki>}}
  
{{bc|# echo low > /sys/class/drm/card0/device/power_profile}}
+
{{Note|If the above rule is failing, try removing the {{ic|dri/}} prefix.}}
  
Replace "low" with any of the aforementioned profiles as necessary.
+
==== Graphical tools ====
  
{{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, in case you are using '''initscripts'''. In case of using '''systemd''' there will be no /etc/rc.local file, you can use following '''udev''' rule:}}
+
* {{App|Radeon-tray|A small program to control the power profiles of your Radeon card via systray icon. It is written in PyQt4 and is suitable for non-Gnome users.|https://github.com/StuntsPT/Radeon-tray|{{AUR|radeon-tray}}}}
'''dynpm'''-method example:
 
{{hc|$ cat /etc/udev/rules.d/30-local.rules|<nowiki>
 
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="radeon", ATTR{device/power_method}="dynpm"
 
</nowiki>}}
 
'''auto'''-profile example:
 
{{hc|$ cat /etc/udev/rules.d/30-local.rules|<nowiki>
 
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="radeon", ATTR{device/power_method}="profile", ATTR{device/power_profile}="auto"
 
</nowiki>}}
 
  
{{Note|Gnome-shell users may be interested in the following extension: [https://extensions.gnome.org/extension/356/radeon-power-profile-manager Radeon Power Profile Manager] for manually controlling the GPU profiles.}}
+
=== Other notes ===
 
 
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 speed that the GPU is running at, perform the following command and you will get something like this output:
 
To view the speed that the GPU is running at, perform the following command and you will get something like this output:
  
{{hc|$ cat /sys/kernel/debug/dri/0/radeon_pm_info|<nowiki> state: PM_STATE_ENABLED
+
{{hc|# cat /sys/kernel/debug/dri/0/radeon_pm_info|<nowiki>
 +
  state: PM_STATE_ENABLED
 
   default engine clock: 300000 kHz
 
   default engine clock: 300000 kHz
 
   current engine clock: 300720 kHz
 
   current engine clock: 300720 kHz
   default memory clock: 200000 kHz</nowiki>}}
+
   default memory clock: 200000 kHz
 +
</nowiki>}}
  
If /sys/kernel/debug is empty, run this command:
+
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.
  
{{bc|# mount -t debugfs none /sys/kernel/debug}}
+
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 {{ic|/sys/class/hwmon}}.
  
To permanently mount, add the following line to /etc/fstab:
+
== Fan Speed ==
  
debugfs  /sys/kernel/debug  debugfs  defaults  0  0
+
While the power saving features above should handle fan speeds quite well, some cards may still be too noisy in their idle state. In this case, and when your card supports it, you can change the fan speed manually.
  
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.
+
{{Warning|
 
+
* Keep in mind that the following method sets the fan speed to a fixed value, hence it will not adjust with the stress of the GPU, which can lead to overheating under heavy load.
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 .
+
* Check GPU temperature when applying lower than standard values.
 +
}}
 +
 +
Issue the following command to enable the manual adjustment of the fan speed of your graphics card (or the first GPU in case of a multi GPU setup).  
  
There is a GUI for switching profiles [http://code.google.com/p/power-play-switcher here] ([https://aur.archlinux.org/packages.php?ID=53752 available in AUR]).
+
# echo 1 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
  
===Without KMS===
+
Then set your desired fan speed from 0 to 255, which corresponds to 0-100% fan speed (the following command sets it to roughly 20%):
  
In your {{ic|xorg.conf}} file, add 2 lines to "Device" Section:
+
# echo 55 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1
        Option      "DynamicPM"          "on"
 
        Option      "ClockGating"        "on"
 
  
If the two options are enabled successfully, you will see following lines in /var/log/Xorg.0.log:
+
For persistence, see the example in [[#Persistent configuration]].
  
        (**) RADEON(0): Option "ClockGating" "on"
+
If a fixed value is not desired, there are possibilities to define a custom fan curve manually by, for example, writing a script in which fan speeds are set depending on the current temperature (current value in {{ic|/sys/class/drm/card0/device/hwmon/hwmon0/temp1_input}}).
        (**) RADEON(0): Option "DynamicPM" "on"
 
  
        Static power management enable success
+
A GUI solution is available by installing {{AUR|radeon-profile-git}}.
        (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 {{ic|xorg.conf}}:
+
== TV out ==
        Option      "ForceLowPowerMode"  "on"
 
 
 
==TV out==
 
{{out of date}}
 
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: {{ic|xrandr}} should give you something like
 
First, check that you have an S-video output: {{ic|xrandr}} should give you something like
Line 311: Line 304:
 
  S-video disconnected (normal left inverted right x axis y axis)
 
  S-video disconnected (normal left inverted right x axis y axis)
  
Setting tv standard to use:
+
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
 
  xrandr --output S-video --set "tv standard" ntsc
  
Adding a mode for it (currently it supports only 800x600):
+
Adding a mode for it (currently supports only 800x600):
 
  xrandr --addmode S-video 800x600
 
  xrandr --addmode S-video 800x600
  
I will go for a clone mode:
+
Clone mode:
 
  xrandr --output S-video --same-as VGA-0
 
  xrandr --output S-video --same-as VGA-0
  
So far so good. Now let us try to see what we have:
+
Now let us try to see what we have:
 
  xrandr --output S-video --mode 800x600
 
  xrandr --output S-video --mode 800x600
  
Line 328: Line 324:
 
  xrandr --output S-video --off
 
  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.
+
=== Force TV-out in KMS ===
  
To send the output to the TV, I do
+
The kernel can recognize {{ic|1=video=}} parameter in following form (see [[KMS]] for more details):
xvattr -a XV_CRTC -v 1
 
  
{{Note| you need to install '''xvattr''' from [[AUR]] to execute this command.}}
+
video=<conn>:<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd]
  
To switch back to my monitor, I change this to {{ic|0}}. {{ic|-1}} is used for automatic switching in dualhead setups.
+
For example:
  
Please see [http://www.x.org/wiki/radeonTV Enabling TV-Out Statically] for how to enable TV-out in your xorg configuration file.
+
video=DVI-I-1:1280x1024-24@60e
  
=== Force TV-out in KMS ===
+
Parameters with whitespaces must be quoted:
  
Kernel can recognize {{ic|1=video=}} parameter in following form:
+
"video=9-pin DIN-1:1024x768-24@60e"
  
  video=<conn>:<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd]
+
Current mkinitcpio implementation also requires {{ic|#}} in front. For example:
  
(see [[KMS]])
+
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"
  
For example:
+
* [[GRUB Legacy]] can pass such command line as is.
 +
* [[LILO]] needs backslashes for doublequotes (append {{ic|1=# \"video=9-pin DIN-1:1024x768-24@60e\"}})
  
  video=DVI-I-1:1280x1024-24@60e
+
You can get list of your video outputs with following command:
or
 
  "video=9-pin DIN-1:1024x768-24@60e"
 
  
Parameters with whitespaces must be quoted. Current mkinitcpio implementation also requires # before. For example:
+
{{bc|<nowiki>$ ls -1 /sys/class/drm/ | grep -E '^card[[:digit:]]+-' | cut -d- -f2-</nowiki>}}
  
  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"
+
== HDMI audio ==
  
* Grub can pass such command line as is.
+
HDMI audio is supported in the {{Pkg|xf86-video-ati}} video driver. To disable HDMI audio add {{ic|1=radeon.audio=0}} to your [[kernel parameters]].
* 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:
+
If there is no video after boot up, the driver option has to be disabled.
  
{{bc|<nowiki>ls -1 /sys/class/drm/ | grep -E '^card[[:digit:]]+-' | cut -d- -f2-</nowiki>}}
+
{{Note|
 +
* If HDMI audio does not work after installing the driver, test your setup with the procedure at [[Advanced Linux Sound Architecture/Troubleshooting#HDMI Output does not work]].
 +
* If the sound is distorted in PulseAudio try setting {{ic|1=tsched=0}} as described in [[PulseAudio/Troubleshooting#Glitches, skips or crackling]] and make sure {{ic|rtkit}} daemon is running.
 +
* Your sound card might use the same module, since HDA compliant hardware is pretty common. [[Advanced Linux Sound Architecture#Set the default sound card]] using one of the suggested methods, which include using the {{ic|defaults}} node in alsa configuration.
 +
}}
  
== HDMI Audio ==
+
== Multihead setup ==
  
'''xf86-video-ati''' can enable HDMI audio output for all supported chipsets up to r7xx when using [[ATI#Kernel_mode-setting_.28KMS.29|KMS]]. Just use {{ic|xrandr}} to enable the output and Test as described below.
+
=== Using the RandR extension ===
  
=== Testing HDMI Audio ===
+
See [[Multihead#RandR]] how to setup multiple monitors by using [[Wikipedia:RandR|RandR]].
# Connect your PC to the Display via HDMI cable.
 
# Use xrandr to get picture to the Display, e.g.: {{ic|xrandr --output DVI-D_1 --mode 1280x768 --right-of PANEL}}. Simply typing {{ic|xrandr}} will give you a list of valid outputs.
 
# Run {{ic|aplay -l}} to get the list of sound devices. Find HDMI and note the card number and corresponding device number. Example of what you want to see: {{ic|card 1: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]}}
 
# Try sending sound to this device: {{ic|aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav}}. Be sure to change {{ic|plughw:z,y}} to match the hardware number found with last command. You should be able to hear the test sound from the display.
 
  
* The audio module is disabled by default in kernel >=3.0. Add {{ic|1=radeon.audio=1}} to the [[Kernel parameters]].
+
=== Independent X screens ===
* If the sound is distorted try [[PulseAudio#Glitches, skips or crackling|setting {{ic|1=tsched=0}}]] and make sure {{ic|rtkit}} daemon is running.
 
  
== Dual Head Setup ==
+
Independent dual-headed setups can be configured the usual way. However you might want to know that the radeon driver has a {{ic|"ZaphodHeads"}} option which allows you to bind a specific device section to an output of your choice:
=== Independent X Screens ===
+
{{hc|/etc/X11/xorg.conf.d/20-radeon.conf|
Independent dual-headed setups can be configured the usual way. However you might want to know that the radeon driver has a {{ic|"ZaphodHeads"}} option which allows you to bind a specific device section to an output of your choice, for instance using:
+
Section "Device"
        Section "Device"
+
  Identifier "Device0"
        Identifier     "Device0"
+
  Driver "radeon"
        Driver         "radeon"
+
  Option "ZaphodHeads" "VGA-0"
        Option         "ZaphodHeads"   "VGA-0"
+
  VendorName "ATI"
        VendorName     "ATI"
+
  BusID "PCI:1:0:0"
        BusID         "PCI:1:0:0"
+
  Screen 0
        Screen         0
+
EndSection
        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 {{ic|"ZaphodHeads"   "VGA-0"}}.
+
This can be a life-saver, when using videocards that 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 explicitly specify {{ic|"ZaphodHeads" "VGA-0"}}.
  
Moreover, this option allows you to easily select the screen you want to mark as primary.
+
== Turn vsync off ==
  
== Troubleshooting ==
+
The radeon driver will enable vsync by default, which is perfectly fine except for benchmarking. To turn it off, create {{ic|~/.drirc}} (or edit it if it already exists) and add the following section:
 +
{{hc|~/.drirc|<nowiki>
 +
<driconf>
 +
    <device screen="0" driver="dri2">
 +
        <application name="Default">
 +
            <option name="vblank_mode" value="0" />
 +
        </application>
 +
    </device>
 +
    <!-- Other devices ... -->
 +
</driconf>
 +
</nowiki>}}
 +
Make sure the driver is '''dri2''', not your video card code (like r600).
  
=== Artifacts upon logging in ===
+
{{Accuracy|If the above does not work, please file a bug report. Also, why is the {{ic|SwapbuffersWait}} option relevant here?}}
  
If encountering artifacts, first try starting X without {{ic|/etc/X11/xorg.conf}}. Recent versions of Xorg are capable of reliable auto-detection and auto-configuration for most use cases. Outdated or improperly configured {{ic|xorg.conf}} files are known to cause trouble.
+
If vsync is still enabled, you can try to disable it by editing the xf86-video-ati configuration :
  
In order to run without a configuration tile, it is recommended that the {{ic|xorg-input-drivers}} package group be installed.
+
{{hc|/etc/X11/xorg.conf.d/20-radeon.conf|<nowiki>
 +
Section "Device"
 +
Identifier  "My Graphics Card"
 +
Driver "radeon"
 +
Option "EXAVSync" "off"
 +
Option "SwapbuffersWait" "false"
 +
EndSection
 +
</nowiki>}}
  
Artifacts may also be related to [[kernel mode setting]]. Consider [[#Disable KMS|disabling KMS]].
+
== Troubleshooting ==
  
You may as well try disabling {{ic|EXAPixmaps}} in {{ic|/etc/X11/xorg.conf.d/20-radeon.conf}}:
+
=== Performance and/or artifacts issues when using EXA ===
 +
{{Note|This only applies to cards older than R600 (Radeon X1000 series and older). Newer cards you should use Glamor instead of EXA.}}
  
Section "Device"
+
If having 2D performance issues, like slow scrolling in a terminal or webbrowser, adding {{ic|Option "MigrationHeuristic" "greedy"}} as device option may solve the issue.
    Identifier "Radeon"
 
    Driver "radeon"
 
    Option "EXAPixmaps" "off"
 
EndSection
 
  
Further tweaking could be done by disabling {{ic|AccelDFS}}:
+
In addition disabling EXAPixmaps may solve artifacts issues, although this is generally not recommended and may cause other issues.
  
Option "AccelDFS" "off"
+
{{hc|/etc/X11/xorg.conf.d/20-radeon.conf|<nowiki>
 +
Section "Device"
 +
    Identifier "Radeon"
 +
    Driver "radeon"
 +
    Option "AccelMethod" "exa"
 +
    Option "MigrationHeuristic" "greedy"
 +
    #Option "EXAPixmaps" "off"
 +
EndSection
 +
</nowiki>}}
  
=== Adding undetected resolutions ===
+
=== Adding undetected/unsupported resolutions ===
  
e.g. When EDID fails on a DisplayPort connection.  
+
See [[Xrandr#Adding undetected resolutions]].
  
This issue is covered on the [[Xrandr#Adding_undetected_resolutions|Xrandr page]].
+
=== TV showing a black border around the screen ===
 +
{{Note|Make sure the tv has been setup correctly (see manual) before attempting the following solution.}}
  
=== Slow performance with open-source drivers ===
+
When connecting a TV using the HDMI port, the TV may show a blurry picture with a 2-3cm border around it. This protects against overscanning (see [[Wikipedia:Overscan]]), but can be turned off using xrandr:
 +
xrandr --output HDMI-0 --set underscan off
  
{{Note|Make sure you are member of '''video''' group.}}
+
=== Black screen and no console, but X works in KMS ===
  
Some cards can be installed by default trying to use [[ATI#AMD/Ati cards and kernel mode-setting (KMS)|KMS]]. You can check whether this is your case running:
+
This is a solution to the 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 the wrong framebuffer device that exists on the wrong card. This can be fixed by adding this to the kernel boot line:
dmesg | egrep "drm|radeon"
+
fbcon=map:1
 +
This will tell the fbcon to map itself to the {{ic|/dev/fb1}} framebuffer dev and not the {{ic|/dev/fb0}}, that in our case exists on the wrong graphics card. If that does not fix your problem, try booting with
 +
fbcon=map:0
 +
instead.
  
This command might show something like this, meaning it is trying to default to KMS:
+
=== ATI X1600 (RV530 series) 3D application show black windows ===
[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 [[ATI#Disable KMS|disable KMS]]. This should fix the problem.
+
There are three possible solutions:
 +
* Try adding {{ic|<nowiki>pci=nomsi</nowiki>}} to your boot loader [[Kernel parameters]].
 +
* If this does not work, you can try adding {{ic|noapic}} instead of {{ic|<nowiki>pci=nomsi</nowiki>}}.
 +
* If none of the above work, then you can try running {{ic|<nowiki>vblank_mode=0 glxgears</nowiki>}} or {{ic|<nowiki>vblank_mode=1 glxgears</nowiki>}} to see which one works for you, then install {{pkg|driconf}} and set that option in {{ic|~/.drirc}}.
  
=== AGP is disabled (with KMS) ===
+
=== Cursor corruption after coming out of sleep ===
  
If you experience poor performance and dmesg shows something like this
+
If the cursor becomes corrupted like it's repeating itself vertically after the monitor(s) comes out of sleep, set {{ic|"SWCursor" "True"}} in the {{ic|"Device"}} section of the {{ic|/etc/X11/xorg.conf.d/20-radeon.conf}} configuration file.
[drm:radeon_agp_init] *ERROR* Unable to acquire AGP: -19
 
then check if the agp driver for your motherboard (e.g., {{ic|via_agp}}, {{ic|intel_agp}} etc.) is loaded before the {{ic|radeon}} module, see [[ATI#Enabling KMS|Enabling KMS]].
 
  
=== TV showing a black border around the screen ===
+
=== DisplayPort stays black on multimonitor mode ===
  
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:
+
Try booting with the [[kernel parameter]] {{ic|1=radeon.audio=0}}.
xrandr --output HDMI-0 --set underscan off
 
  
=== No Desktop Effects in KDE4 with X1300 and Radeon Driver ===
+
=== R9-390 Poor Performance and/or Instability ===
  
A bug in KDE4 may prevent an accurate video hardware check, thereby deactivating desktop effects despite the X1300 having more than sufficient GPU power. A workaround may be to manually override such checks in KDE4 configuration files {{ic|/usr/share/kde-settings/kde-profile/default/share/config/kwinrc}} and/or {{ic|.kde/share/config/kwinrc}}.  
+
Firmware issues with R9-390 series cards include poor performance and crashes (frequently caused by gaming or using Google Maps) possibly related DPM. Comment 115 of this bug [https://bugs.freedesktop.org/show_bug.cgi?id=91880 report] includes instructions for a fix.
  
Add:
+
=== QHD / UHD / 4k support over HDMI for older Radeon cards ===
DisableChecks=true
 
 
To the [Compositing] section. Ensure that compositing is enabled with:
 
Enabled=true
 
  
=== Black screen and no console, but X works in KMS ===
+
Older cards have their pixel clock limited to 165MHz for HDMI. Hence, they do not support QHD or 4k only via dual-link DVI but not over HDMI.
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 {{ic|/dev/fb1}} framebuffer dev and not the {{ic|/dev/fb0}}, that in our case exist on the wrong graphics card.
 
  
=== Some 3D applications show textures as all black or crash ===
+
One possibility to work around this is to use [https://www.elstel.org/software/hunt-for-4K-UHD-2160p.html.en custom modes with lower refresh rate], e.g. 30Hz.
You might need texture compression support, which is not included with the open source driver. Install {{Pkg|libtxc_dxtn}} (and {{Pkg|lib32-libtxc_dxtn}} for multilib systems).
 
  
=== 2D performance (e.g. scrolling) is slow ===
+
Another one is a kernel patch removing the pixel clock limit, but this may damage the card!
If you have problem with 2D performance, like scrolling in terminal or browser, you might need to add {{ic|Option  "MigrationHeuristic"  "greedy"}} into the {{ic|"Device"}} section of your {{ic|xorg.conf}} file.
 
 
 
Bellow is a sample config file {{ic|/etc/X11/xorg.conf.d/'''20-radeon.conf'''}}:
 
 
 
{{bc|
 
Section "Device"
 
        Identifier  "My Graphics Card"
 
        Driver  "radeon"
 
        Option  "MigrationHeuristic"  "greedy"
 
EndSection
 
}}
 
  
=== ATI X1600 (RV530 series) 3D application show black windows ===
+
Official kernel bug ticket with patch for 4.8: https://bugzilla.kernel.org/show_bug.cgi?id=172421
There are three possible solutions:
 
* Try add {{ic|<nowiki>pci=nomsi</nowiki>}} to your boot loader [[Kernel parameters]].
 
* If this doesn't work, you can try adding {{ic|noapic}} instead of {{ic|<nowiki>pci=nomsi</nowiki>}}.
 
* If none of the above work, then you can try running {{ic|<nowiki>vblank_mode=0 glxgears</nowiki>}} or {{ic|<nowiki>vblank_mode=1 glxgears</nowiki>}} to see which one works for you, then install {{ic|driconf}} via pacman and set that option in {{ic|~/.drirc}}.
 
  
 +
The patch introduces a new kernel parameter {{ic|radeon.hdmimhz}} which alters the pixel clock limit.
  
=== Vertical colored stripes on chipset RS482 (Xpress 200M Series) with/out KMS ===
+
Be sure to use a high speed HDMI cable for this.
The bug :With the graphical chipset Xpress 200M Series (Radeon Xpress 1150), booting with KMS gives you sometimes, as soon as Xorg boots, a screen with many vertical colored stripes. You cannot Alt+Sys+K or do anything. Take a look [https://bugs.archlinux.org/task/21918] for more information,
 
How to fixed ? : disable dri  (needn't to disable kms)
 
Side effert: if i disable "dri" and use no kernel options (no "nomodeset") i see the vertical stripes at boot, only for 5 seconds, before having kdm displayed. Then, i have the same results.
 
If I start for example KDE Desktop Effects, i will see again the vertical stripes for 5 seconds...and return to kdm ! :)
 

Latest revision as of 16:45, 9 September 2017

Owners of AMD (previously ATI) video cards have a choice between proprietary driver (catalystAUR) and the open source drivers (ATI for older or AMDGPU for newer cards). This article covers the ATI/Radeon open source driver for older cards.

The open source driver is on par performance-wise with the proprietary driver for many cards. (See this benchmark.)

If unsure, try the open source driver first, it will suit most needs and is generally less problematic. See the feature matrix to know what is supported for the GPU. See the decoder ring to translate marketing names (e.g. Radeon HD4330) to chip names (e.g. R700).

Selecting the right driver

Depending on the card you have, find the right driver in Xorg#AMD. This page has instructions for ATI.

Installation

Note: If coming from the proprietary Catalyst driver, see AMD Catalyst#Uninstallation first.

Install the xf86-video-ati package. It provides the DDX driver for 2D acceleration and it pulls in mesa as a dependency, providing the DRI driver for 3D acceleration.

For 32-bit application support on x86_64, also install lib32-mesa from multilib.

Support for accelerated video decoding is provided by mesa-vdpau and lib32-mesa-vdpau packages.

Loading

The radeon kernel module should load fine automatically on system boot.

If it does not happen, then:

Enable early KMS

Tip: If you have problems with the resolution, Kernel mode setting#Forcing modes and EDID may help.

Kernel mode setting (KMS) is supported by the radeon driver and is mandatory and enabled by default.

KMS is typically initialized after the initramfs stage. It is possible, however, to enable KMS during the initramfs stage. To do this, add the radeon module to the MODULES line in /etc/mkinitcpio.conf:

MODULES="... radeon ..."

Now, regenerate the initramfs:

# mkinitcpio -p linux

The change takes effect at the next reboot.

Xorg 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 /etc/X11/xorg.conf.d/20-radeon.conf, and add the following:

Section "Device"
    Identifier "Radeon"
    Driver "radeon"
EndSection

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

Performance tuning

Enabling video acceleration

See Hardware video acceleration.

Driver options

The following options apply to /etc/X11/xorg.conf.d/20-radeon.conf.

Please read radeon(4) and RadeonFeature first before applying driver options.

Acceleration architecture; Glamor is available as a 2D acceleration method implemented through OpenGL, and it is the default for R600 (Radeon HD2000 series) and newer graphic cards. Older cards use EXA.

Option "AccelMethod" "glamor"

DRI3 is enabled by default since xf86-video-ati 7.8.0. For older drivers, which use DRI2 by default, switch to DRI3 with the following option:

Option "DRI" "3"

TearFree is a tearing prevention option which prevents tearing by using the hardware page flipping mechanism:

Option "TearFree" "on"

ColorTiling and ColorTiling2D are supposed to be enabled by default. Tiled mode can provide significant performance benefits with 3D applications. It is disabled if the DRM module is too old or if the current display configuration does not support it. KMS ColorTiling2D is only supported on R600 (Radeon HD2000 series) and newer chips:

Option "ColorTiling" "on"
Option "ColorTiling2D" "on"

When using Glamor as acceleration architecture, it is possible to enable the ShadowPrimary option, which enables a so-called "shadow primary" buffer for fast CPU access to pixel data, and separate scanout buffers for each display controller (CRTC). This may improve performance for some 2D workloads, potentially at the expense of other (e.g. 3D, video) workloads. Note that enabling this option currently disables Option "EnablePageFlip":

Option "ShadowPrimary" "on"

EXAVSync is only available when using EXA and can be enabled 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 known to cause instability on some chips:

Option "EXAVSync" "yes"

Below is a sample configuration file of /etc/X11/xorg.conf.d/20-radeon.conf:

Section "Device"
	Identifier  "Radeon"
	Driver "radeon"
	Option "AccelMethod" "glamor"
        Option "DRI" "3"
        Option "TearFree" "on"
        Option "ColorTiling" "on"
        Option "ColorTiling2D" "on"
EndSection
Tip: driconf is a tool which allows several settings to be modified: 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).

Kernel parameters

Tip: You may want to debug the new parameters with systool as stated in Kernel modules#Obtaining information.

Defining the gartsize, if not autodetected, can be done by adding radeon.gartsize=32 as a kernel parameter.

Note: Setting this parameter should not be needed anymore with modern AMD video cards:
[drm] Detected VRAM RAM=2048M, BAR=256M
[drm] radeon: 2048M of VRAM memory ready
[drm] radeon: 2048M of GTT memory ready.

The changes take effect at the next reboot.

Deactivating PCIe 2.0

Since kernel 3.6, PCI Express 2.0 in radeon is turned on by default.

It may be unstable with some motherboards. It can be deactivated by adding radeon.pcie_gen2=0 as a kernel parameter.

See Phoronix article for more information.

Gallium Heads-Up Display

The radeonsi driver supports the activation of a heads-up display (HUD) which can draw transparent graphs and text on top of applications that are rendering, such as games. These can show values such as the current frame rate or the CPU load for each CPU core or an average of all of them. The HUD is controlled by the GALLIUM_HUD environment variable, and can be passed the following list of parameters among others:

  • "fps" - displays current frames per second
  • "cpu" - displays the average CPU load
  • "cpu0" - displays the CPU load for the first CPU core
  • "cpu0+cpu1" - displays the CPU load for the first two CPU cores
  • "draw-calls" - displays how many times each material in an object is drawn to the screen
  • "requested-VRAM" - displays how much VRAM is being used on the GPU
  • "pixels-rendered" - displays how many pixels are being displayed

To see a full list of parameters, as well as some notes on operating GALLIUM_HUD, you can also pass the "help" parameter to a simple application such as glxgears and see the corresponding terminal output:

# GALLIUM_HUD="help" glxgears

More information can be found from this mailing list post or this blog post.

Hybrid graphics/AMD Dynamic Switchable Graphics

It is the technology used on recent laptops equiped with two GPUs, one power-efficent (generally Intel integrated card) and one more powerful and more power-hungry (generally Radeon or Nvidia). There are two ways to get it work:

  • If it is not required to run 'GPU-hungry' applications, it is possible to disable the discrete card (see Ubuntu wiki): echo OFF > /sys/kernel/debug/vgaswitcheroo/switch.
  • PRIME: Is a proper way to use hybrid graphics on Linux, but still requires a bit of manual intervention from the user.

Powersaving

Note: Power management is supported on all chips that include the appropriate power state tables in the vbios (R1xx and newer). "dpm" is only supported on R6xx and newer chips.

With the radeon driver, power saving is disabled by default and has to be enabled manually if desired.

You can choose between three different methods:

  1. dpm (enabled by default since kernel 3.13)
  2. dynpm
  3. profile

See https://www.x.org/wiki/RadeonFeature/#index3h2 for more details.

Dynamic power management

Since kernel 3.13, DPM is enabled by default for lots of AMD Radeon hardware. If you want to disable it, add the parameter radeon.dpm=0 to the kernel parameters.

Tip: DPM works on R6xx gpus, but is not enabled by default in the kernel (only R7xx and up). Setting the radeon.dpm=1 kernel parameter will enable dpm.

Unlike dynpm, the "dpm" method uses hardware on the GPU to dynamically change the clocks and voltage based on GPU load. It also enables clock and power gating.

There are 3 operation modes to choose from:

  • battery lowest power consumption
  • balanced sane default
  • performance highest performance

They can be changed via sysfs

# echo battery > /sys/class/drm/card0/device/power_dpm_state

For testing or debugging purposes, you can force the card to run in a set performance mode:

  • auto default; uses all levels in the power state
  • low enforces the lowest performance level
  • high enforces the highest performance level
# echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level

Commandline Tools

  • radcard - A script to get and set DPM power states and levels

Old methods

Dynamic frequency switching

This method dynamically changes the frequency depending on GPU load, 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.

It can be activated by simply running the following command:

# echo dynpm > /sys/class/drm/card0/device/power_method

Profile-based frequency switching

This method will allow you to select one of the five profiles (described below). Different profiles, for the most part, end up changing the frequency/voltage of the GPU. This method is not as aggressive, but is more stable and flicker free and works with multiple heads active.

To activate the method, run the following command:

# echo profile > /sys/class/drm/card0/device/power_method

Select one of the available profiles:

  • default uses the default clocks and does not change the power state. This is the default behaviour.
  • auto selects between mid and high power states based on the whether the system is on battery power or not.
  • low forces the gpu to be in the low power state all the time. Note that low can cause display problems on some laptops, which is why auto only uses low when monitors are off. Selected on other profiles when the monitors are in the DPMS-off state.
  • mid forces the gpu to be in the mid power state all the time.
  • high forces the gpu to be in the high power state all the time.

As an example, we will activate the low profile (replace low with any of the aforementioned profiles as necessary):

# echo low > /sys/class/drm/card0/device/power_profile

Persistent configuration

The activation described above is not persistent, you may use this udev rule (example for #Profile-based frequency switching):

/etc/udev/rules.d/30-radeon-pm.rules
KERNEL=="dri/card0", SUBSYSTEM=="drm", DRIVERS=="radeon", ATTR{device/power_method}="profile", ATTR{device/power_profile}="low"
Note: If the above rule is failing, try removing the dri/ prefix.

Graphical tools

  • Radeon-tray — A small program to control the power profiles of your Radeon card via systray icon. It is written in PyQt4 and is suitable for non-Gnome users.
https://github.com/StuntsPT/Radeon-tray || radeon-trayAUR

Other notes

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

# cat /sys/kernel/debug/dri/0/radeon_pm_info
  state: PM_STATE_ENABLED
  default engine clock: 300000 kHz
  current engine clock: 300720 kHz
  default memory clock: 200000 kHz

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.

Fan Speed

While the power saving features above should handle fan speeds quite well, some cards may still be too noisy in their idle state. In this case, and when your card supports it, you can change the fan speed manually.

Warning:
  • Keep in mind that the following method sets the fan speed to a fixed value, hence it will not adjust with the stress of the GPU, which can lead to overheating under heavy load.
  • Check GPU temperature when applying lower than standard values.

Issue the following command to enable the manual adjustment of the fan speed of your graphics card (or the first GPU in case of a multi GPU setup).

# echo 1 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable

Then set your desired fan speed from 0 to 255, which corresponds to 0-100% fan speed (the following command sets it to roughly 20%):

# echo 55 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1

For persistence, see the example in #Persistent configuration.

If a fixed value is not desired, there are possibilities to define a custom fan curve manually by, for example, writing a script in which fan speeds are set depending on the current temperature (current value in /sys/class/drm/card0/device/hwmon/hwmon0/temp1_input).

A GUI solution is available by installing radeon-profile-gitAUR.

TV out

First, check that you have an S-video output: xrandr 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 supports only 800x600):

xrandr --addmode S-video 800x600

Clone mode:

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

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

Force TV-out in KMS

The kernel can recognize video= parameter in following form (see KMS for more details):

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

For example:

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

Parameters with whitespaces must be quoted:

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

Current mkinitcpio implementation also requires # in front. 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 Legacy can pass such command line as is.
  • LILO needs backslashes for doublequotes (append # \"video=9-pin DIN-1:1024x768-24@60e\")

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

HDMI audio is supported in the xf86-video-ati video driver. To disable HDMI audio add radeon.audio=0 to your kernel parameters.

If there is no video after boot up, the driver option has to be disabled.

Note:

Multihead setup

Using the RandR extension

See Multihead#RandR how to setup multiple monitors by using RandR.

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 "ZaphodHeads" option which allows you to bind a specific device section to an output of your choice:

/etc/X11/xorg.conf.d/20-radeon.conf
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, when using videocards that 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 explicitly specify "ZaphodHeads" "VGA-0".

Turn vsync off

The radeon driver will enable vsync by default, which is perfectly fine except for benchmarking. To turn it off, create ~/.drirc (or edit it if it already exists) and add the following section:

~/.drirc
<driconf>
    <device screen="0" driver="dri2">
        <application name="Default">
            <option name="vblank_mode" value="0" />
        </application>
    </device>
    <!-- Other devices ... -->
</driconf>

Make sure the driver is dri2, not your video card code (like r600).

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: If the above does not work, please file a bug report. Also, why is the SwapbuffersWait option relevant here? (Discuss in Talk:ATI#)

If vsync is still enabled, you can try to disable it by editing the xf86-video-ati configuration :

/etc/X11/xorg.conf.d/20-radeon.conf
Section "Device"
	Identifier  "My Graphics Card"
	Driver	"radeon"
	Option	"EXAVSync" "off"
	Option "SwapbuffersWait" "false" 
EndSection

Troubleshooting

Performance and/or artifacts issues when using EXA

Note: This only applies to cards older than R600 (Radeon X1000 series and older). Newer cards you should use Glamor instead of EXA.

If having 2D performance issues, like slow scrolling in a terminal or webbrowser, adding Option "MigrationHeuristic" "greedy" as device option may solve the issue.

In addition disabling EXAPixmaps may solve artifacts issues, although this is generally not recommended and may cause other issues.

/etc/X11/xorg.conf.d/20-radeon.conf
Section "Device"
    Identifier "Radeon"
    Driver "radeon"
    Option "AccelMethod" "exa"
    Option "MigrationHeuristic" "greedy"
    #Option "EXAPixmaps" "off"
EndSection

Adding undetected/unsupported resolutions

See Xrandr#Adding undetected resolutions.

TV showing a black border around the screen

Note: Make sure the tv has been setup correctly (see manual) before attempting the following solution.

When connecting a TV using the HDMI port, the TV may show a blurry picture with a 2-3cm border around it. This protects against overscanning (see Wikipedia:Overscan), but 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 the 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 the wrong framebuffer device that exists on the wrong card. This can be fixed by adding this to the kernel boot line:

fbcon=map:1

This will tell the fbcon to map itself to the /dev/fb1 framebuffer dev and not the /dev/fb0, that in our case exists on the wrong graphics card. If that does not fix your problem, try booting with

fbcon=map:0

instead.

ATI X1600 (RV530 series) 3D application show black windows

There are three possible solutions:

  • Try adding pci=nomsi to your boot loader Kernel parameters.
  • If this does not work, you can try adding noapic instead of pci=nomsi.
  • If none of the above work, then you can try running vblank_mode=0 glxgears or vblank_mode=1 glxgears to see which one works for you, then install driconf and set that option in ~/.drirc.

Cursor corruption after coming out of sleep

If the cursor becomes corrupted like it's repeating itself vertically after the monitor(s) comes out of sleep, set "SWCursor" "True" in the "Device" section of the /etc/X11/xorg.conf.d/20-radeon.conf configuration file.

DisplayPort stays black on multimonitor mode

Try booting with the kernel parameter radeon.audio=0.

R9-390 Poor Performance and/or Instability

Firmware issues with R9-390 series cards include poor performance and crashes (frequently caused by gaming or using Google Maps) possibly related DPM. Comment 115 of this bug report includes instructions for a fix.

QHD / UHD / 4k support over HDMI for older Radeon cards

Older cards have their pixel clock limited to 165MHz for HDMI. Hence, they do not support QHD or 4k only via dual-link DVI but not over HDMI.

One possibility to work around this is to use custom modes with lower refresh rate, e.g. 30Hz.

Another one is a kernel patch removing the pixel clock limit, but this may damage the card!

Official kernel bug ticket with patch for 4.8: https://bugzilla.kernel.org/show_bug.cgi?id=172421

The patch introduces a new kernel parameter radeon.hdmimhz which alters the pixel clock limit.

Be sure to use a high speed HDMI cable for this.