ATI R300/400 EXA Render Accel Added
Phoronix: ATI R300/400 EXA Render Accel Added
Alex Deucher has announced that he has added initial EXA Render Accel for R300/400 graphics cards to the open-source xf86-video-ati driver. Initially this work only supports transforms for rotation, with no blending support yet...
I'm all for Open Source work on the R300 series, as newer fglrx versions no longer really works on older cards at all. However, I've been using the Open Source DRI r300 driver and it has had EXA acceleration and many 3D features (though some do seem lacking) for quite some time. http://dri.freedesktop.org/wiki/R300Benchmark suggests since 2006. I regularly download and compile from git, but distributions (like Debian) have this packaged as well. How is this new/ different? If its just to make more people aware of the Open Source driver, that's good too, its coming along nicely and I know this is really hard work.
Also, I routinely visit http://tirdc.livejournal.com/ but this seems not to receive updates all that quickly. Is there a mailing list to subscribe to? The project pages don't seem to have one (forgive me if I'm just daft). I sadly don't know much about graphics driver programing, but have a bunch of r300/r400 cards and would be more than willing to run tests, report feedback, or otherwise help as I am able if wanted/ needed (pretty much every time I pull a new version from git things get better).
There are 5 driver hooks for EXA:
Originally Posted by Tillin9
- Solid fills (draw colored rectangles)
- Copies (copy rectangles around in vram)
- Upload to screen (copy data from system ram to vram)
- Download from screen (copy data from vram to system ram)
- Composite (alpha blending and coordinate transform)
Previously, the r3xx/r4xx cards only supported the first 4 hooks. If you enabled rotation via xrandr, it was done with software so it was very slow. With this last commit we use the 3D engine to do coordinate transforms so rotated desktops will be fast. The alpha blending aspects are used to accelerate AA text and translucent windows (think "compositing" windows together and blending them based on their alpha values). Blending isn't supported yet, but this lays the ground work. So basically it accelerates rotation on r3xx/r4xx now. If you are curious how it works, the desktop is read in as a texture, then we transform it's coordinates and draw the textured quad to the destination buffer.
We don't really have a driver page at the moment. Your best bet is to follow the xf86-video-ati git commit logs and lurk or read the #radeon IRC logs.
Originally Posted by Tillin9
let's hope exa gets some stability fixes. my pc would soft lock up quite often when switching vt's with exa enabled. when i disabled exa - lockups went away.
Thanks for the info., I more than admit how all of this works is a little beyond me. I also took your advice and went through the git commits. Does git://anongit.freedesktop.org/git/xorg/driver/xf86-video-ati feed into git://anongit.freedesktop.org/git/mesa/mesa or is the MESA repository a separate/ older driver? If not, I assume that the directions at http://dri.freedesktop.org/wiki/Building are out of date. And if so, I'd appreciate some info. (maybe a page on the new driver site) about how to actually go about obtaining and compiling the latest driver.
xorg/drivers/xf86-video-ati is the "X driver", which handles initialization, display, modesetting and 2d acceleration
mesa/mesa is the 3d driver, aka opengl.
mesa/drm is a low-level "kernel driver", required by mesa for 3d acceleration and sometimes required by xf86-video-ati for 2d acceleration.
I believe you need mesa/drm to use the new EXA render acceleration. I don't think you need mesa/mesa for EXA render but you do need it for games etc...
There's a sticky thread at the top of this forum with more info, including how xorg/drivers/xf86-video-radeonhd and avivo/avivo fit into the picture.
Last edited by bridgman; 01-18-2008 at 12:13 AM.
All you need to test out the new render accel is xf86-video-ati. There are no changes to mesa or the drm involved; your existing versions should be fine. This guide should get you started:
Thank you agd5f, that was exactly what I was looking for!
Uhm...I didn't notice anything after installing it apart from the typical 2D slow down I experienced before when choosing EXA instead of XXA. Changing windows becomes quite slow too.
This is a mobility radeon 9600/9700, by the way.
Okay, I was confused since some sources, most notably the information at http://dri.freedesktop.org/wiki/R300Benchmark and has http://nouveau.freedesktop.org/wiki/FeatureMatrix has XAA/ EXA and 3D stuff together so I thought acceleration was done via one component.
I'm still not fully clear how this all works, but from reading your post and sticky, its now clearer that I need libdrm, mesa, and the x driver (and that radeonhd and radeon are essentially the same thing, the x component) so the instructions I saw were right but not the full story. I also am now aware that 2D and 3D acceleration in linux seems fairly separate.
Also from your bolding, this makes it much cleaer that these updates are part of modular X.org and therefore I'd need to rebuild the whole X server (or at least meet dependencies ala the info. at http://wiki.x.org/wiki/ModularDevelopersGuide) to be able to run this piece of the puzzle. Right?
Finally, I apologize for taking up peoples' time here, especially people who actually do understand everything and can write these drivers. I do really appreciate all the hard work, and for taking the time to try to help me better understand.