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, XAA, 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.
EXA was adapted from KAA, the KDrive Acceleration Architecture, from the experimental Freedesktop.org Xserver. Per the initial mailing list announcement, the goals are:
- 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.
UXA is a reimplementation of the EXA API developed by Intel, using the Graphics Execution Manager.
The Radeon free and open-source device driver supports 2D acceleration through EXA and Glamor.
Glamor is supposed to obsolete all previous attempts.
According to the X.Org web site 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."