AMD Releases 3D Programming Documentation
Michael Larabel writes "With the Free Open Source Developers' European Meeting (FOSDEM) starting today, where John Bridgman of AMD will be addressing the X.Org developers, AMD has this morning released their 3D programming documentation. This information covers not only the recent R500 series, but goes back in detail to the R300/400 series. This is another one of AMD's open source documentation offerings, which they had started doing at the X Developer Summit 2007 with releasing 900 pages of basic documentation. Phoronix has a detailed analysis of what is being offered with today's information as well as information on sample code being released soon. This information will allow open source 3D/OpenGL work to get underway with ATI's newer graphics cards."
fglrx is probably a technical and legal mess unable to be cleaned up with less effort than it would take to re-write the drivers using good documentation.
For ages, the FOSS community has said "just give us the specs for your graphics cards and we'll write the drivers". Well it looks like AMD is taking real steps in that direction, and I for one, say Thanks!
According to TFA, the small group at AMD who has spent time clearing the docs for legal issues are going to speak at FOSDEM, and the maintainer for the open source driver for AMD/ATI graphics (RadeonHD) will be giving an update.
And thanks also to Intel for putting out their 3D graphics specs last month. These are good days for Linux.
Feature parity with Windows must be the goal if they want to beat NVidia. I hope we can get some sort of media acceleration beyond the stale old XVideo & XV-MC.
I'm the owner of 5 boxes all with Nvidia graphic cards.
... until I found out that Nvidia doesn't time its
I've been using only Nvidia cards since 2000 because they had
the best 3D graphics card for my Linux box. I was willing to deal
with binary drivers because there was nothing else available to me
at my price range (loooow budget) for 3D graphics.
But.... over the years I would get burned every now and then
when
1) I would upgrade the kernel and then the X server would get borked
because the Nvidia kernel module didn't match the new kernel, or
2) Some funky memory leak in the binary Nvidia module would lock
up my box hard because of some damn NvAgp vs. Agpart setting or
some funky memory speed setting. Of course, this didn't happen with
every Nvidia driver so of course I wouldn't bother writing down
what it took to fix the problem.
Finally when I switched to Debian Linux in fall 2004 and had
beautiful apt-get/synaptic take care of all of my needs I thought
I was done
driver releases with kernel releases so if I wanted to upgrade
my kernel painlessly with apt-get/synaptic I would have to
wait for Nvidia to get off it's damn rocking chair playing their
damn banjo and release a driver to go with the newer kernel.
The final straw for me was when all of my 5 nvidia cards were
now listed in the "legacy driver" section. Can you guess what
"legacy driver" means about Nvidia fixing their closed source
driver? Yeah, that's exactly the point.
That's when I started looking around for open source 3d drivers.
I know about Nouveau for Nvidia, but frankly I'm too pissed off
about Nvidia to consider them. Ati had a long history of treating
Linux customers like second class scum. Intel on the other hand
earned the "golden throne" by providing full open source for their
graphic chipsets. So now that I'm looking for getting a dual core
64 bit cpu + 3D graphic chipset the only viable choice was intel,
which I was happy to do business with.
Now that Ati has decided to come forth with 3D documentation I'm
willing to give an intel/ATi or AMD/Ati combo serious consideration.
Way to go ATI!!!!
I see that as a reason not to open source the existing drivers, but not to preclude releasing the details needed by the open source community to produce an open driver with their own shader programs, which may be lower performance, but good enough for default operation for a lot of distributions.
I find an interesting perspective being hinted at by AMD in this context. That they approach a common open source layer at the low level, and plug in their proprietary 'good stuff' as a replacement for higher layer things. As an example, they feel their powerplay stuff isn't top secret, so putting it at a layer where everyone can bang on it and improve it is ideal for everyone. Same with things like display handling. AMD and nVidia both do bizarre things requiring proprietary tools to configure display hotplug, instead of the full xrandr feature set, which has grown to include display hot plug.
In general, there are *many* things AMD has historically gotten wrong in their drivers. Mostly with respect to power management, suspend, stability with arbitrary kernels/X servers. One thing they seem to do better relative to the open source community is good 3D performance if all the underlying stuff happens to line up. If they can outsource the basic, but potentially widely varying work to the community, it would do wonders if their driver architecture lets them leverage that. And by giving open source 3D developers a chance to create a full stack, it's the best of all worlds. I would be delighted to see the Open Source 3D stack surpass the proprietary stack, but wonder what patents stand in the way of that being permitted...
XML is like violence. If it doesn't solve the problem, use more.
It's actually quite nice when they tell us how to write our own drivers, so we're not dependent on them for needed maintenance (bug fixes, updates for newer kernels, etc). Companies can have all sorts of reasons to stop supporting a product, or to provide sub-par support, and being able to write our own drivers means that that isn't a problem.
The previous releases covered initializing the card, mode setting, 2D output, etc. That's a lot of stuff to cover. These docs are basically just on how to setup the 3D engine and feed it shaders.
"But I'm still right here, giving blood and keeping faith. And I'm still right here."
Now that AMD/ATI has come over from the Dark Side, I expect that Nvidia and all of the other graphics chip manufacturers are going to be close behind. It may take them a year or two to work out the logistics, but they'll be here.
More and more people are moving over to Linux/BSD Free/Open software, and letting yourself be locked out of a growing market is the kind of things that CEOs and CTO's get fired for.
It used to be the case that manufacturers could peacefully close their eyes to the Open Source / Free communities and drink the Microsoft brand Kool-Aid because all of their competitors were doing the same thing. Now, however, with one of The big guns having committed to solid support of the Open Source universe, their less responsive competitors have a massive flank open that is going to have to be responded to.
Sometimes boldness is in fashion. Sometimes only the brave will be bold.
fglrx has seen massive improvement lately. It is supposed to be mostly in sync with the Windows Catalyst drivers these days. It's still a bit off perfect of course, but a lot better than it was.
So what's left before the complete documentation sets are in our hands?
I've been lamenting for years that the R300 card in my G4 (now a G5, long story) would never get specs. I figured they'd start releasing only specs for R500 and up. So when I read this story, I LITERALLY jumped for joy. I'm so happy that I'm switching from nVidia to ATI in my next custom Linux box.
-:sigma.SB
WARN
THERE IS ANOTHER SYSTEM
I used to buy/recommend mostly AMD CPUs and Nvidia graphics cards till now.
I guess it's time to make it AMD / ATI now.
If they have released what we needed to get the drivers made, which is what we have always wanted, it's time we reciprocated by supporting them.
This will show other graphics companies *hint hint* that releasing the specs = good business.
Actually, r600 documentation is expected in a few months. That can hardly be called catching up compared to how it has been earlier.
Using the gpu to decode h264 etc is something I see as quite possible, but it is likely that it is something we have to implement ourselves (something I think we are capable of).
Comparing my R500 part with fglrx with an R300 part with the open source driver:
-With fglrx kernel module loaded, my laptop has not been able to suspend ever (using Ubuntu Gutsy)
-I have to do a goofy Virtual 1408x1050 resolution with fglrx to make 3D applications not look horribly corrupted. This is weird, but as long as I don't xrandr over to it, it's not a big deal, however..
-After doing above trick, fglrx shows corruption in lower right hand corner and hardware cursor if trying to do 3D apps at 1400x150 (native resolution). Have to run at 1280x960 to prevent that corruption.
-All acceleration (3D and 2D) has a horrible diagonal tearing effect.
The *ONLY* net improvement in the interval you deem 'massive' improvement is in the frames per second area. Though important, the top priority should be reliability.
Meanwhile, though much slower, the open source driver on the R300 part behaves quite in line with what I expect. I look *very* much forward to what the open source initiative ultimately yields. If AMD can cram the fglrx performance into binary blobs that leverage the open source layers for everything they get right, I would be ecstatic.
XML is like violence. If it doesn't solve the problem, use more.
XML is like violence. If it doesn't solve the problem, use more.