Open-Source 2D, 3D For ATI Radeon HD 5000 Series GPUs

Written by Michael Larabel in Display Drivers on 20 August 2010 at 06:11 PM EDT. Page 1 of 1. 134 Comments.

AMD continues to abide by their commitment to provide open-source support for their graphics cards and as proof of that this afternoon they have released their initial hardware acceleration code that supports the ATI Radeon HD 5000 "Evergreen" family of consumer grade graphics processors. While this Evergreen support isn't yet finished and for the time being is targeted towards Linux developers and enthusiasts, you can now play around with your ATI Radeon HD 5000 graphics processor on an open-source driver while having 2D EXA, X-Video, and OpenGL acceleration.

The ATI Radeon HD 5000 series family launched back in September of last year with the Radeon HD 5850 and Radeon HD 5870 graphics cards, which was followed by the launch of other GPUs like the Radeon HD 5750, Radeon HD 5770, and Radeon HD 5970. Following those product milestones, in December there was the release of some Evergreen shader documentation and by this February, there was finally Evergreen KMS support for utilizing kernel mode-setting and other basic functionality with your new ATI Radeon hardware. This initial KMS support was merged into the Linux 2.6.34 kernel, but it went without any X-Video or 2D EXA acceleration support. In April there was another AMD code drop for Evergreen and it implemented the command processor, interrupts, and graphics initialization support along with providing new microcode for these ASICs.

Back in April we also were communicated the first bits of details regarding their planned open-source 3D work for this hardware, which would come in the form of a new driver that was to be largely modeled around the R600 classic Mesa driver, but would live in its own driver due to a number of register differences and other changes. AMD was also considering going straight to a Gallium3D driver for the Radeon HD 5000 series, but alas they ended up going with a classic Mesa driver first was once again. Since then we have reported various other details about ATI's Evergreen hardware on Linux and various discussions amongst these AMD employees, Linux developers, and other interested users within our forums. This driver along with the 2D/video acceleration code was being developed internally within AMD until it cleared the final legal review. Today though, 332 days after the first Evergreen graphics cards were released, the public finally has the first open-source hardware-acceleration support for ATI Radeon HD 5400/5500/5600/5700/5800/5900 series ASICs. Up until now, Radeon HD 5000 customers have really just had the binary-only ATI Catalyst Linux driver to use, which many view as being tainted and buggy, although it will still be the only option for those interested in maximum performance and the greatest set of features.

While the underlying DRM (Direct Rendering Manager) bits have landed in the Linux kernel for this latest-generation hardware, the DDX driver code was finally made available to provide 2D (EXA) and X-Video support for this hardware. For now, this support is living within the evergreen_accel branch of the xf86-video-ati driver. Adding this 2D/video support for the Radeon HD 5000 family adds over 11,000 lines of code to this open-source X.Org driver. Alex Deucher of AMD has mostly written this code. It will be merged into the mainline xf86-video-ati driver once it has matured in the coming weeks. At this time there are also some known issues of GPU hangs being resulted under certain conditions when using this acceleration code. This code is dependent upon using kernel mode-setting with the Linux 2.6.35 kernel or newer.

The initial Evergreen/R800 Mesa code is dropped in this Git commit against the mainline Mesa code-base (Update: There's more 3D details here now that the code has landed.). This commit ends up adding over 12,000 lines of code to the R600 DRI driver. It may be close to the same speed and feature parity as the drivers that support earlier product generations -- even the previous-generation Radeon HD 4000 series that has quite decent open-source 3D support within its classic Mesa driver, but there will be some initial bugs. This is just a first-run OpenGL driver. John Bridgman, the AMD employee that has been leading the open-source graphics strategy from the start, also does not know how this driver will evolve. Following this, the Evergreen register documentation that is released to the public will also be updated and released.

John acknowledges that the open-source community has been working hard on ATI R600g, the Gallium3D driver for ATI Radeon HD 2000/3000/4000 series graphics cards, the past few weeks and it is beginning to work in functional tests. The R600g driver still is not as complete as the R600 classic Mesa driver or the R300g driver that provides Gallium3D support for graphics cards up through the ATI Radeon X1000 (R500) series, but it is quickly getting there. The community developers may decide to continue focusing their efforts on R600g rather than touching this Evergreen classic Mesa code. Once the R600g driver is in good standing, it is possible the community developers could then build the Evergreen "R800" support into this existing Gallium3D driver, but it is unknown at this point what direction they will be heading.

Additionally, John will be re-tasking AMD's open-source developers within a week or two. With the foundation of the Evergreen 2D/3D/video support now laid, AMD will leave the rest up to the open-source community to complete while John will take AMD's limited internal developers and begin working on their next-generation support. So we are not in another situation where it takes nearly a year for there to be open-source 2D/3D support when a new product generation launches, the open-source AMD developers will begin early on supporting upcoming products so there is less of a delay. AMD's Radeon HD 6000 series whose GPU family codename is "Southern Islands" is launching later this year. Besides their open-source developers starting early on this Linux upbringing (their proprietary driver team still should have same-day Linux support), it's rumored that the ATI Radeon HD 6000 architectural changes aren't too significant, which should reduce the workload of the open-source developers by being able to build upon the existing DRM/Mesa/DDX code. This is just like Intel's open-source Linux developers already working on Sandy Bridge GPU support, but they're already to the point where they have the code out in the public while the processors are still months from being shipped.

If you are a developer or interested ATI Linux enthusiast, be sure to try this new code. We are already gearing up for some tests of this new 2D and 3D code. For those end-users not comfortable building graphics drivers from source, this code is too late for it to be stabilized and make its way into Ubuntu 10.10 and other Linux distributions shipping major updates in Q3'2010, but it will likely be in good shape for Ubuntu 11.04 and other H1'2011 operating system releases. Perhaps by then we will also have the first bits of open-source support for the ATI Radeon HD 6000 series on Linux, which would be a great turnaround compared to the 300+ days we just had with Evergreen.

If you enjoyed this article consider joining Phoronix Premium to view this site ad-free, multi-page articles on a single page, and other benefits. PayPal or Stripe tips are also graciously accepted. Thanks for your support.


Related Articles
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.