LWN.net Logo

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Phoronix has the details on AMD's release of 3D drivers for ATI R600 and R700 graphics processors. "Since earlier this year we have been waiting for AMD to release documentation and/or code on the ATI R600 series concerning 3D acceleration so that the open-source Linux drivers can begin to support the newer ATI graphics processors. It has taken longer than expected for AMD to complete and release this information, but it's now available. AMD has released the fundamental Linux code needed to begin fostering the development of an open-source R600 3D driver. Furthermore, this code also concerns the latest R700 series of graphics processors! The microcode for the newest GPUs has also been released."
(Log in to post comments)

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 2:05 UTC (Tue) by pr1268 (subscriber, #24648) [Link]

It has taken longer than expected for AMD to complete and release this information, but it's now available.

So, what took so long? These cards were released in May 2007 (according to this Wikipedia page. I just don't get why releasing specs and microcode for a graphics adapter takes 19 months (after its consumer release date—who knows how long these were in development prior to release).

Let me guess: ATI/AMD had to sanitize the specs and microcode to protect its IP. And, if the microcode resembles a binary blob, then that's a whole other debate about to happen (I'm referring to the contentious debate at Debian over blobs in the kernel as an example).

Disclosure: I haven't read the whole Phoronix article (yet), so if I'm babbling nonsense, then this explains why (and please accept my apologies). I am perhaps a little dissatisfied with AMD/ATI, given how it promised Linux support for graphics adapters (what is it now, nearly two years?), yet appears to drag its feet in doing so.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 2:12 UTC (Tue) by pjdc (subscriber, #6906) [Link]

Apparently it's just plain hard work.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 3:09 UTC (Tue) by pr1268 (subscriber, #24648) [Link]

The article you linked confirms my suspicions about "sanitizing" what AMD/ATI releases to the open-source community. Such statements (from the agd5f blog) as:

  • "So when will all of this get released? I can’t say exactly. Soon I hope. We are still caught up in the approval process."
  • "[...] we weren’t able to go through the rest of the hw information to find out what was needed and exactly how it all worked."
  • "[The IP review process is] essentially a risk/benefit analysis of the various parts of the chip we want to release, where the risks are generally catastrophic, i.e., losing the ability to continue selling into certain other larger OS markets."

These comments (especially the third one!) seem to indicate that Linux takes a back seat to driver development (to Microsoft Windows) at ATI. Was Windows driver development for the R600/R700 this difficult? I highly doubt it—they had complete HW, IRQ, and register specs available, and I presume that HW and SW development were done in parallel. (I will concede that Vista drivers may have taken some time, because MS changed the Windows driver APIs/ABIs substantially from 2K/XP, IIRC.)

Yeah, sure, Microsoft's OSes are running on a substantial portion of those computers with an ATI card, and ATI's business model depends on reliable Windows drivers being released concurrently with their graphics hardware, but I just don't quite agree that ATI has really provided all the Linux support they originally claimed.

Heck, I'd be more willing to accept ATI's Linux promises even if it had released binary-only drivers for their cards concurrently with the hardware, but they didn't even do that (several months separated the cards' release and binary Linux drivers, IIRC).

My arguments and criticism are not targeted solely to you, pjdc, but to anyone who may have more enlightening remarks about ATI's "Linux support". And thanks for the link!

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 4:21 UTC (Tue) by elanthis (subscriber, #6227) [Link]

"These comments (especially the third one!) seem to indicate that Linux takes a back seat to driver development (to Microsoft Windows) at ATI."

Well what do you expect? You want AMD to risk losing Windows certification for its Windows drivers, thereby hamstringing the single largest (by a huge margin) target audience of its consumer graphics hardware?

Yeah, great idea. Then AMD's graphics business tanks and has to be shut down, and then AMD users end up stuck the same place Matrox users used to be. Remember the old Matrox cards, once the paradigm of Open Source graphics hardware for consumer enthusiasts? How years after it was no longer even remotely top-of-the-line Linux users were still buying up the G200, G400, G450, and so on at ridiculous markups? Until eventually even the Open Source support dried up because the cards were so ancient as to be unusable for modern desktop needs?

You want AMD to risk going there just so that you could get faster Linux driver releases?

"I highly doubt it—they had complete HW, IRQ, and register specs available, and I presume that HW and SW development were done in parallel."

No, actually, they didn't. Read up on what the actual "sanitization" process was -- much of it was taking the docs created by the HW team and fixing all of the great deal of errors, and making sure working usable code could be produced from those specs without needing the ability to call up the HW engineering team and ask questions the specs don't answer.

Additionally, the Windows drivers were developed years ago. The Linux drivers being developed today should make it much easier to support new hardware at or before release in the future. Windows got a head start, as the driver engineering team started those drivers years before the hardware hit the streets. Linux has to play catch up. Be mad at ATI for not supporting Linux 5 years ago if you want, but don't get upset because AMD's recent decision to support Linux can't magically produce many man-decades worth of work in a couple of months.

Yes, AMD could have thrown more resources at it. But let's be perfectly honest with ourselves -- a niche market is not worth a huge investment. It isn't. No matter how much we might want to believe Linux users matter more than other people, the fact is that we don't. That a desktop OS that gets maybe 1-2% of the desktop market share gets _ANY_ full-time engineers from AMD is amazing all on its own.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 9:44 UTC (Tue) by mangoo (guest, #32602) [Link]

>> "These comments (especially the third one!) seem to indicate that Linux
>> takes a back seat to driver development (to Microsoft Windows) at ATI."
>
> Well what do you expect? You want AMD to risk losing Windows certification
> for its Windows drivers, thereby hamstringing the single largest (by a
> huge margin) target audience of its consumer graphics hardware?

I didn't know that companies developing drivers for Linux can loose their Windows certification because of that! Why is that? Can you be more specific?

DRM

Posted Jan 6, 2009 11:06 UTC (Tue) by tialaramex (subscriber, #21167) [Link]

The DRM (as in restrictions on using what you own, not the kernel DRI component) enforcement regime requires that the user be prevented from understanding how their own computer works.

I never looked into this very closely, but the present generation of DRM seems to expect that each hardware vendor (AMD in this case) will present the "trusted" DRM implementor, ie Microsoft, with secrets about their hardware which make it difficult to emulate correctly. The DRM implementor uses this to ensure that secret data is sent only via genuine hardware devices certified not to leak the user's data to the user, but rather ensure it can continue to be "protected" by DRM, ie extract monopoly rents indefinitely.

In theory if AMD reveals (even by accident) how their hardware works, Microsoft is obliged to provide a "bug fix" to Windows which disables the AMD hardware for viewing movies and other perfectly legal activities which need to be "protected" under DRM. This would be financially catastrophic for AMD of course. But in the present climate, even rumours that this would happen soon would probably be enough to send them into Chapter 11.

So they (and nVidia) are in the same poor state that IBM were in for a while, they've inadvertently created a situation where Microsoft gets to dictate how they run their business.

Not to mention that like most businesses, AMD will have made decisions when it was sure it was keeping this data secret that seem rash now that it wants to make it public. Sure, the hardware wasn't on /sale/ until 2007, but it was in development for 2-3 years prior. Suppose you're a senior AMD engineer and you know that one of the Z buffer speed-ups you used in the R7xx series is sort of broken in early silicon, its disabled in the proprietary drivers for that hardware and it has never been admitted to customers. Well, leaving an entry in the documentation "0x08 - enable Z-Foo - broken on 3xxx to r4.3" is a good way to cause customer disatisfaction and get yourself fired, so you're going to want to at least change it to "0x08 - reserved" or "0x08 - Z speedup, reserved" or something.

The most important reason is simply this: This isn't top priority (and since AMD is a for-profit business, it probably shouldn't be) and so a lot of the time the process was stalled waiting for this or that person to get a free hour to review the documentation.

Matrox and free software

Posted Jan 9, 2009 19:29 UTC (Fri) by anton (subscriber, #25547) [Link]

Remember the old Matrox cards, once the paradigm of Open Source graphics hardware for consumer enthusiasts? How years after it was no longer even remotely top-of-the-line Linux users were still buying up the G200, G400, G450, and so on at ridiculous markups? Until eventually even the Open Source support dried up because the cards were so ancient as to be unusable for modern desktop needs?
In my experience, Matrox was not a paragon of free software in the G450 days. We bought a few G450 cards for a special use, and had to use a proprietary driver by Matrox to get them to do what we wanted (the free driver did not work at the resolution we needed). We later bought the Radeon 7000 for much less money, and it worked better with free software than the G450 with either proprietary or free software. Read more about this.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 7:26 UTC (Tue) by NAR (subscriber, #1313) [Link]

Was Windows driver development for the R600/R700 this difficult?

Probably. At least when GTA IV came out to PC last month, it was necessary to update the ATI (and NVidia) drivers too, which means they didn't really get it right for the first (or second, third, etc.) try.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 19:27 UTC (Tue) by iabervon (subscriber, #722) [Link]

Internal driver writers generally don't have complete HW specs available; they talk to the chip designers to find things out. Writing specs is a very labor-intensive process, which normally only gets done by companies who sell parts to the general public for individual use. The Windows drivers get written by people who ask the chip designers a relatively small number of relatively easy questions, at a point where the chip designers can change the hardware to make those questions have easy answers.

Going forward, AMD is letting open-source developers talk to the chip designers like the Windows driver others talk to them, and generally not bothering to try to write complete documents for public (or even internal or NDA) consumption.

To illustrate this, consider the AVR ATmega8. This is a reasonably straightforward microcontroller with a smallish number of built-in peripherals. The documentation is a 308-page PDF which has gone through 20 revisions after it was written, over the course of 6 years. The chip was intended from initial design time to be fully explained to external users. One of the things that's really great about this manufacturer, Atmel, and this line in particular, is that their documentation is accurate and informative; most companies' datasheets have inaccuracies (using unusual features doesn't actually work the way the datasheet says it does) and gaps (documentation for register A assumes that register B has the default value, and for register B assumes that register A has the default value, and nobody knows what happens if you change both). And this is for companies that provide datasheets in order that people will design devices that use the parts and then buy a lot of them. Writing extensive and reasonably accurate hardware specs for a graphics chipset is just not an efficient use of a huge amount of time.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 9, 2009 10:13 UTC (Fri) by bridgman (guest, #50408) [Link]

Three quick points :

1. For the last >year we have been releasing Catalyst Linux driver support simultaneously with Windows support. The long delays between initial launch and Linux were in 2007 and earlier.

2. Getting 6xx/7xx 3d information took about 10 months from start to finish. Most of that was spent learning to program the chip and distilling knowledge from >20M lines of source code and hundreds of engineers into something small and useful to the open source community. Before the 6xx/7xx 3d effort we were working on 2d/3d information for earlier GPU generations and on display/modesetting support for both older and newer GPUs (remember the project was launched in Sep 2007).

3. It took us about 16 months to largely catch up on 6 years of hardware development (the last round of open source community support ended around 2002). The delay depends on the generation; you could say it took us 72 months to get r300 information out, but again the project only started 15 months ago. The delay for open source 7xx info was obviously a lot less -- a few weeks from launch to initial display/modesetting support and a few months to release of 3d engine info.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 2:38 UTC (Tue) by mjg59 (subscriber, #23239) [Link]

The microcode is firmware that runs on the GPU and isn't available in source form, yes. Like every other Radeon that's ever been supported on Linux.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 19:41 UTC (Tue) by drag (subscriber, #31333) [Link]

The microcode is the code. More or less. It's not like it's programmed in C and then compiled into the microcode format or anything like that.

I am no expert on it, but the development tools and whatnot they developed and use for working on this microcode produces the code directly.. There is optimizations and such that are performed and whatnot, but it's what you get isn't much different then what the programmers themselves work with.

In other words.. there is no source code to release. It is what it is.

Or at least that is what I was told. I don't know for certain or I may be mistaken in my understanding of what was said...

---------------

Anyways... The microcode, the binary blob, is used for modesetting and 2D emulation for R700 cards. (they have no 2D core anymore)

The real aim is to produce drivers that interact with the 3D portions of the cards. Everything else is just stop-gap solutions at this point. The next generation video card will simply have no 2D portions at all, emulated or not.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 7, 2009 3:12 UTC (Wed) by mjg59 (subscriber, #23239) [Link]

Yeah, I don't really buy that argument - it strikes me as utterly implausible that someone would write an emulation of a 2D core without any comments.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 8:17 UTC (Tue) by pointwood (guest, #2814) [Link]

Please read up on the subject instead of speculating and thereby starting rumours.

If you can't even be bothered to read the article, then don't bother commenting on it either.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 14:43 UTC (Tue) by pr1268 (subscriber, #24648) [Link]

By the time I made my second posting, I had read the article. And besides, my first comment was based entirely on the excerpt header.

If you can't be bothered to accept my posting as is, then don't bother telling me what to do about it.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 7, 2009 11:47 UTC (Wed) by daniels (subscriber, #16193) [Link]

Writing a Windows driver does not involve releasing the source. Writing an open source driver does. Thus, your life becomes the legal department.

So, aside from it being completely and absolutely irrelevant, I guess your comment is useful.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 8, 2009 4:37 UTC (Thu) by BenHutchings (subscriber, #37955) [Link]

Actually, if you want your driver "in box" with Windows, you do have to release the source - to Microsoft, at least. However, you can still get distribution via Windows Update or slipstreaming by OEMs without releasing the source.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 8:29 UTC (Tue) by muwlgr (guest, #35359) [Link]

When this hardware will be able to support OpenGL acceleration in multiple X-servers running on different VTs at once, I would think about replacing my long-trusted and relied-to NVidia with it. Until that - no way.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 9:42 UTC (Tue) by mangoo (guest, #32602) [Link]

I have a system with two ATI cards - Radeon 9200 (PCI) and Radeon 9600 (AGP), running in multiseat mode (two monitors, keyboards, mice):

http://wpkg.org/Configuring_multiseat_X_workstation

And OpenGL is supported on both cards.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 10:33 UTC (Tue) by evgeny (guest, #774) [Link]

A year ago I tried to do the same (though both PCI and AGP cards were 92*0). It worked, but crashed every ten minutes or so, especially with OpenGL stuff. Is it stable in your case? I may try again...

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 10:35 UTC (Tue) by mangoo (guest, #32602) [Link]

It is stable.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 13:19 UTC (Tue) by muwlgr (guest, #35359) [Link]

I did not mean multiple graphic cards, I meant single card and >1 X-servers on different VTs. So you switch to each of them by Ctrl-Alt-Fn. This facility is used to have multiple users/guests sessions in Ubuntu/Fedora, for example. And, with proprietary 'nvidia' driver you have accelerated OpenGL on each VT you have switched to. Not so with 'fglrx' driver, as I once discovered in painful way. Moreover, in older versions of fglrx, there was DISPLAY value :0.0 hardcoded somewhere in its libraries, so they were unusable with other values of DISPLAY in your environment. So, despite it is proprietary, nvidia driver gives you certain quality and reliability in some non-typical use scenarios. fglrx had just discouraged me, compared to that. I have yet to convince myself that this new opensource 'radeonhd' driver is any better.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 13:26 UTC (Tue) by mangoo (guest, #32602) [Link]

Open source driver (radeon) supports 3D just well, so you don't need ATI's proprietary fglrx any more.

But true, for newer cards one needs radeonhd driver, which still lacks many features.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 9, 2009 19:38 UTC (Fri) by anton (subscriber, #25547) [Link]

Maybe not with the fglrx drivers (why would you use that stuff?), but I have used several X servers on several vts on several machines with the free radeon driver (with a Radeon 9250, 9600 and X850XT); I am actually currently typing on a machine that is set up that way. And I also successfully tried some OpenGL stuff (in particular glxgears:-) on some of these machines.

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 8, 2009 6:28 UTC (Thu) by Thalience (subscriber, #4217) [Link]

Interestingly enough, the kernel-side support for multiple DRI-enabled X servers should be merged in 2.6.29.

http://lwn.net/Articles/313336/

So by the time that this code dump results in a working GL driver, you could have your wish :)

AMD Releases Open-Source R600/700 3D Code (Phoronix)

Posted Jan 6, 2009 10:44 UTC (Tue) by roblucid (subscriber, #48964) [Link]

Old cards eg) Matrox with open source drivers are fast enough for many open-source 3D games, if the 3D driver works. As Nvidia loses interest in supporting old cards after a few years, their cards are 2D only with the unpopular (according to Phoronix survey) 'nv' driver.

ATI may have supported Linux less well in past (making me a reluctant Nvidia buyer), but AMD/ATI have made real progress. Nvidia appear totally addicted to closed approach "to protect their IP" and also claim they're using licensed technology which prevent disclosure.

A recent graphics purchase decision went to ATI Radeon, because of the positive steps AMD have taken, and the power efficient performance of the 4xxx range.

Let's not gripe at good news!

Comments with opinions but no knowledge of the facts

Posted Jan 6, 2009 12:46 UTC (Tue) by jmayer (subscriber, #595) [Link]

One of the things why I subscribe to lwn is the high quality of comments and the fact that people do not just offer opinions but also think them through thoroughly and offer the facts by which they arrive at these opinions. Please keep it that way. Thanks!

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds