In computing, EXA is a graphics acceleration architecture of the X.Org Server (see also X Window System) designed to replace XAA (the XFree86 Acceleration Architecture) and to make the XRender extension more usable, with only minor changes needed to adapt XFree86 video drivers written to use XAA; it was designed by Zack Rusin and announced at LinuxTag 2005 and first released with X.Org Server version 6.9/7.0.
Historically, a distinction has been made between 2D and 3D acceleration. 2D acceleration was provided by the venerable XFree86 Acceleration Architecture, which made the video card's 2D hardware acceleration available to the X server.
The 3D acceleration set was provided via the Direct Rendering Manager, which worked by mapping 3D rendered pictures on top of the 2D picture. This had some buggy corner cases, but more or less worked, until compositing entered into the desktop. This distinction has become the source of a lot of bugs, and performance problems.
EXA was introduced as a stopgap measure, to provide better integration with XRender than XAA did, improving the X.Org Server 2D performance. In practice, while this proved quite advantageous in some respects, it also exhibited a number of corner cases and regressions.
The solution was to move to hardware acceleration with OpenGL for both 2D and 3D graphics with 2D graphics becoming just a subset of 3D rendering. Switching entirely over is unfortunately not so simple and not without some major obstacles.
- Properly accelerate XRender
- Be as simple as possible.
Many XAA drivers had EXA support added for X11R6.9/7.0 and support continues to be added to more drivers. Making this transition as easy as possible was an important design consideration.
According to the XorgGlossary, EXA is an "acceleration architecture with no well-defined acronym." Dot.kde.org called it "Eyecandy Acceleration Architecture". The driver modification guide calls it "EXcellent Architecture or Ex-kaa aXeleration Architecture or whatever."
- Summer coding (Zack Rusin blog entry, 3 June 2005)
- Acceleration Architecture (initial LinuxTag presentation by Zack Rusin)
- New acceleration architecture (announcement on Xorg mailing list, Zack Rusin, 25 June 2005)
- Jesse Barnes (2006-03-09). "Adding EXA support to your X.Org video driver". Retrieved 2010-05-18.
- UMA Acceleration Architecture
- X.Org Wiki - Development/Documentation/Glossary
- New Acceleration Architecture for X.org (dot.kde.org, 28 June 2005)