Mesa (computer graphics)
http://en.wikipedia.org/wiki/Mesa_(computer_graphics)
Mesa (computer graphics)
| Original author(s) | Brian Paul |
|---|---|
| Developer(s) | Intel, AMD, VMware(previously Tungsten Graphics)[1] |
| Initial release | August 1, 1993; 20 years ago[citation needed] |
| Stable release | 9.2.3 / November 13, 2013; 4 days ago[2] |
| Development status | active |
| Written in | C, C++, Assembly[3] |
| Operating system | Cross-platform (Linux,BSD, et al.) |
| Type | Graphics library |
| License | MIT License[4] |
| Website | mesa3d.org |
Mesa is a collection of free and open-source libraries that implement several APIs related to hardware-accelerated 3D rendering, 3D computer graphics and also 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 Pauland is still maintained by him, by now containing numerous contributions from various other people and companies worldwide, due to its broad adoption.
Contents
[hide]
Software architecture[edit]

Illustration of the Linux graphics stack
The first true graphics hardware support was added to Mesa in 1997, based upon the Glide API for the once new 3dfx Voodoo I/IIgraphics cards and their successors.[5] 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.[6]
Graphic API implementations[edit]

The free implementations of the Wayland (display server protocol) rely upon the Mesa implementation of EGL. A special library called libwayland-EGL was written to accommodate access to the framebuffer
Mesa is known as housing implementation of graphic APIs, but it does also comprehend the available free and open-source device drivers for graphic chipsets, as can be seen by means of 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,[7] 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.[8]
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.[9]
Mesa 10 will comply with OpenGL 3.2, albeit only for certain GPU hardware.[10] It has not yet achieved full OpenGL 4 compliance at any level (OpenGL Extension Wrangler).
Drivers, that are written conforming to the Gallium3D-specifications[citation needed], do all support the same operating system kernels and APIs and versions thereof.
| API | OpenGL | OpenGL ES | OpenVG | EGL | GLX | Glide | Direct3D |
|---|---|---|---|---|---|---|---|
| Current Version | 4.4 2013-07-22 |
3.0 2012-08-06 |
1.1 2008-12-03 |
1.4 2011-04-06 |
1.4 2005-12-16 |
3.10 2013-04-03 |
11.2 2011-09-13 |
| Mesa 10.0 or 11.0 (2013-11-27)[11] | 3.3[12] | 2.0 | 1.1 | 1.4 | 1.4 | deprecated | 9.3 (and some of 10/11[13]) |
| Mesa 9.0 (2012-10-08) | 3.1[14] | 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[edit]

DRI and Gallium3D have different driver models. Both share a lot of free and open-sourcecode
The available free and open-source device drivers for graphic chipsets are "stewarded" by Mesa (because the existent 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.[15]
The free and open-source drivers do compete with the proprietary closed-source driver written by the developers. 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 [1][2][3][4][5], with some notable exceptions, where the free and open-source driver perform better than the vendor drivers.
Direct Rendering Infrastructure (DRI)[edit]
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.[5]
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.[5]
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.[16]
Gallium3D[edit]
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.
Software renderer[edit]
Mesa also contains an implementation to do software rendering.
Critique[edit]
The Mesa 3D project writes the free and open-source implementations of the APIs as well as the graphic device drivers. And it is limping behind the releases of new API versions.[17]
History[edit]
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 ofVOGL.[18] 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 tographics 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.
Mesa (computer graphics)的更多相关文章
- Computer Graphics Research Software
Computer Graphics Research Software Helping you avoid re-inventing the wheel since 2009! Last update ...
- 水题 HDOJ 4716 A Computer Graphics Problem
题目传送门 /* 水题:看见x是十的倍数就简单了 */ #include <cstdio> #include <iostream> #include <algorithm ...
- Mathematics for Computer Graphics数学在计算机图形学中的应用 [转]
最近严重感觉到数学知识的不足! http://bbs.gameres.com/showthread.asp?threadid=10509 [译]Mathematics for Computer Gra ...
- Computer Graphics Thinking–texture tiling
Here is one question: how to tile texture? One thing worth to notice: The DirectX and OpenGL stipula ...
- HDU 4716 A Computer Graphics Problem
A Computer Graphics Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- Mathematics for Computer Graphics
Mathematics for Computer Graphics 最近严重感觉到数学知识的不足! http://bbs.gameres.com/showthread.asp?threadid=105 ...
- Vector Math for 3D Computer Graphics (Bradley Kjell 著)
https://chortle.ccsu.edu/VectorLessons/index.html Chapter0 Points and Lines (已看) Chapter1 Vectors, P ...
- Fundamentals of Computer Graphics 中文版(第二版) (Peter Shirley 著)
1 引言 2 数学知识 3 光栅算法 4 信号处理 5 线性代数 6 矩阵变换 7 观察 8 隐藏面消除 9 表面明暗处理 10 光线追踪 11 纹理映射 12 完整的图形流水线 13 图形学的数据结 ...
- HDU 4716 A Computer Graphics Problem (水题)
A Computer Graphics Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
随机推荐
- 【01】如何在XMind中排列自由主题
如何在XMind中一招排列自由主题 在XMind思维导图软件中,用户可以随心所欲的添加自由主题,但由于自由主题的灵活性,造成了它的不整齐性,相对需要操持界面排列有序的用户来说,会造成一定的困扰. 第一 ...
- 爬虫开发python工具包介绍 (1)
本文来自网易云社区 作者:王涛 本文大纲: 简易介绍今天要讲解的两个爬虫开发的python库 详细介绍 requests库及函数中的各个参数 详细介绍 tornado 中的httpcilent的应用 ...
- 【转】Python3学习笔记(urllib模块的使用)
原文地址:https://www.cnblogs.com/Lands-ljk/p/5447127.html 1.基本方法 urllib.request.urlopen(url, data=None, ...
- 紫书第五章训练3 D - Throwing cards away I
D - Throwing cards away I Given is an ordered deck of n cards numbered 1 to n with card 1 at the top ...
- [SCOI2005]最大子矩阵 (动态规划)
题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式: 第一行为n,m,k(1≤n≤100,1≤m≤2 ...
- poj 3525 求凸包的最大内切圆
Most Distant Point from the Sea Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3640 ...
- Query on The Trees(hdu 4010)
题意: 给出一颗树,有4种操作: 1.如果x和y不在同一棵树上则在xy连边 2.如果x和y在同一棵树上并且x!=y则把x换为树根并把y和y的父亲分离 3.如果x和y在同一棵树上则x到y的路径上所有的点 ...
- ZOJ 3811 / 2014 牡丹江赛区网络赛 C. Untrusted Patrol bfs/dfs/并查集
Untrusted Patrol Time Limit: 3 Seconds Memory Limit: 65536 KB ...
- iOS APP 架构漫谈[转]
Mark 一下 很不错的文章 最近看了一些有关server的东西,一些很简单的东西,不外乎是一些文档规范,另外结合最近看的wwdc的一些video,觉得对软件架构(software arch ...
- OSI模型详解
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...