1. radeonhd - The Driver for AMD GPG r5xx/r6xx Chipsets
The radeonhd driver, or xf86-video-radeonhd is an X.org video driver for R500 and newer ATI graphics devices.
It is being developed by Novell for AMD, with the free documentation provided by AMD.
The driver supports full modesetting (read: any mode is useable, not only those provided by the BIOS), which is backwards compatible to RandR 1.2. But the driver still lacks more advanced features like 2D, 3D and video acceleration as the information for such an implementation hasn't been made available yet.
Contents
- radeonhd - The Driver for AMD GPG r5xx/r6xx Chipsets
- Recent Changes
- Supported Hardware
- More Information
- Getting and updating the radeonhd source code
- Installation
- Known Bugs & Limitations
- Reporting Errors
- Troubleshooting, Q & A
- I only get a very jittery display
- My monitor isn't detected
- My monitor section isn't used any longer
- How do I enable / disable an output after a monitor has been plugged in / removed?
- How do I set up multiple monitors?
- How do I configure a multimonitor setup statically?
- My Gnome/KDE/whatever panel shows up on the wrong monitor
- xrandr returns with BadMatch (invalid parameter attributes)
- Why is radeonhd so much slower than avivo?
- Examples
2. Recent Changes
Version 1.2.1
- Build-fixes for systems without -NDEBUG, and for rhd_dump
- Added two new RV670 devices.
Version 1.2.0
- Added support for RV620, RV635, and R680.
- Added 2D acceleration for R5xx (including RS6xx), both XAA and EXA.
- Added support for DDIA block (second digital output) on RS690.
- Added support for interlaced modes
- Added additional layers for splitting outputs into encoders and transmitters as needed for new hardware.
Added support for DragonFly BSD.
- Improved RandR corner cases.
- Improved handling of secondary cards.
- Implemented foundation work for future TV support.
- Huge number of bugfixes and minor updates.
Version 1.1.0
- Added Support for RS600, preliminary RV670.
- Allow panning in RandR mode.
- Preliminary (read: untested) support for HDMI connectors.
- Lots of bugfixes, e.g.
- Better monitor detection.
- Gamma + palette fixes.
- Mode stability + textmode restore.
- RandR mode selection fixes.
Version 1.0.0
- First released version.
- Full modesetting driver, capable of driving multiple monitors in any resolution.
- Support for VGA, DVI, DMS-59, and laptop panels.
- Support for monitor hotplug detection, DDC, and dynamic reconfiguration.
- Full RandR 1.2 compatibility.
- AtomBIOS support for initialization, data tables, etc.
- Early RandR 1.3 property support (subject to change).
- Hardware cursor support.
No 2D & 3D acceleration, no XVideo yet. No TV, Component, and HDMI yet.
3. Supported Hardware
The radeonhd driver supports video cards based on the following ATI chips:
RV505: Radeon X1550, X1550 64bit
RV515: Radeon X1300, X1550, X1600; FireGL V3300, V3350
RV516: Radeon X1300, X1550, X1550 64-bit, X1600; FireMV 2250
R520: Radeon X1800; FireGL V5300, V7200, V7300, V7350
RV530: Radeon X1300 XT, X1600, X1600 Pro, X1650; FireGL V3400, V5200
RV535: Radeon X1300, X1650
RV550: Radeon X2300 HD
RV560: Radeon X1650
RV570: Radeon X1950, X1950 GT; FireGL V7400
R580: Radeon X1900, X1950; AMD Stream Processor
R600: Radeon HD 2900 GT/Pro/XT; FireGL V7600/V8600/V8650
RV610: Radeon HD 2350, HD 2400 Pro/XT, HD 2400 Pro AGP; FireGL V4000
RV620: Radeon HD 3450, HD 3470
RV630: Radeon HD 2600 LE/Pro/XT, HD 2600 Pro/XT AGP; Gemini RV630; FireGL V3600/V5600
RV635: Radeon HD 3650, HD 3670
RV670: Radeon HD 3850, HD 3870, FireGL V7700
RV680: Radeon HD 3870 X2
M52: Mobility Radeon X1300
M54: Mobility Radeon X1400; M54-GL
M56: Mobility Radeon X1600; Mobility FireGL V5200
M58: Mobility Radeon X1800, X1800 XT; Mobility FireGL V7100, V7200
M62: Mobility Radeon X1350
M64: Mobility Radeon X1450, X2300
M66: Mobility Radeon X1700, X1700 XT; FireGL V5250
M68: Mobility Radeon X1900
M71: Mobility Radeon HD 2300
M72: Mobility Radeon HD 2400; Radeon E2400
M74: Mobility Radeon HD 2400 XT
M76: Mobility Radeon HD 2600; (Gemini ATI) Mobility Radeon HD 2600 XT
M82: Mobility Radeon HD 3400
M86: Mobility Radeon HD 3600
RS690: Radeon X1200, X1250, X1270
This section is taken straight from the radeonhd(4) man page, and should be kept in sync with radeonhd(4) and the src/rhd_id.c file in the source.
4. More Information
The mailing list for the radeonhd driver is radeonhd@opensuse.org , you can subscribe to this mailing list by sending a mail to radeonhd+subscribe@opensuse.org.
For more information on this mailing list, please visit http://lists.opensuse.org/radeonhd/
Overview of recent updates to radeonhd: http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-radeonhd
The git repository with the radeonhd source code: git://anongit.freedesktop.org/git/xorg/driver/xf86-video-radeonhd
Report bugs at: https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/radeonhd
Also there is an IRC channel #radeonhd on freenode.net. IRC logs at phoronix' radeonhd.org.
The radeonhd:packages page lists your source for dep, rpm, etc. packages.
ATI is providing free documentation for the chips. Beware, this is extremely technical.
5. Getting and updating the radeonhd source code
Released radeonhd tarballs can be downloaded from ftp://ftp.freedesktop.org/pub/individual/driver/
The name of the tarball will be xf86-video-radeonhd-<version>.tar.bz2
The developer version of radeonhd is maintained in the git repository found at git://anongit.freedesktop.org/git/xorg/driver/xf86-video-radeonhd
You can find information on using git at the git website http://git.or.cz/ and a short intro at http://www.freedesktop.org/wiki/Infrastructure/git/Developers
You can get a copy of the repository like this:
$ git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-radeonhd
This will create a directory xf86-video-radeonhd in the current directory by default, or the given directory my-radeonhd otherwise.
If you have not made any local changes and want to update you source code with the newest stuff from the official radeonhd repository, you can run this:
$ git pull
If you HAVE made local changes and committed them locally to your master branch (with git commit -a), you will be better off running
$ git fetch $ git rebase origin
If you're using more branches, read the git docs.
6. Installation
With X.Org 7.0 and later:
$ ./autogen.sh $ make $ make install
This will litter all kinds of compiled files throughout your source tree.
Please note: make install will usually install to /usr/local. On Linux X is usually installed in /usr. To change this, you need to add the argument --prefix /usr to autogen.sh, i.e.: ./autogen.sh --prefix /usr.
With X.Org prior to 7.0:
$ xmkmf -a $ make EXTRA_INCLUDES="-I/usr/include/xorg" all $ make install
This uses imake and is for compatibility with older systems.
To avoid building in your source tree, do:
$ mkdir _b && cd _b $ ../autogen.sh $ make $ make install
Runs the build in _b/ - and if something is completely messed up, you can safely remove the _b/ directory and create a new one without affecting any source files.
Hint: If you happen to have multiple branches in your git source tree, you
can have per-branch _b-BRANCH/ build trees and _i-BRANCH/ install trees. ("... configure ... --prefix=$PWD/_i-BRANCH")
Note that none of these methods will install the rhd_conntest tool. The "xmkmf" method always requires a separate "make" run in utils/conntest. The other two will build rhd_conntest by default if its requirements are met.
6.1. Common problems during builds
6.1.1. Problem:
output of ./autogen.sh:
autoreconf: running: /usr/bin/autoconf
configure.ac:35: error: possibly undefined macro: XORG_DRIVER_CHECK_EXT
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
6.1.2. Solution
Your system lacks one or more of these files:
/usr/share/aclocal/xorg-macros.m4
/usr/share/aclocal/xorg-server.m4
/usr/share/aclocal/xorgversion.m4Make sure you have all required X.org development packages installed. These may be called xorg-dev, xorg-x11-server-sdk and xorg-x11-util-macros, or something similar.
7. Known Bugs & Limitations
The following subsystems have not been implemented yet or show some limitations:
- No 3D acceleration so far. 2D acceleration is implemented for R5xx only upto now. No XVideo (needs 3D engine for scaling). Still, fullscreen video is working fluently for many users.
- No TV and Component connector support so far.
- Dual Link DVI support is untested so far.
- Panels only show native resolution.
- No RandR rotation support so far.
Suspend & Resume is only tested on some hardware. Very often it just works, but your mileage may vary.
- No powermanagement yet. Depending on your hardware, the fan might run at full speed.
The following known bugs have not been resolved yet (ordered by severity):
Bug 13405: Hardware cursor corruption. Haven't been able to reproduce reliably yet.
Bug 13605: MR HD 2600: Panel remains black
- Some cards seem to provide broken connector tables. We're constantly fixing those. Please report if you have one.
- Whiteouts on console switching under some circumstances. (Should be fixed)
Panel brightness cannot be changed because ACPI events aren't handled properly. Workaround: Switch to a different virtual terminal for that. Affects backlight on a number of laptops, e.g. from the IBM/Lenovo ThinkPad series. (Seems to be fixed in git since some time in 2008-03, needs to be verified)
With two monitors of different resolution connected both show up with the same (lower) resolution when RandR is active at startup. This seems to be a general RandR issue. Can be changed with --output <output> --auto during runtime, or with Option "PreferredMode" "<mode>" with newer Xservers (known to be buggy up to Xserver 1.4.0).
8. Reporting Errors
When reporting an error with bugzilla, please be sure to attach your xorg.conf and Xorg.0.log. Please use -logverbose 7 for the Xserver in this case. If the error is related to RandR, please verify the xrandr version you are using, and attach the output of xrandr -q; xrandr -q --verbose.
If you want to report a crash try to get a decent stack backtrace (bt full) in gdb. You have to compile with debugging information (-O0 -g3) or install -debuginfo packages for that. If a -debuginfo package for the Xserver is available for your distribution, please install it as well. It does not have any negative side effects apart from using space on your harddisk.
If you don't get any output on your monitors at all, please add Option "NoRandR" to the "Device" section in your xorg.conf, and verify whether this issue is related to RandR or to general modesetting.
9. Troubleshooting, Q & A
See also examples below for a complete setup.
9.1. I only get a very jittery display
You probably used the fglrx driver before. It doesn't restore the linebuffer completely on exit. You have to reboot your system to get this fixed. In some rare cases you might even have to power it off and restart it. Suspend to disk & resume is reported to work on many systems as well.
9.2. My monitor isn't detected
On R5xx hardware the description of the hot plug detection (HPD) pins in the AtomBIOS connector table is often broken. Please try using
Option "HPD" "swap"
in the "Device" section. If this helps, please test all outputs (as far as possible with your equipment), and report your findings to the mailing list. Reports should include your Xorg.0.log (the working version) and your results regarding testing.
If this doesn't help, please try:
Option "HPD" "off"
This disables HPD detection completely. In some cases the HPD pin of the GPU doesn't seem to be connected to the DVI connector although it is advertised in the BIOS.
NOTE: Option "HPD" should always only be a workaround until the quirks table in the driver has been updated. ALWAYS report if it is needed to get your monitor running.
If you are using a KVM switch for your analog monitor and this monitor isn't detected correctly please try without the KVM switch. Analog displays are detected thru 'load detection' ie detection of the terminating resistors on the monitor side. The VGA standard requires 75 Ohm resistors on the RGB lines. Some KVM switches seem to not meet these requirements.
9.3. My monitor section isn't used any longer
Right. This is standard with RandR. Now the monitor sections have to specified with
Option "monitor-<output_name>" "<monitor_name>"
in the "Device" section. You can get all output names of your card with xrandr -q. See also example below.
Behavior of monitor sections is different to standard modesetting in radeonhd. With standard modesetting a monitor section replaces the EDID detected monitor (thus typically reducing the maximum mode size to 1024x768), in RandR it doesn't. It's not exactly clear in which cases which parameters are overridden by the monitor section and how to override EDID detected parameters and modes in the RandR case.
9.4. How do I enable / disable an output after a monitor has been plugged in / removed?
xrandr --auto
9.5. How do I set up multiple monitors?
xrandr --output <output_name> --right-of <other_output_name>
If this fails, the most common reason is the following: The X.org framebuffer cannot be resized after initialization (yet). You have to either configure this statically (see below), or specify the maximum needed size with
Virtual <width> <height>
in the "Display" subsection of the "Screen" section.
If xrandr is not able to unclone displays (monitors show the same screen still), and you have set virtual correctly, it can also be that you need a newer xrandr (1.2.3 or git), and potentially also a newer xserver. You can try to explicitly set the used Crtc with --crtc 1 or 0.
xrandr -q prints the maximum frame buffer size in the first line of its output.
9.6. How do I configure a multimonitor setup statically?
Add (mostly empty) monitor sections for your monitors like described in the answer above. Then add
Option "RightOf" "<other_monitor_name>"
to the monitor section representing your right monitor. Alternatively, you can use LeftOf - working correctly only with the latest Xserver (bugfix). Of course there's also Above and Below.
You can also use <other_output_name> instead of <other_monitor_name>. Also read man 5 xorg.conf.
9.7. My Gnome/KDE/whatever panel shows up on the wrong monitor
Add your preferred monitor to
Option "RROutputOrder" "<monitor_name>"
in the "Device" section. This reorders the RandR outputs, which is reflected in the Xinerama screen order. You can specify any number of outputs, separated by spaces or comas. Note that this is a radeonhd specific option, it won't work with other drivers.
9.8. xrandr returns with BadMatch (invalid parameter attributes)
Get a newer xrandr (1.2.3 or git), and potentially also a newer xserver. If it still happens, send a mail to radeonhd@opensuse.org or file a bug at freedesktop.org. You can get the newest xrandr from git by
git-clone git://anongit.freedesktop.org/git/xorg/app/xrandr
9.9. Why is radeonhd so much slower than avivo?
There may be an old, obsolete line in your xorg.conf file from some fglrx setup a long time ago:
Option "mtrr" "no" # ancient, obsolete option: REMOVE IT!
If you have such a line, removing it can speed up radeonhd considerably.
General note: As a rule, one does not need any xorg.conf file with Xserver 1.4 and up, so it is always a good idea to make sure you really need all the statements in there.
10. Examples
Example xorg.conf (minimal for Xserver 1.3 and up), e.g. no input devices or modes configured, monitors configured by EDID data):
Section "Monitor"
Identifier "External"
Option "RightOf" "Panel"
EndSection
Section "Monitor"
Identifier "Panel"
EndSection
Section "Device"
Identifier "MyCard"
Driver "radeonhd"
Option "monitor-VGA_CRT1/DAC_A" "External"
Option "monitor-PANEL_LCD1/LVDS" "Panel"
Option "RROutputOrder" "PANEL_LCD1/LVDS"
EndSection
Section "Screen"
Identifier "MyScreen"
Device "MyCard"
DefaultDepth 24
SubSection "Display"
Depth 24
## This is superfluous and actually harmful with a
## static configuration. Enable for dynamic config only.
#Virtual 2704 1050
EndSubSection
EndSectionExample call to configure multiple screens dynamically (set Virtual in xorg.conf for that to work):
xrandr --output VGA_CRT1/DAC_A --right-of PANEL_LCD1/LVDS


