intro.html revision 210a27d8c33634c6b676a8a1d35d5fec98213181
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html lang="en"> 3<head> 4 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5 <title>Mesa Introduction</title> 6 <link rel="stylesheet" type="text/css" href="mesa.css"> 7</head> 8<body> 9 10<h1>Introduction</h1> 11 12<p> 13Mesa is an open-source implementation of the 14<a href="http://www.opengl.org/" target="_parent">OpenGL</a> specification - 15a system for rendering interactive 3D graphics. 16</p> 17 18<p> 19A variety of device drivers allows Mesa to be used in many different 20environments ranging from software emulation to complete hardware acceleration 21for modern GPUs. 22</p> 23 24<p> 25Mesa ties into several other open-source projects: the 26<a href="http://dri.freedesktop.org/" target="_parent">Direct Rendering 27Infrastructure</a> and <a href="http://x.org" target="_parent">X.org</a> to 28provide OpenGL support to users of X on Linux, FreeBSD and other operating 29systems. 30</p> 31 32 33 34<h1>Project History</h1> 35 36<p> 37The Mesa project was originally started by Brian Paul. 38Here's a short history of the project. 39</p> 40 41<p> 42August, 1993: I begin working on Mesa in my spare time. The project 43has no name at that point. I was simply interested in writing a simple 443D graphics library that used the then-new OpenGL API. I was partially 45inspired by the <em>VOGL</em> library which emulated a subset of IRIS GL. 46I had been programming with IRIS GL since 1991. 47</p> 48 49<p> 50November 1994: I contact SGI to ask permission to distribute my OpenGL-like 51graphics library on the internet. SGI was generally receptive to the 52idea and after negotiations with SGI's legal department, I get permission 53to release it. 54</p> 55 56<p> 57February 1995: Mesa 1.0 is released on the internet. I expected that 58a few people would be interested in it, but not thousands. 59I was soon receiving patches, new features and thank-you notes on a 60daily basis. That encouraged me to continue working on Mesa. The 61name Mesa just popped into my head one day. SGI had asked me not to use 62the terms <em>"Open"</em> or <em>"GL"</em> in the project name and I didn't 63want to make up a new acronym. Later, I heard of the Mesa programming 64language and the Mesa spreadsheet for NeXTStep. 65</p> 66 67<p> 68In the early days, OpenGL wasn't available on too many systems. 69It even took a while for SGI to support it across their product line. 70Mesa filled a big hole during that time. 71For a lot of people, Mesa was their first introduction to OpenGL. 72I think SGI recognized that Mesa actually helped to promote 73the OpenGL API, so they didn't feel threatened by the project. 74</p> 75 76 77<p> 781995-1996: I continue working on Mesa both during my spare time and during 79my work hours at the Space Science and Engineering Center at the University 80of Wisconsin in Madison. My supervisor, Bill Hibbard, lets me do this because 81Mesa is now being using for the <a href="http://www.ssec.wisc.edu/%7Ebillh/vis.html" target="_parent">Vis5D</a> project. 82</p><p> 83October 1996: Mesa 2.0 is released. It implements the OpenGL 1.1 specification. 84</p> 85 86<p> 87March 1997: Mesa 2.2 is released. It supports the new 3dfx Voodoo graphics 88card via the Glide library. It's the first really popular hardware OpenGL 89implementation for Linux. 90</p> 91 92<p> 93September 1998: Mesa 3.0 is released. It's the first publicly-available 94implementation of the OpenGL 1.2 API. 95</p> 96 97<p> 98March 1999: I attend my first OpenGL ARB meeting. I contribute to the 99development of several official OpenGL extensions over the years. 100</p> 101 102<p> 103September 1999: I'm hired by Precision Insight, Inc. Mesa is a key 104component of 3D hardware acceleration in the new DRI project for XFree86. 105Drivers for 3dfx, 3dLabs, Intel, Matrox and ATI hardware soon follow. 106</p> 107 108<p> 109October 2001: Mesa 4.0 is released. 110It implements the OpenGL 1.3 specification. 111</p> 112 113 114<p> 115November 2001: I cofounded Tungsten Graphics, Inc. with Keith Whitwell, 116Jens Owen, David Dawes and Frank LaMonica. 117Tungsten Graphics was acquired by VMware in December 2008. 118</p> 119 120<p> 121November 2002: Mesa 5.0 is released. 122It implements the OpenGL 1.4 specification. 123</p> 124 125<p> 126January 2003: Mesa 6.0 is released. It implements the OpenGL 1.5 127specification as well as the GL_ARB_vertex_program and 128GL_ARB_fragment_program extensions. 129</p> 130 131<p> 132June 2007: Mesa 7.0 is released, implementing the OpenGL 2.1 specification 133and OpenGL Shading Language. 134</p> 135 136<p> 1372008: Keith Whitwell and other Tungsten Graphics employees develop 138<a href="http://en.wikipedia.org/wiki/Gallium3D" target="_parent">Gallium</a> 139- a new GPU abstraction layer. The latest Mesa drivers are based on 140Gallium and other APIs such as OpenVG are implemented on top of Gallium. 141</p> 142 143<p> 144February 2012: Mesa 8.0 is released, implementing the OpenGL 3.0 specification 145and version 1.30 of the OpenGL Shading Language. 146</p> 147 148<p> 149Ongoing: Mesa is the OpenGL implementation for several types of hardware 150made by Intel, AMD and NVIDIA, plus the VMware virtual GPU. 151There's also several software-based renderers: swrast (the legacy 152Mesa rasterizer), softpipe (a gallium reference driver) and llvmpipe 153(LLVM/JIT-based high-speed rasterizer). 154Work continues on the drivers and core Mesa to implement newer versions 155of the OpenGL specification. 156</p> 157 158 159 160<h1>Major Versions</h1> 161 162<p> 163This is a summary of the major versions of Mesa. 164Mesa's major version number has been incremented whenever a new version 165of the OpenGL specification is implemented. 166</p> 167 168 169<h2>Version 8.x features</h2> 170<p> 171Version 8.x of Mesa implements the OpenGL 3.0 API. 172The developers at Intel deserve a lot of credit for implementing most 173of the OpenGL 3.0 features in core Mesa, the GLSL compiler as well as 174the i965 driver. 175</p> 176 177 178<h2>Version 7.x features</h2> 179<p> 180Version 7.x of Mesa implements the OpenGL 2.1 API. The main feature 181of OpenGL 2.x is the OpenGL Shading Language. 182</p> 183 184 185<h2>Version 6.x features</h2> 186<p> 187Version 6.x of Mesa implements the OpenGL 1.5 API with the following 188extensions incorporated as standard features: 189</p> 190<ul> 191<li>GL_ARB_occlusion_query 192<li>GL_ARB_vertex_buffer_object 193<li>GL_EXT_shadow_funcs 194</ul> 195<p> 196Also note that several OpenGL tokens were renamed in OpenGL 1.5 197for the sake of consistency. 198The old tokens are still available. 199</p> 200<pre> 201New Token Old Token 202------------------------------------------------------------ 203GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE 204GL_FOG_COORD GL_FOG_COORDINATE 205GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE 206GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE 207GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE 208GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER 209GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY 210GL_SRC0_RGB GL_SOURCE0_RGB 211GL_SRC1_RGB GL_SOURCE1_RGB 212GL_SRC2_RGB GL_SOURCE2_RGB 213GL_SRC0_ALPHA GL_SOURCE0_ALPHA 214GL_SRC1_ALPHA GL_SOURCE1_ALPHA 215GL_SRC2_ALPHA GL_SOURCE2_ALPHA 216</pre> 217<p> 218See the 219<a href="http://www.opengl.org/documentation/spec.html" target="_parent"> 220OpenGL specification</a> for more details. 221</p> 222 223 224 225<h2>Version 5.x features</h2> 226<p> 227Version 5.x of Mesa implements the OpenGL 1.4 API with the following 228extensions incorporated as standard features: 229</p> 230<ul> 231<li>GL_ARB_depth_texture 232<li>GL_ARB_shadow 233<li>GL_ARB_texture_env_crossbar 234<li>GL_ARB_texture_mirror_repeat 235<li>GL_ARB_window_pos 236<li>GL_EXT_blend_color 237<li>GL_EXT_blend_func_separate 238<li>GL_EXT_blend_logic_op 239<li>GL_EXT_blend_minmax 240<li>GL_EXT_blend_subtract 241<li>GL_EXT_fog_coord 242<li>GL_EXT_multi_draw_arrays 243<li>GL_EXT_point_parameters 244<li>GL_EXT_secondary_color 245<li>GL_EXT_stencil_wrap 246<li>GL_EXT_texture_lod_bias (plus, a per-texture LOD bias parameter) 247<li>GL_SGIS_generate_mipmap 248</ul> 249 250 251<h2>Version 4.x features</h2> 252 253<p> 254Version 4.x of Mesa implements the OpenGL 1.3 API with the following 255extensions incorporated as standard features: 256</p> 257 258<ul> 259<li>GL_ARB_multisample 260<li>GL_ARB_multitexture 261<li>GL_ARB_texture_border_clamp 262<li>GL_ARB_texture_compression 263<li>GL_ARB_texture_cube_map 264<li>GL_ARB_texture_env_add 265<li>GL_ARB_texture_env_combine 266<li>GL_ARB_texture_env_dot3 267<li>GL_ARB_transpose_matrix 268</ul> 269 270<h2>Version 3.x features</h2> 271 272<p> 273Version 3.x of Mesa implements the OpenGL 1.2 API with the following 274features: 275</p> 276<ul> 277<li>BGR, BGRA and packed pixel formats 278<li>New texture border clamp mode 279<li>glDrawRangeElements() 280<li>standard 3-D texturing 281<li>advanced MIPMAP control 282<li>separate specular color interpolation 283</ul> 284 285 286<h2>Version 2.x features</h2> 287<p> 288Version 2.x of Mesa implements the OpenGL 1.1 API with the following 289features. 290</p> 291<ul> 292<li>Texture mapping: 293 <ul> 294 <li>glAreTexturesResident 295 <li>glBindTexture 296 <li>glCopyTexImage1D 297 <li>glCopyTexImage2D 298 <li>glCopyTexSubImage1D 299 <li>glCopyTexSubImage2D 300 <li>glDeleteTextures 301 <li>glGenTextures 302 <li>glIsTexture 303 <li>glPrioritizeTextures 304 <li>glTexSubImage1D 305 <li>glTexSubImage2D 306 </ul> 307<li>Vertex Arrays: 308 <ul> 309 <li>glArrayElement 310 <li>glColorPointer 311 <li>glDrawElements 312 <li>glEdgeFlagPointer 313 <li>glIndexPointer 314 <li>glInterleavedArrays 315 <li>glNormalPointer 316 <li>glTexCoordPointer 317 <li>glVertexPointer 318 </ul> 319<li>Client state management: 320 <ul> 321 <li>glDisableClientState 322 <li>glEnableClientState 323 <li>glPopClientAttrib 324 <li>glPushClientAttrib 325 </ul> 326<li>Misc: 327 <ul> 328 <li>glGetPointer 329 <li>glIndexub 330 <li>glIndexubv 331 <li>glPolygonOffset 332 </ul> 333</ul> 334 335 336</body> 337</html> 338