Newsgroup: it.comp.hardware.video-3d
Titolo: AMD Releases Open-Source R600/700 3D Code

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.
Just hours before the start of FOSDEM 2008 in late February, AMD had 
released their R500 3D programming documentation. This documentation 
paved the way for open-source developers to begin working on a Mesa 
driver that would extend the earlier R300/400 series support to enable 
OpenGL acceleration on the Radeon X1000 series. This was also the first 
public documentation drop concerning 3D support since AMD's open-source 
strategy announcement last September. Following the 3D documentation 
release, two revisions were made to add in more technical details. The 
first revision added in just four pages while the second had detailed 
their command processor.
Up to that point all of the work was going into enabling mode-setting 
support and other basic functionality across the R500 and R600 series 
in the xf86-video-radeonhd driver (and then xf86-video-ati through 
AtomBIOS). Right after they announced their open-source initiative they 
had released 900 pages of specifications and then in the months that 
followed they released a lot more documentation.
Two weeks after the initial R500 3D documentation release, AMD had 
released an R300 3D register guide. This programming guide concerning 
their older graphics hardware was previously only available through 
Non-Disclosure Agreements to select developers. AMD had also released 
microcode for all their GPUs from their proprietary Catalyst driver.
Less than a month after the R500 3D documentation drop, the first 
milestone was reached: hardware-accelerated R500 glxgears. This was 
quite a milestone and signaled that OpenGL acceleration for the R500 
series in Mesa would soon be coming. In late May there was then 
open-source R500 3D success with Compiz beginning to work on this 
relatively modern hardware along with some other OpenGL programs. As we 
shared in an article a day later, it was possible to game with the 
open-source driver using some select titles that don't stress Mesa too 
much. Since the point of reaching parity in the open-source support to 
that of earlier ATI generations, the rest of the year has not been too 
exciting.
Novell, AMD, and Red Hat developers have been doing a majority of the 
work taking advantage of the documentation, while internally at AMD 
they have been working to prepare the R600 documentation for release. 
John Bridgman and Alex Deucher have been working on deciding what code 
or documentation is needed for programming, sanitize it of any 
information not relevant to bringing up the 3D engine, remove any 
details concerning future ATI hardware, and then getting all of this 
work cleared by AMD's lead software and hardware architects so that it 
can be publicly released without any NDAs or other string attached. To 
say the least, this has taken longer than anticipated. There were a few 
times when it looked like the documentation and code would be coming 
soon, only to then be pushed back by additional hurdles, but this time 
around they got code to deliver too. Part of the good news out of this 
though is that they are continuing to refine their documentation 
writing process so that with future generations there may be a quicker 
turn-around time.
The other good news is that with the R600 series they made sure there 
was sufficient documentation coverage by first writing the software 
support to find out what was needed, instead of finding out later they 
hadn't released enough documentation to enable the 3D engine or they 
ended up releasing too much documentation than what most open-source 
developers would actually use. The code they are releasing is in a 
working state, but is currently meant for developer usage.
One of the times it looked like the R600 3D information was nearing 
release was in June. Novell had over 650 pages of internal R600 
documentation under NDAs with AMD along with TCore, which is an 
internal AMD software project for limited GPU testing prior to the 
availability of silicon for new GPU designs. At that time it was 
publicly stated that a Radeon R600 Direct Rendering Manager was already 
in the works -- albeit through a private code repository. Later that 
month some of the code to this new DRM was pushed out that used the 
command processor for GPU communication but lacked support for any 3D 
acceleration -- meaning it was of no use to end-users. In June there 
was also the release of the R600 ISA documentation (Instruction Set 
Architecture).
While not dependent for the 3D support, in July was the release of a 
new AtomBIOS parser that was used in bringing up KMS support. Since 
this article isn't about kernel mode-setting, we will save that for 
another article.
Two months after the 3D-lacking R600 DRM was pushed out, we received 
word from AMD that they experienced open-source 3D success for the 
RV770. The RV770 is the GPU used in their newer Radeon HD 4800 series 
and since then has descended into the Radeon HD 4500 and Radeon HD 4600 
series as well. The success they experienced was hardware-accelerated 
triangles, but using a DRM that wasn't publicly available. This was 
right before the 2008 X Developers' Summit where the developers raided 
the Edinburgh Zoo, which AMD employees had opted to skip in hopes of 
finishing off the R600/700 work to push quickly out into the community. 
September had also marked the one-year open-source ATI anniversary, 
which wasn't greeted by any new code drops or documentation.
A month ago we were then told that the R600 DRI 3D work was getting 
closer, but still nothing was to be publicly released. Novell's 
Matthias Hopf had explained there were very few hardware registers they 
didn't understand and that their programming model is near stable. With 
this internal code they also had textures and shaders supported on the 
R600 series.
Our last update came in late November when we were told the RV770 Mesa 
DRI driver was started by Novell and they have been successful in 
running a 2D/3D test program on the RV770. This test program is 
r600_demo, which is a fairly advanced test program and to some extent 
is based on the earlier r300_demo. We were also told again that 
documentation and/or code would be available "soon" and we reckoned it 
might be available by Christmas.
Finally, we have what we have been waiting for: documentation and code 
concerning both the R600 and R700 series that is freely and publicly 
available. It's taken several months and lots of hardware work by AMD, 
but it's here...
Today's Drop
What's encompassed by today's drop is a working DRM (for the newbie, 
Direct Rendering Manager, not to be confused with Digital Rights 
Management), working EXA acceleration, an initial X-Video 
implementation and the working r600_demo program. There was about 180 
pages of 3D register specifications set to be released, but all of the 
AMD officials didn't come to a consensus before leaving for the 
holidays. This documentation should be publicly released within 
approximately one month.
The working DRM is being pushed into branches of the 
xf86-video-radeonhd and DRM Git repositories. This will not enter the 
mainline branches until it has been well tested and more stable, 
obviously. The provided EXA acceleration currently supports the copy 
and fill operations, but there is also some other initial bugs to be 
worked out. The X-Video support is also initial and does not yet 
contain working shader code for YUV/RGB conversion.
In the past we have talked about CAT, KGrids, and TCore, which are all 
internal ATI/AMD software projects used by their driver developers, but 
these are no longer being open-sourced. Due to several reasons, the 
code isn't being published, but most of what has to be learned from it 
on how to program the 3D engine can now be gathered from this just 
released DRM and r600_demo code.
The aforementioned r600_demo program is used to demonstrate basic 2D 
and 3D operations atop the R600 and R700 series hardware. The r600_demo 
doesn't use OpenGL but communicates directly with the R600 hardware 
through the DRM. This code will be placed into a new Git repository. 
This is nice for demonstrating the basic acceleration is in place, but 
is not something for end-users to enjoy.
These 180 pages of specifications is a lot less than the 650+ pages 
that Novell has had their hands on since earlier this year. John 
Bridgman of AMD describes the documentation as being focused on using 
the 3D engine, but over time they will continue to add more register 
specifications. The documentation is focused solely around the 3D 
engine and thus there is no information at this time pertaining to the 
Unified Video Decoder or IDCT. Expect the 3D documentation to be out 
soon.
The microcode for all newer GPUs since their microcode GPU drop earlier 
this year is also being pushed out today into the respective Git 
repositories.
All of this work should be compatible with ATI GPUs up through the 
recent RV710 and RV730 GPUs. For those not familiar with the different 
core codenames, this code is supported on the R600 (Radeon HD 2000 / 
3000 series) and then the different R700 GPUs that are in the Radeon HD 
4000 series. This goes for both mobile and desktop GPUs.
For X.Org developers and enthusiasts, this is a very exciting gift from 
Advanced Micro Devices. There is now nothing (other than time) 
preventing open-source developers from enabling 3D support across all 
available ATI graphics processors -- even the newest just released 
graphics cards. For end-users, today's releases are a significant 
milestone in the step towards open-source ATI 3D support on the Linux 
desktop. John Bridgman estimates that by April there should be R600/700 
support that matches what is currently available for the R500 series, 
but that could change depending upon community involvement, etc. There 
is a chance we may see some of this 3D support land in the second 
quarter refresh of major Linux distributions, which would certainly be 
ideal.
We are now in the process of checking out the just released R600/700 
DRM and so you can expect more Phoronix articles in the coming days. 
The code can be found in branches of the different Git repositories 
housed at FreeDesktop.org.
http://www.phoronix.com/scan.php?page=article&item=amd_r600_oss_3d&num=1

 Today's Drop
Sono commosso.
p.bes