radeonhd

1. radeonhd - A Driver for AMD GPG r5xx/r6xx/r7xx Chipsets

The radeonhd driver, or xf86-video-radeonhd, is an X.org video driver for codenamed R500-R700 graphics devices. It was developed by the X11 community, mostly centered around Novell and AMD, with the free documentation provided by AMD.

The driver supports full modesetting (read: any mode is usable, not only those provided by the BIOS), and is compatible to RandR 1.3. 2D and Xv (video) acceleration is provided for all supported GPUs; 3D acceleration via Mesa is supported for r5xx/rs690 GPUs (X1xxx) and is in progress for r6xx/r7xx GPUs (HD2xxx-HD4xxx).

Status 09/2010: Linux distributions, including Novell's openSUSE, have now abandoned radeonhd as the default driver, instead using the radeon driver. radeon has more features, including Kernel Mode-Setting support and more 3D support, and it supports all Radeon generation from original R100 Radeons to R800 Radeons (HD 5000 series). Radeonhd can be continued to be updated as long as there are people find it useful.

Contents

  1. radeonhd - A Driver for AMD GPG r5xx/r6xx/r7xx Chipsets
  2. Recent Changes
  3. Supported Hardware
  4. Development
  5. More Information
  6. Getting and updating the radeonhd source code
  7. Installation
  8. Known Bugs & Limitations
  9. Reporting Errors
  10. git Bisecting
  11. Troubleshooting, Q & A
  12. Examples
  13. Glossary

Subpages:

2. Recent Changes

Version 1.3.0

Version 1.2.5

Version 1.2.4

Version 1.2.3

Version 1.2.2

Version 1.2.1

Version 1.2.0

3. Supported Hardware

The radeonhd driver supports video cards based on

Note that this simple classification of the chipsets isn't exactly correct, because often the individual components are of different generations, especially on mobility chipsets.

See supported chipsets in radeonhd git HEAD for up to date detail information.

4. Development

Development of the driver is driven by the community, with several of the developers funded by Novell and AMD. If you want to contribute to this project, join the mailing list, and have a look at the list of things to do and the open bugzilla entries.

You do not necessarily have to be a coder to help, there is documentation to be done, users to be helped, you name it. That said, the radeonhd driver project is - as almost all open software development projects - understaffed and likes to welcome any contributions.

5. 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. More information on this mailing list at lists.opensuse.org/radeonhd/.

Overview of recent updates to radeonhd: gitweb.freedesktop.org/?p=xorg/driver/xf86-video-radeonhd.

There is also 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. The documentation is mirrored on X.org. For r[67]xx development information see also the r600_demo subpage.

For an alternative X.org driver see radeon. In addition r500-r700, it also supports older Radeons and is developed by partially different people. It is currently the default X.org driver. Both radeon and radeonhd have an overlapping feature set, and both should support all r500-r700 cards. If either does not work for you, try the other one. Co-operation is happening in both directions. More information about various available drivers for r500-r700 on the radeon page, section ”What about other drivers?”.

6. 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 git.or.cz/ and a short intro at 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.

7. Installation

Note: The following assumes that you checked out the latest git version of radeonhd. If you're using a released version in form of a tarball, exchange autogen.sh with configure. Also make sure you have the necessary development files for X11 driver compilation (e.g. xorg-x11-server-sdk in openSUSE).

With X.Org 7.0 and later:

   $ ./autogen.sh
   $ make

Then as root:

   # 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. Depending on which system you use you might have to specify a libdir if you are on a 64bit system. Check if the directory /usr/lib64 exists on your system. If it does, please use ./autogen.sh --prefix /usr --libdir /usr/lib64.

With X.Org prior to 7.0:

   $ xmkmf -a
   $ make EXTRA_INCLUDES="-I/usr/include/xorg -I/usr/include/drm" all

and as root:

   $ 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

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.

Please note you need updated drm kernel modules and proper configuration (xorg.conf) for 2D and Xv on R6xx/R7xx.

8. Known Bugs & Limitations

The following subsystems have not been implemented yet or show some limitations:

See also RadeonFeature and RadeonProgram for a features and supported 3D program lists.

The following known bugs have not been resolved yet (ordered by severity):

9. Reporting Errors

Report bugs at: https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/radeonhd.

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.

The following messages are absolutely normal in your Xorg.0.log (as we don't have 3D acceleration yet):

   (EE) AIGLX error: dlopen of /usr/lib/dri/r600_dri.so failed
   (EE) AIGLX: reverting to software rendering

10. git Bisecting

If you stumble over a regression and the source of the issue cannot be determined easily, you may have to git-bisect the issue. This helps us identifying the commit that introduced the issue. As you have to compile the driver yourself in this process, make sure you have the necessary development files (e.g. xorg-x11-server-sdk in openSUSE). See Installation for more tips about compiling the driver.

First get a copy of the repository if you don't have that already:

   $ git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-radeonhd

Otherwise make sure that the copy you have is recent (if you can already reproduce the regression with your current state, you should NOT do that):

   $ git pull

Identify the last known good version (e.g. the last released version), and the first known broken version. The gitk command can help you by visualizing the history. You need to know the SHA1-ids (alternatively, known names as 1.2.4 or master).

Start a new git-bisect session:

   $ git bisect start [bad] [good]

E.g. if you just noted that with the current git master changing the backlight level is no longer working, while it was working with 1.2.5, do "git bisect master 1.2.5". If you remember that you tested git commit bc42c63 and it still worked, you can save some time by "git bisect master bc42c63".

You will have to do the following in a loop until git tells you that you are done:

   $ ./autogen.sh && make && sudo make install

   $ git bisect good

   $ git bisect bad

At the end git will present you a single commit that first exhibits the broken behavior. This git commit number is the important information for the regression you analyzed.

11. Troubleshooting, Q & A

See also examples below for a complete setup.

11.1. I get strange build errors about "no rule to make target ..."

You've probably pulled in some new source files when you updated your sources from git. In this case you should do:

$ make distclean
$ ./autogen.sh
$ make

Sometimes in such cases the build doesn't break in such cases but the driver crashes apparently for new reason. Before reporting an error, please try if those steps above make things work already.

11.2. autogen.sh / configure doesn't work

If during running autogen.sh / configure you get

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

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.m4

Make 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.

11.3. 3D applications aren't working

Please read how to setup DRI support.

11.4. 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.

11.5. 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.

11.6. 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.

11.7. The driver doesn't start on my laptop. I have 4GB of main memory, BTW

Some machines with M72, M83, and possibly other IGP chipsets (especially laptops) with more than 2GB of memory exhibit this BIOS issue. Apparently, the MTRR table is not setup correctly. One possibility is to reduce the amount of RAM, the more reasonable (but only little tested so far) alternative is to enable the MTRR sanitizer in the kernel.

grep "CONFIG_MTRR" /boot/config*

to check whether CONFIG_MTRR is active for your kernel. If it is, boot with

enable_mtrr_cleanup mtrr_spare_reg_nr=0

, otherwise you have to recompile your kernel with this option enabled.

11.8. The cursor shows weird corruptions at some points of the screen

This is Bug 13405: Hardware cursor corruption. Presumably fixed with git commit 4be5f7152f71 (not in any release yet).

11.9. How do I enable / disable an output after a monitor has been plugged in / removed?

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.