For months we have been telling you that AMD has been preparing to release their R600 series documentation as well as opening up the source-code to two of their internal software projects used for testing new graphics processor designs prior to the availability of the actual hardware. Advanced Micro Devices has yet to release their 3D programming documentation covering the R600 series (or the brand-new RV770) nor the source-code to their two internal projects (TCore and KGrids), but following several postings in our forums over the past couple of weeks and many emails inquiring about the status, today we have a brief update to share.
Since the end of 2007 it has been a mixed bag as to whether AMD would assist the open-source community in developing the Mesa 3D driver (as part of their open-source strategy) by releasing the register documentation covering the 3D engine or by providing sample source-code -- as they had been uncertain as to what would be more beneficial. It was even considered by AMD of opening up the bottom layer of their proprietary fglrx driver in order to help. AMD was very close to releasing TCore back in February and again in April at XDC, but ultimately it ended up being a 300 page programming guide that did the trick for R500 3D support (AMD Releases 3D Programming Documentation). This programming guide covered R500 register specifications, use of the command processor, vertex shaders, fragment shaders, and Hyper-Z. AMD had also gone back and released an NDA-free version of the R300 3D register guide.
Shortly following this documentation was the release of microcode for all Radeon GPUs that was stripped away from their production driver. This documentation and the availability of the microcode had worked out in everyone's favor as the hardware-accelerated glxgears milestone was quickly met and not even 75 days after its release there was working 3D (with Compiz support) for the Radeon X1000 series using the open-source driver that's even capable of handling some games (Gaming With The Open-Source R500 Driver).
While documentation was enough for previous generations of ATI graphics processors in obtaining community-generated open-source 3D support, with the R600 series this will be quite different. Starting with the R600 series (and continuing with the recently announced RV770, Radeon HD 4800 series) there is no longer a physical 2D engine. Instead, 2D calls are emulated using the command processor, or CP for short. Both the Radeon and RadeonHD drivers are now capable of using the command processor through the Direct Rendering Manager (DRM) as opposed to MMIO (Memory Mapped IO). Recently Luc Verhaegen has exposed a way in the Command Submission branch to use the command processor without relying upon any DRM. In regards to the R600 2D acceleration, the support will be written in a way that it will support the R600 series and will run almost unchanged on the RV770 (Radeon HD 4800) series.
As we have shared before, TCore is a software project that has been developed and used internally by AMD/ATI with its primary function being for software testing prior to the availability of the actual silicon for future graphics processor designs. Several test programs can then be written that run against TCore and help in the debugging process by running an emulated mode, etc. The way it works is that TCore just initializes and then waits for a test program to run. AMD's KGrids project is similar to TCore except that it's a driver that runs at the kernel level. There is no ETA for the source-code for either of these projects, but it looks like the R600 documentation will first ship. The sanitization process for the KGrids/TCore source-code involves removing unsanitized headers and portions of the code that wouldn't be relevant to jump-starting the open-source R600 2D/3D support. Part of what makes this process difficult though is that both projects are a constant work in progress. TCore is already being used to test GPU designs that aren't slated for introduction until 2010.
With the R500 3D Mesa code already having been established (as an extension of the R300/400 code), TCore will be of limited advantage. AMD's John Bridgman describes that TCore may help a developer down the road a nagging intermittent bug on an R500 GPU with information found in this code, but nothing major.
Finally, when it comes to the R600 documentation it looks like that will be released in the next couple of weeks. For a number of weeks now the documentation has been stuck in AMD's legal department as they work to resolve an issue that has come up with the documentation. However, AMD's lead open-source sanitizer, John Bridgman, is currently on a two week holiday so we will not see this documentation in the hands of the public before the end of the month. The 2008 X Developers' Summit is taking place the first week of September and during that same time it will have been one year since AMD introduced their open-source strategy and also just shy of one year since the RadeonHD R500/600 driver was introduced. We'd suspect the documentation will finally make it out around then. John Bridgman has also publicly confirmed this in the Phoronix Forums. Speaking of XDS 2008, we will be covering news from this event at Phoronix as well as providing audio/video recordings of the different talks, so stay tuned.
This will not be the first R600 documentation to be released to the public, but earlier this year they had released R600 ISA documentation (Instruction Set Architecture) and in January we received the M76/RS690 mode-setting documentation (before that was also the documentation on the ATI RV630). AMD had also released the source-code to a new AtomBIOS parser a few weeks back.
If there's any good news coming out of these documentation delays is that the key open-source ATI developers already have the needed information through NDAs (Non-Disclosure Agreements) with AMD. While AMD works out these legal issues, the main xf86-video-radeonhd and xf86-video-ati developers have had the documentation and in private have been working on the R600 Mesa/DRM. In fact, Red Hat's David Airlie has already released basic R600 DRM support. It was just shy of 75 days from the time the public R500 3D documentation was released to when we had the working 3D support, but because of this work going on right now for the R600 series in private, hopefully this time will be even less for the R600/RV770. Though during our last briefing, the developers still haven't reached the critical first step of rendering an OpenGL triangle.
The other good news is that AMD has been working on improving their documentation process as they design next-generation GPUs, so in the future we will hopefully not see delays nearly as long as we have with the R600.
If all goes according to plan we'll hopefully see the R600 3D documentation in early September and within the first few weeks of that there should be a first-cut open-source 3D driver that covers the Radeon HD 2000 and 3000 series (possibly the Radeon HD 4800 series too). By the end of the year we would anticipate "a good level" of 2D/3D open-source support for these graphics cards. For those that don't know, there has been basic mode-setting support for most of the R600 GPUs since the end of last year in the two open-source DDX drivers. Stay tuned to Phoronix for all of the latest information on an open-source AMD.