Mesa (computer graphics)
|Original author(s)||Brian Paul|
|Developer(s)||Intel, AMD, VMware (previously Tungsten Graphics)|
|Initial release||August 1, 1993citation needed][|
|Stable release||10.0 / November 30, 2013|
|Written in||C, C++, Assembly|
|Operating system||Cross-platform (Linux, BSD, et al.)|
Mesa is a collection of free and open-source libraries that implement OpenGL and several other APIs related to hardware-accelerated 3D rendering, 3D computer graphics and GPGPU. Mesa is hosted by freedesktop.org and used on Linux, BSD and other operating systems. Additionally to the APIs, Mesa also harbors the available free implementations of graphics device drivers. The development of Mesa started in August 1993 by Brian Paul, who still maintains the package, by now containing numerous contributions from various other people and companies worldwide, due to its broad adoption.
Graphic API implementations
Mesa is known as housing implementation of graphic APIs, but it also contains the open-source device drivers for graphics chipsets, as can be seen in this Debian package. For DRI-drivers, the supported version of an API, is generally specific to the driver. E.g. the driver for Intel graphic chipsets support OpenGL ES 3.0 since Mesa 9.1, while the other drivers, support only version 2.0. Mesa supports OpenGL ES 1.0, 1.1, 2.0, OpenGL version 3.1 (depending on the driver), along with some extensions from OpenGL 4. Support for OpenGL ES 3.0 has been added, but only Intel graphics are currently able to take advantage.
Though, as of August 2013, Mesa was now the only free and open-source implementation of OpenGL, it's version 9.2 did only achieve compliance with OpenGL 3.1. OpenGL 3.1 was released on August 3rd, 2009 and OpenGL version 4.4 on July 22nd, 2013.
|Mesa 10.0 (2013-11-30)||3.3||2.0||1.1||1.4||1.4||deprecated||9.3 (and some of 10/11)|
|Mesa 9.0 (2012-10-08)||3.1||2.0||1.1||1.4||1.4||?||?|
|Mesa 8.0 (2012-02-08)||3.0||2.0||1.1||1.4||1.4||?||?|
|Mesa 7.0 (2007-06-22)||2.1||N/A||N/A||N/A||1.4||?||?|
|Mesa 6.0 (2004-01-06)||1.5||N/A||N/A||N/A||1.3||?||?|
|Mesa 5.0 (2002-11-13)||1.4||N/A||N/A||N/A||1.3||?||?|
|Mesa 4.0 (2001-10-22)||1.3||N/A||N/A||N/A||1.3||?||?|
The Wine (software) project wrote a free and open-source implementation of version 9.3 of the Direct3D rendering API. In conjunction with the Gallium3D Direct3D 9 State Tracker, Direct3D 9 games can be played at high frame rates on Linux.
Device driver implementations
The available free and open-source device drivers for graphic chipsets are "stewarded" by Mesa (because the existing free and open-source implementation of APIs are developed inside of Mesa). Currently there are two frameworks to write graphics drivers: DRI and Gallium3D.
There are device drivers for AMD/ATI R100 to R800, Intel, and Nvidia cards with 3D acceleration. Previously drivers existed for the IBM/Toshiba/Sony Cell APU of the PlayStation 3, S3 Virge & Savage chipsets, VIA chipsets, Matrox G200 & G400, and more.
The free and open-source drivers compete with proprietary closed-source drivers. Depending on the availability of hardware documentation and man-power, the free and open-source driver lag behind more or less in supporting 3D acceleration of new hardware. Also, 3D rendering performance is usually significantly slower , with some notable exceptions, where the free and open-source driver perform better than the vendor drivers.
Direct Rendering Infrastructure (DRI)
At the time 3D graphics cards became more mainstream for PCs, individuals partly supported by some companies began working on adding more support for hardware-accelerated 3D rendering to Mesa.[when?] The Direct Rendering Infrastructure (DRI) was one of these approaches to interface Mesa, OpenGL and other 3D rendering API libraries with the device drivers and hardware. After reaching a basic level of usability, DRI support was officially added to Mesa. This significantly broadened the available range of hardware support achievable when using the Mesa library.
With adapting to DRI, the Mesa library finally took over the role of the front end component of a full scale OpenGL framework with varying backend components that could offer different degrees of 3D hardware support while not dropping the full software rendering capability. The total system used many different software components.
While the design requires all these components to interact carefully, the interfaces between them are relatively fixed. Nonetheless, as most components interacting with the Mesa stack are open source, experimental work is often done through altering several components at once as well as the interfaces between them. If such experiments prove successful, they can be incorporated into the next major or minor release. That applies e.g. to the update of the DRI specification developed in the 2007-2008 timeframe. The result of this experimentation, DRI2, operates without locks and with improved back buffer support. For this, a special git branch of Mesa was created.
Gallium3D was developed by Tungsten Graphics as a means to simplify the writing of device drivers and also to achieve maximum portability of them, without having to rewrite the source code. The main disadvantage is, that by introducing additional interfaces, namely the Gallium3D WinSys Interface, the full capabilities of the underlying hardware can not be accessed by the device drivers.
Mesa also contains an implementation of software rendering.
Project initiator Brian Paul was a graphics hobbyist. He thought it would be fun to implement a simple 3D graphics library using the OpenGL API, which he might then use instead of VOGL. Beginning in 1993, he spent eighteen months of part-time development before he released the software on the Internet. The software was well received, and people began contributing to its development. Mesa started off by rendering all 3D computer graphics on the CPU. Despite this, the internal architecture of Mesa was designed to be open for attaching to graphics processor-accelerated 3D rendering. In this first phase, rendering was done indirectly in the display server, leaving some overhead and noticeable speed lagging behind the theoretical maximum. The Diamond Monster 3D, using the Voodoo Graphics chipset, was one of the first 3D hardware devices supported by Mesa.
The first true graphics hardware support was added to Mesa in 1997, based upon the Glide API for the once new 3dfx Voodoo I/II graphics cards and their successors. A major problem of using Glide as the acceleration layer was the habit of Glide to run full screen, which was only suitable for computer games. Further, Glide took the lock of the screen memory, and thus the display server was blocked from doing any other GUI tasks.
- David Marshall (2008-12-16). "VMware's year end acquisition of Tungsten Graphics". InfoWorld. Retrieved 08-06-2011.
- "Mesa 9.2 Release Notes".
- "Mesa". Ohloh. Retrieved 08-06-2011.
- "Mesa3D license".
- "Mesa 9.1 Release Notes". Mesa3d.org. 2013-02-22. Retrieved 2013-04-16.
- "Khronos Releases OpenGL 4.4 Specification".
- http://www.phoronix.com/scan.php?page=news_item&px=MTQ4MzI Mesa 10.0 Is Declared: OpenGL 3.2 Comes For Intel Linux
- "Nine Reasons Mesa 9.0 Is Disappointing For End-Users". 2012-1009.
- "[Mesa-announce] Mesa 10.0 released".
- Direct Rendering Infrastructure Status Page on freedesktop.org
- Brian Paul (2000-08-10). "Introduction to the Direct Rendering Infrastructure". dri.sourceforge.net. Retrieved 2012-01-25.
- "DRI2". X.org. Retrieved 2012-01-25.
- "Mesa Introduction". Mesa Team. Retrieved 24 January 2013.
- "What's the relationship between Glide and DRI?". dri.freedesktop.org. Retrieved 2012-01-25.