Mesa (computer graphics)
|Developer(s)||Intel, VMware (previously Tungsten Graphics)|
|Initial release||August 1993|
|Stable release||9.0.3 / February 21, 2013|
|Preview release||9.1.2 / April 30, 2013|
|Written in||C, C++, Assembly|
Mesa is a software library for 3D computer graphics that provides a generic Khronos-compliant OpenGL implementation for rendering three-dimensional graphics on multiple platforms. Mesa is open source software, released under the terms of the MIT License. It was initially developed by Brian Paul in August 1993, and is still maintained by him today. The project contains many contributions from other people, especially in the area of hardware support.
As of April 2008, it is the only commonly known, fully open source implementation of OpenGL which is continually updated to support the latest OpenGL specification. It is widely used, most importantly by the X.Org implementation of the X Window System, where it serves as the OpenGL core for the open source X.Org/DRI OpenGL drivers. X.Org provides the essential functionality used by most graphical applications which run on Unix-like platforms such as Linux.
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 3D started off by rendering all 3D computer graphics on the CPU. Despite this, the internal architecture of Mesa 3D was designed to be open for attaching to graphics processor-accelerated 3D rendering. In this first phase, rendering was done indirectly in the X server, leaving some overhead and noticeable speed lagging behind the theoretical maximum.
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 X server was blocked from doing any other GUI tasks.
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 3D. 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 3D. 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.
Even if those design needs all components to correctly cooperate with each others, the interfaces between them are relatively fixed but still see coordinated improvements even today. As a result, the software development on the individual modules can still be kept separated. As most of the code is open source, it still happens that, for experimental works on new features and enhancements, programmers sometimes create their own branch of altered modules until their results might show their conceptual success and can be merged back in a more or less compatible fashion to the main trees of all altered components and then typically ending up as a part of the next major or minor release. That applies e.g. to the update of the DRI specification in form of DRI2 as developed and published with a first reference implementation in years 2007 to 2008 that, for example, comes with no locks any more and improved back buffer support. For this, a special git branch of Mesa was created.
- Mesa 3D 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.
- In its current form, Mesa 3D is available and can be compiled on virtually all modern platforms.
- Though not an official OpenGL implementation for licensing reasons, the Mesa 3D authors have worked to keep the API in line with the OpenGL standard, as set forth by the OpenGL Architecture Review Board (ARB).
- Whilst Mesa 3D supports several hardware graphics accelerators, it may also be compiled as a software-only renderer.
- Since Mesa 3D is free/open source software, it is possible to use it for studying the internal design and operations of an OpenGL-compatible renderer.
- Due to its open source form it is possible to trace application bugs and the origin of valid API error messages down to the source line in the OpenGL library to get a better understanding for developing a good fix. In a similar fashion it extends the number of test cases where visual deviations and behaviour of application between different OpenGL implementations should be minimized.
- Supports 3D acceleration for AMD/ATI R100 to R800, Intel, and Nvidia cards. Previously drivers existed for the IBM/Toshiba/Sony Cell chip (in Gallium3D architecture) used in Sony PlayStation 3, S3 Virge & Savage chipsets, VIA chipsets, Matrox G200 & G400, and more.
See also 
- David Marshall (2008-12-16). "VMware's year end acquisition of Tungsten Graphics". InfoWorld. Retrieved 08-06-2011.
- "Mesa 9.0.3 Release Notes".
- "Mesa 9.1.2 Release Announcement".
- "Mesa". Ohloh. Retrieved 08-06-2011.
- OpenGL ES Conformant Products in khronos.org
- mesa3d.org license
- "Mesa Introduction". Mesa Team. Retrieved 24 January 2013.
- Brian Paul (2000-08-10). "Introduction to the Direct Rendering Infrastructure". dri.sourceforge.net. Retrieved 2012-01-25.
- "What's the relationship between Glide and DRI?". dri.freedesktop.org. Retrieved 2012-01-25.
- "DRI2". X.org. Retrieved 2012-01-25.
- "Mesa 9.0 Release Notes". Mesa3d.org. 2012-10-08. Retrieved 2012-10-09.
- "Mesa 9.1 Release Notes". Mesa3d.org. 2013-02-22. Retrieved 2013-04-16.
- Direct Rendering Infrastructure Status Page on freedesktop.org