AMD's New Gambit: Open Source Video Driversby Ryan Smith on September 25, 2007 12:00 AM EST
- Posted in
Between Here and There
It's only fair to preface this section with a warning that when AMD announced this effort earlier this month, we are and continue to be skeptical about their actual intentions and how serious they are about all of this. "Open source" has been and continues to be a buzz word that gets used by companies wanting to attract attention to themselves, and we're not going to throw out the possibility that this is AMD abusing the term to their own benefit. We've already noted that AMD has previously suffered from a poor reputation in the open source community due to their poor drivers, and this announcement has already done a lot to turn that around. As we've stated before, this isn't something that is in the computer hardware play book, so we can't help but wonder if what AMD has promised may be too good to be true.
With that said, our skepticism has tempered some in the past few weeks as AMD has taken the first few steps needed to make these drivers a reality, and at a pace faster than we were expecting. There are a few "moments of truth" to come that we are left wondering if AMD will pass, but they have proven to us that they are serious so far. This article is proof of that, we initially were not going to write an article about AMD's effort believing it to be PR fluff.
There are several steps in making the modern, functional driver that AMD wants to achieve, and broken down they are roughly as follows: Initialization, primitive 2D, accelerated 2D, primitive 3D, and finally full 3D functionality. Because this driver is being developed externally, for each step AMD needs to deliver hardware specifications for all the products they want supported by the drivers, so that the programmers working on the driver can use the specifications to make their driver work. As we get in to the later steps, the driver & specification complexity increases, along with the number of secrets that must be revealed.
So far AMD has released two specification documents, one covering the RV630 (HD2600 series) and the other covering the M56 (Mobility X1600). To give you an idea of the complexity of these specifications, they only cover the first two steps, initialization and primitive 2D, and yet they add up to just shy of 900 pages. Amazingly, these are (as far as we know) AMD's own internal documents and not new documents created/censored for public use, which is one of the factors that have convinced us about how serious AMD is about their efforts.
In spite of the length of the documents however, they are really only the tip of the iceberg. With these documents programmers can create a driver that turns the video card on and can draw a basic 2D image via directly manipulating the frame buffer (and indeed Novell's driver is already close to achieving all of this so soon), but that's it. These specifications are not enough to enable advanced 2D functionality such as blitting, blending, or video decode acceleration. They are also not enough to do any 3D rendering.
The fact of the matter is that the specifications released so far do not involve anything that is a trade secret or otherwise needs to be kept hidden; what AMD has released thus far is what will be the easiest to release. What lies between here and a fully functional driver as a result will be the hard things that AMD needs to do, and hence our continuing skepticism in spite of what they have already done.
Releasing the rest of the specs required to build a fully functional driver will expose information that isn't usually public, such as details of the Ringbus memory controller, the UVD video decoder, the programmable anti-aliasing processor, latencies, texture compression, and basically everything else needed to identify the strengths and weaknesses of their chips along with some idea of how AMD goes about implementing all of the major features in those chips. Even though the specifications to their chips won't be anywhere near enough to duplicate the chips, it is a start for anyone that needed some "inspiration." The GPU development cycle is still short enough that it's plausible that someone could steal AMD's technology and implement it before it is outdated; where someone doesn't have to be only NVIDIA.
In other words, AMD is taking an unprecedented risk for a graphics company by doing this; the only groups doing anything similar are either doing it for underpowered/insignificant GPUs (Intel, S3, Matrox) or release a 2D-only driver (NVIDIA).
With that said there are a couple of issues we're wondering how far they're really willing to go, and if they can find the kinds of programmers they need to complete the driver, who don't already work for AMD. It's not a big secret that GPUs are pretty worthless without a driver, as a decent amount of the work that needs to occur to render something is actually done at the driver level. Consequently AMD has invested a lot of money over the years in to researching technologies such as anti-aliasing filters and just-in-time compiling for shader programs, none of which it appears they'll be able to contribute to their open source driver. We're generally concerned that even among the brilliant minds in the open source community, there may not be the knowledge and experience to replicate these driver features, or replicate them to the extent where they can perform as well as AMD's own drivers, defeating some of the usefulness of these open source drivers. As the development of these drivers will take years, it's going to be equally long until we know whether these concerns are valid or not.
On a lighter note, we're curious to see what if any errata documentation AMD will release. Design errors are to be expected in something as complex as a GPU, and on the CPU side both Intel and AMD make their processor errata public knowledge so that it can be worked around by software. At the same time processor errata is extremely minor since it is caught and corrected before mass production, with the last major flaw escaping in to production was the Pentium FDIV bug over a decade ago. AMD and NVIDIA do not adhere to that same strict level of quality control with their GPUs however, and in the past few years we have seen things such as broken video processors and anti-aliasing units make it in to the final silicon. To that extent AMD needs to release information on some errata so that the drivers can work at all, but will they release it all? We admit that we'd like to see just what is broken in their GPUs given the secretive nature of such defects.