EXA

{{About|the computer architecture|other uses|Exa (disambiguation)}}

{{short description|Graphics acceleration architecture}}

File:Linux graphics drivers 2D.svg. Note, that modern software uses direct rendering.]]

File:The Linux Graphics Stack and glamor.svg 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){{usurped|1=[https://web.archive.org/web/20051118095054/http://www.kdedevelopers.org/node/1122 Summer coding]}} (Zack Rusin blog entry, 3 June 2005) 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[http://wiki.x.org/wiki/LinuxTagMeeting2005Zack Acceleration Architecture] (initial LinuxTag presentation by Zack Rusin) 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,[http://lists.freedesktop.org/archives/xorg/2005-June/008321.html New acceleration architecture] (announcement on Xorg mailing list, Zack Rusin, 25 June 2005) 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.{{cite web|url=https://gitlab.freedesktop.org/xorg/xserver/blob/master/hw/xfree86/doc/exa-driver.txt|title=Adding EXA support to your X.Org video driver|author=Jesse Barnes|accessdate=2010-05-18|date=2006-03-09}}

UXA is a reimplementation of the EXA API developed by Intel, using the Graphics Execution Manager.[http://keithp.com/blogs/UMA_Acceleration_Architecture/ UMA Acceleration Architecture]

The Radeon free and open-source device driver supports 2D acceleration through EXA and Glamor.{{cite web |url=http://xorg.freedesktop.org/wiki/RadeonFeature/ |title=Radeon Feature Matrix |work=freedesktop.org}}

Glamor is supposed to obsolete all previous attempts.{{cite web |url=http://www.freedesktop.org/wiki/Software/Glamor/ |title=What is Glamor? |work=freedesktop.org}}

Acronym

According to the X.Org web site{{cite web|title=Glossary|url=http://www.x.org/wiki/Development/Documentation/Glossary/|publisher=X.Org Foundation|accessdate=29 April 2015}} EXA is an "acceleration architecture with no well-defined acronym." Dot.kde.org called it "Eyecandy Acceleration Architecture".[http://dot.kde.org/2005/06/28/new-acceleration-architecture-xorg New Acceleration Architecture for X.org] (dot.kde.org, 28 June 2005) The driver modification guide calls it "EXcellent Architecture or Ex-kaa aXeleration Architecture or whatever."

See also

References