AMD Releases 3D Programming Documentation
For the past several weeks we have been referencing AMD's "tcore" in several of our articles, which is a user-space software suite that has been developed and used internally at ATI by engineers to work on various aspects of their binary drivers. Tcore is primarily used for testing prior to the availability of the actual silicon for their forthcoming graphics processors. John Bridgman and Alex Deucher have been working tediously to get this tcore source-code sanitized and cleared for public release, and finally they have reached this milestone. AMD has just published the first bits of open-source 3D programming documentation for ATI GPUs. This 3D programming documentation covers the R500 series and even goes back with information on the R300/400 series as well. The R600 3D programming guide will also be out soon. This information available today is what will foster the growth of open-source R500/600 3D support for the Radeon and RadeonHD drivers as well as R600 2D acceleration.
We've shared in earlier articles that AMD's plans for enabling open-source 3D support would come in the way of sample source-code that would allow developers to better understand the 3D engine, as opposed to just releasing 3D documentation. However, those plans have changed slightly. Due to the modularization of tcore and tgl (the OpenGL component), more weight is now being placed into the 3D documentation so that developers can better understand the design of the 3D engine. This guide not only covers the R500 series, but contains information going back into the R300 series. This R300 information will help in filling some of the unknowns and areas once reverse-engineered. Particularly there should be stability improvements as well as performance improvements, if enough time is spent tuning the driver. Information covering the 3D side of the R600 series is still being worked on but is expected in about one month.
Tcore is made up of about 60,000 lines of code and allows for testing of such areas as GPU initialization, command submission, and is able to run either as a simulator or on actual hardware. Also being released are some microcode files with Tcore and the latest microcode from the fglrx production driver that will go into the DRM tree. The bottom layer of AMD's new OpenGL driver from last Fall is also being evaluated as possibly being open-sourced in the near future.
While opening up tcore is really about inducing open-source 3D support for the R500/600 series, this information will assist in being able to offer 2D acceleration for the R600 series. The Radeon HD 2000 series no longer has a 2D engine but emulates the calls on the 3D side using the CP (Command Processor). The RadeonHD driver still uses MMIO (Mapped Memory IO), so first it must switch to using the command processor. Meanwhile, there is R500 XAA/EXA acceleration in the RadeonHD driver and the Radeon driver is already able to use this command processor.
The 3D programming documentation today is 300 pages and is made up of a programming guide and register specifications. Among the areas covered in this 3D guide are the command processor, vertex shaders, fragment shaders, Hyper-Z, and the various 3D registers. Editor's Note: In the hours leading up to this public documentation drop, we've been told that tcore will now not be available for immediate download with this 3D programming documentation. We would expect tcore to be available very soon.
This is now the third open-source dump from AMD since implementing their new open-source strategy. The first release occurred in September with the RV630 and M56 Register Reference Guides and then last month there was the M76 and RS690 drops. These previous documents have just covered R500/600 card support with mode-setting, LVTMA, TMDS, i2c, and other basic but critical elements. On a semi-related note, earlier this week AMD also opened up their AMD Performance Library (APL) under the Apache License as Framewave.
AMD has been criticized for being slow on releasing NDA-free documents to the open-source community, but they are sanitizing and clearing these documents for release in real-time and with only two people (John Bridgman and Alex Deucher) doing a majority of the work and then having this information cleared by their legal department. Their schedule from the start has been to release 3D documentation in Q1'08, and from today's release they are still on schedule with meeting this goal. This, however, is in starch contrast to Intel who at the end of last month had released all of their 965 and G35 Express IGP documents to the open-source community, which covered everything from the initialization to 3D and video playback, but they had worked on this internally for several months in the dark.
In just a few hours, John Bridgman will be speaking at FOSDEM 2008 on open-sourcing ATI/AMD and will cover AMD's intentions and plans along with difficulties they have experienced in this open-source mission. Following that talk, Egbert Eich will be talking about the RadeonHD driver when it comes to its status, roadmap, and future developments. We will be providing live coverage from FOSDEM 2008 on Phoronix and we will be publishing videos and pictures from the X.Org Dev Room. AMD's tcore is intended for developers and not end-users, though if you're interested the code can be downloaded from AMD's open GPU website or the X.Org mirror. Further information about the RadeonHD driver can be found from searching RadeonHD or RadeonHD.org.
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.