ATI Has Open-Source Drivers Too
Since late last year the open-source Linux community has been ecstatic about the growing progress made by the Nouveau developers. Nouveau is an X.Org and FreeDesktop.org project for developing an open-source 2D/3D display driver for NVIDIA graphics cards. With NVIDIA Corporation not providing hardware specifications, this driver is being written through reverse-engineering NVIDIA's binary display driver. While the developers of Nouveau are making great strides and this driver is taking shape, the open-source ATI driver must not be forgotten.
For those that may be new to the Linux scene, ATI Technologies had released specifications to the Radeon R200 (8500 to 9200) series to X.Org developers quite a while ago. For those graphics cards, there is an excellent stable and open-source driver built into X.Org and since then ATI discontinued R200 support in their fglrx binary driver. However, support for the Radeon R300 series had to be reverse-engineered in order to construct a supportive driver (due to ATI not providing the needed specifications). The R300 driver now is nearly complete for desktop users wishing to play older games or simply benefit from Beryl and Compiz, but the driver is certainly not perfect. For instance, RS480 support with the R300 driver was only started recently and still has a way to go. Some of the other work left to tackle includes general optimizations, implementing the TTM memory manager, smooth/alpha shading, anisotropic filtering, and fixing a number of different bugs.
Last year David Airlie had written a very rudimentary 2D driver for the R500 series, however, to write the driver he had used a utility that he was not permitted to run on the R500 series and is under a Non-Disclosure Agreement with ATI/AMD. With Airlie being in violation of the agreement, ATI/AMD has not and will not permit him to release the code. However, this driver did not support 3D rendering and contained only limited functionality. Recently, however, there has been work on reverse-engineering ATI's R500 (Radeon X1000) series. There is no dummy driver available yet or even a Wiki page, but I have covered some of the progress made on my blog at MichaelLarabel.com. Among the developers working on this project are Jerome Glisse and Daniel Stone. This driver is still in its infancy but in the coming months there should hopefully be some good news to report back.
When it comes to the open-source ATI development efforts, work has been done on porting renouveau (the extremely handy utility used for reverse-engineering the NVIDIA driver) to work on ATI graphics cards. Some of the ATI tools currently available to assist in reverse-engineering the fglrx driver include Radeondump, libsegfault, kmmio tracer, and Revenge (along with Piglit for that matter). Shortly the R500 driver developers will be in need of plenty of card dumps, however, dumps and testing for the R300/400 series still may prove to be useful.
Talking with Jerome Glisse, he believes that the open-source developers know basically everything they need to know and have implemented everything for reverse engineering the ATI Radeon graphics cards. The issue basically comes down to having qualified developers work on the driver and writing it properly. Jerome Glisse had stated the Radeon driver really need some experienced developers to think about the driver's design and to cleanup the code. He also states, "The true be told the driver code (r300 especially) are a big mess and definitely need to be reworked". There has been much talk about the TTM memory manager and it offering a big boost when it comes to the graphics performance, but Jerome had later expressed fear among Radeon developers with this solution. TTM ultimately has drawbacks that outweigh the memory management capabilities. On an unrelated note to the TTM memory manager, he fears that a majority of the DRM infrastructure will need to be rewritten.
As far as the R500 driver goes, there are currently some initialization issues with the Radeon X1600 and X1900, which require loading the fglrx kernel module first. Taking place with the unreleased driver is also cleaning up some code to ensure that the driver to be released first does not have a "broken design". Taking this time in the beginning to properly engineer the R500 driver should cause a greater number of benefits down the road.
I am not trying to tell you to not support the Nouveau project, as those developers should have whatever they need in order to get their driver completed and ready for public consumption. However, the ATI driver must not be lost in this action. Linux users must continue to embrace the fabulous work done by these developers on the open-source ATI driver and this work must continue in order to provide R500 (and eventually, R600) support. At this time the open-source ATI driver is the only option for ATI Linux users wishing to use Beryl or Compiz without needing to use XGL. The major area, however, lacking with the open-source Radeon driver is in the area of TV-Out support due to Macrovision. For the normal desktop user that is not experienced at X.Org hacking, the best and most effective way to help out these developers are to provide card dumps and then testing the latest drivers. However, the open-source ATI team is in desperate need of more skilled developers.
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.