EXA

The XAA/EXA/UXA/SNA APIs are for the 2D graphics drivers inside the X server. Note, that modern software uses direct rendering.
Glamor obsoletes DDX, here with XWayland.

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)[1] and to make the XRender extension more usable, with only minor changes needed to adapt obsolete XFree86 video drivers written to use XAA; it was designed by Zack Rusin and announced at LinuxTag 2005[2] and first released with X.Org Server version 6.9/7.0.

History

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,[3] the goals are:

  1. Properly accelerate XRender
  2. 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.[4]

UXA is a reimplementation of the EXA API developed by Intel, using the Graphics Execution Manager.[5]

The Radeon free and open-source device driver supports 2D acceleration through EXA and Glamor.[6]

Glamor is supposed to obsolete all previous attempts.[7]

Acronym

According to the X.Org web site[8] EXA is an "acceleration architecture with no well-defined acronym." Dot.kde.org called it "Eyecandy Acceleration Architecture".[9] The driver modification guide[4] calls it "EXcellent Architecture or Ex-kaa aXeleration Architecture or whatever."

See also

References

  1. ^ Summer coding[usurped] (Zack Rusin blog entry, 3 June 2005)
  2. ^ Acceleration Architecture (initial LinuxTag presentation by Zack Rusin)
  3. ^ New acceleration architecture (announcement on Xorg mailing list, Zack Rusin, 25 June 2005)
  4. ^ a b Jesse Barnes (2006-03-09). "Adding EXA support to your X.Org video driver". Retrieved 2010-05-18.
  5. ^ UMA Acceleration Architecture
  6. ^ "Radeon Feature Matrix". freedesktop.org.
  7. ^ "What is Glamor?". freedesktop.org.
  8. ^ "Glossary". X.Org Foundation. Retrieved 29 April 2015.
  9. ^ New Acceleration Architecture for X.org (dot.kde.org, 28 June 2005)
  • ExaStatus (X.Org)
  • EXA (Carl Worth's EXA development blog posts)