This Is What Started AMD's Open-Source Strategy

Written by Michael Larabel in Display Drivers on 17 September 2011 at 01:00 AM EDT. Page 2 of 6. 47 Comments.

(Pardon some formatting problems when exporting the letter...)

Proposal to Advanced Micro Devices for the Implementation of a Driver for its ATI Radeon (tm) HD 2000 Family of Graphics Hardware (R600).

  1. Current Status

Today two separate and independent drivers exist for ATI graphics hardware:

  • an open source implementation that is shipped as part of the 'ati' driver by X.Org

  • and a proprietary non-open 'fglrx' implementation which is provided by AMD GPG directly.

The open source driver presently supports all generations of ATI RADEON chipsets up to the R400 series chips. This includes basic mode setting for multiple outputs, 2D acceleration, and hardware cursor and video overlays.

Accelerated OpenGL support for the open source implementation is provided by the DRI Project (Direct Rendering Interface) which develops plug-in modules providing accelerated drivers to the OpenGL library libGL as shipped by the Mesa Project. It can be considered stable for all chipset generations up to R200. Support for later generations up to the R480/481 family is available -including basic support for programmable shaders. This however is still experimental due to the lack of programming documentation available to the open source community. Furthermore it does not cover all series of chips of these generations. This code is mainly the result of reverse engineering efforts by the open source community.

For any generation including and later than R500 the open driver offers no support at all.

Unfortunately the open source driver is not in a state that offers consistent quality across releases. Regressions are not an exception.

The proprietary driver features all 2D functionalities that are also supported by the open driver. Additionally it provides an AMD proprietary interface for altering modes and output parameters through 'atieventsd' and a GUI both of which are installed along with the driver.

The proprietary driver offers an enterpriese grade OpenGL implementation with shader support. It used to be based on the framework provided by the Mesa project so that this driver plugged into Mesa's libGL seamlessly like other DRI drivers. Today however AMD ships its own version of libG, requiring distributors to exchange the existing library depending on which driver is installed.

Today the ATI driver supports chipset generations ranging from R300 to R500. AMD undergoes huge efforts to work with Linux vendors to track issues about this driver reported to them. Older generations of ATI chips are supported by a separate proprietary driver. AMD does not provide maintenance for this driver any more.

The ATI proprietary drivers are somewhat hampered by ongoing changes in the kernel-internal ABI and changes in the behavior of kernel subsystems.

Linux vendors are unable to include proprietary drivers as shipped by AMD in any of their products, to avoid violating the General Public License v2 (GPLv2) of the Linux kernel. This license disallows creation of derived work from code under it if the source code of binary modules to be linked with cannot be made public under conditions compatible with it.

To accommodate customers who need to rely on the proprietary driver, NOVELL designed a third party

installation/update mechanism which allows to load this driver from a web server on the Internet which is not hosted by NOVELL.

In the past ATI has supported the development efforts of the open source community and provided some documentation under NDA to develop the open source driver. Explicit permission was given to publish the derived code. This practice has been discontinued since the release of the R300 chipset generation.

The decision to no longer provide any specifications for open source driver development has led to some criticism by the open source community. The lack of availability of an open driver for AMD's latest chipset generation is partially to blame for the decreasing market share of ATI products in the Linux market.

  1. GAP Analysis

  1. No driver support is available on Linux for the R600 series of ATI chipsets that marks the latest generation in state-of-the-art graphics hardware available from AMD.

  2. Open driver support is available only up to the R400 generation of ATI hardware.

  3. The open driver for ATI RADEON suffers from frequent regressions.

  4. The open driver for ATI hardware is lacking important functionalities or have suboptimal implementations (like video playback and 3D support).

  5. Documentation for ATI hardware for open source drivers is only available up to the R200 series of hardware.

  6. Supported proprietary drivers from AMD are only available for the R300 to R500 series. Drivers for earlier generations are available without support. Proprietary binary-only drivers still suffer from changes in the kernel-internal APIs and wrongly expect specific behavior of kernel subsystems which is not always maintained.

  7. Proprietary driver modules for the Linux kernel cannot be shipped by Linux vendors due to GPL violation issues.

Desired goals:

  1. Provide an open source driver with full support for the latest generations of ATI hardware

    including new chipset versions of the same generation.

  2. Improve the quality of the open source driver for older hardware generations.

  3. Add missing support for already released series of ATI hardware to the open source driver including support for video playback and 3D (with programmable shader support).

  4. Provide specification and programming documentation for graphics chipsets for the development of an open source driver to the open source community including specification updates for new chips of the same series including erratas.

  5. Continue to implement open source drivers and publication of specifications for future generation chipsets.

Minimal goals:

  1. Provide a basic 2D driver for the latest generation of ATI hardware with at least minimal 3D client side (libGL) support at least sufficient to accelerate a state-of-the-art desktop.

  2. Release specifications and programming documentation for 2D functionalities like hardware initialization, mode setting, support for different outputs (VGA and DVI), hardware overlays and sprites as well as 2D acceleration for old and current generations of hardware to the open source community under a non-disclosure agreement which is available to any open source developer allowing him to distribute code under an open source license.

  3. Provide a kernel driver which is compatible with the GNU Public License V2.


Related Articles