intro.html revision 848b8605
1848b8605Smrg<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2848b8605Smrg<html lang="en"> 3848b8605Smrg<head> 4848b8605Smrg <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5848b8605Smrg <title>Mesa Introduction</title> 6848b8605Smrg <link rel="stylesheet" type="text/css" href="mesa.css"> 7848b8605Smrg</head> 8848b8605Smrg<body> 9848b8605Smrg 10848b8605Smrg<div class="header"> 11848b8605Smrg <h1>The Mesa 3D Graphics Library</h1> 12848b8605Smrg</div> 13848b8605Smrg 14848b8605Smrg<iframe src="contents.html"></iframe> 15848b8605Smrg<div class="content"> 16848b8605Smrg 17848b8605Smrg<h1>Introduction</h1> 18848b8605Smrg 19848b8605Smrg<p> 20848b8605SmrgMesa is an open-source implementation of the 21848b8605Smrg<a href="http://www.opengl.org/">OpenGL</a> specification - 22848b8605Smrga system for rendering interactive 3D graphics. 23848b8605Smrg</p> 24848b8605Smrg 25848b8605Smrg<p> 26848b8605SmrgA variety of device drivers allows Mesa to be used in many different 27848b8605Smrgenvironments ranging from software emulation to complete hardware acceleration 28848b8605Smrgfor modern GPUs. 29848b8605Smrg</p> 30848b8605Smrg 31848b8605Smrg<p> 32848b8605SmrgMesa ties into several other open-source projects: the 33848b8605Smrg<a href="http://dri.freedesktop.org/">Direct Rendering 34848b8605SmrgInfrastructure</a> and <a href="http://x.org">X.org</a> to 35848b8605Smrgprovide OpenGL support to users of X on Linux, FreeBSD and other operating 36848b8605Smrgsystems. 37848b8605Smrg</p> 38848b8605Smrg 39848b8605Smrg 40848b8605Smrg 41848b8605Smrg<h1>Project History</h1> 42848b8605Smrg 43848b8605Smrg<p> 44848b8605SmrgThe Mesa project was originally started by Brian Paul. 45848b8605SmrgHere's a short history of the project. 46848b8605Smrg</p> 47848b8605Smrg 48848b8605Smrg<p> 49848b8605SmrgAugust, 1993: I begin working on Mesa in my spare time. The project 50848b8605Smrghas no name at that point. I was simply interested in writing a simple 51848b8605Smrg3D graphics library that used the then-new OpenGL API. I was partially 52848b8605Smrginspired by the <em>VOGL</em> library which emulated a subset of IRIS GL. 53848b8605SmrgI had been programming with IRIS GL since 1991. 54848b8605Smrg</p> 55848b8605Smrg 56848b8605Smrg<p> 57848b8605SmrgNovember 1994: I contact SGI to ask permission to distribute my OpenGL-like 58848b8605Smrggraphics library on the internet. SGI was generally receptive to the 59848b8605Smrgidea and after negotiations with SGI's legal department, I get permission 60848b8605Smrgto release it. 61848b8605Smrg</p> 62848b8605Smrg 63848b8605Smrg<p> 64848b8605SmrgFebruary 1995: Mesa 1.0 is released on the internet. I expected that 65848b8605Smrga few people would be interested in it, but not thousands. 66848b8605SmrgI was soon receiving patches, new features and thank-you notes on a 67848b8605Smrgdaily basis. That encouraged me to continue working on Mesa. The 68848b8605Smrgname Mesa just popped into my head one day. SGI had asked me not to use 69848b8605Smrgthe terms <em>"Open"</em> or <em>"GL"</em> in the project name and I didn't 70848b8605Smrgwant to make up a new acronym. Later, I heard of the Mesa programming 71848b8605Smrglanguage and the Mesa spreadsheet for NeXTStep. 72848b8605Smrg</p> 73848b8605Smrg 74848b8605Smrg<p> 75848b8605SmrgIn the early days, OpenGL wasn't available on too many systems. 76848b8605SmrgIt even took a while for SGI to support it across their product line. 77848b8605SmrgMesa filled a big hole during that time. 78848b8605SmrgFor a lot of people, Mesa was their first introduction to OpenGL. 79848b8605SmrgI think SGI recognized that Mesa actually helped to promote 80848b8605Smrgthe OpenGL API, so they didn't feel threatened by the project. 81848b8605Smrg</p> 82848b8605Smrg 83848b8605Smrg 84848b8605Smrg<p> 85848b8605Smrg1995-1996: I continue working on Mesa both during my spare time and during 86848b8605Smrgmy work hours at the Space Science and Engineering Center at the University 87848b8605Smrgof Wisconsin in Madison. My supervisor, Bill Hibbard, lets me do this because 88848b8605SmrgMesa is now being using for the <a href="http://www.ssec.wisc.edu/%7Ebillh/vis.html">Vis5D</a> project. 89848b8605Smrg</p><p> 90848b8605SmrgOctober 1996: Mesa 2.0 is released. It implements the OpenGL 1.1 specification. 91848b8605Smrg</p> 92848b8605Smrg 93848b8605Smrg<p> 94848b8605SmrgMarch 1997: Mesa 2.2 is released. It supports the new 3dfx Voodoo graphics 95848b8605Smrgcard via the Glide library. It's the first really popular hardware OpenGL 96848b8605Smrgimplementation for Linux. 97848b8605Smrg</p> 98848b8605Smrg 99848b8605Smrg<p> 100848b8605SmrgSeptember 1998: Mesa 3.0 is released. It's the first publicly-available 101848b8605Smrgimplementation of the OpenGL 1.2 API. 102848b8605Smrg</p> 103848b8605Smrg 104848b8605Smrg<p> 105848b8605SmrgMarch 1999: I attend my first OpenGL ARB meeting. I contribute to the 106848b8605Smrgdevelopment of several official OpenGL extensions over the years. 107848b8605Smrg</p> 108848b8605Smrg 109848b8605Smrg<p> 110848b8605SmrgSeptember 1999: I'm hired by Precision Insight, Inc. Mesa is a key 111848b8605Smrgcomponent of 3D hardware acceleration in the new DRI project for XFree86. 112848b8605SmrgDrivers for 3dfx, 3dLabs, Intel, Matrox and ATI hardware soon follow. 113848b8605Smrg</p> 114848b8605Smrg 115848b8605Smrg<p> 116848b8605SmrgOctober 2001: Mesa 4.0 is released. 117848b8605SmrgIt implements the OpenGL 1.3 specification. 118848b8605Smrg</p> 119848b8605Smrg 120848b8605Smrg 121848b8605Smrg<p> 122848b8605SmrgNovember 2001: I cofounded Tungsten Graphics, Inc. with Keith Whitwell, 123848b8605SmrgJens Owen, David Dawes and Frank LaMonica. 124848b8605SmrgTungsten Graphics was acquired by VMware in December 2008. 125848b8605Smrg</p> 126848b8605Smrg 127848b8605Smrg<p> 128848b8605SmrgNovember 2002: Mesa 5.0 is released. 129848b8605SmrgIt implements the OpenGL 1.4 specification. 130848b8605Smrg</p> 131848b8605Smrg 132848b8605Smrg<p> 133848b8605SmrgJanuary 2003: Mesa 6.0 is released. It implements the OpenGL 1.5 134848b8605Smrgspecification as well as the GL_ARB_vertex_program and 135848b8605SmrgGL_ARB_fragment_program extensions. 136848b8605Smrg</p> 137848b8605Smrg 138848b8605Smrg<p> 139848b8605SmrgJune 2007: Mesa 7.0 is released, implementing the OpenGL 2.1 specification 140848b8605Smrgand OpenGL Shading Language. 141848b8605Smrg</p> 142848b8605Smrg 143848b8605Smrg<p> 144848b8605Smrg2008: Keith Whitwell and other Tungsten Graphics employees develop 145848b8605Smrg<a href="http://en.wikipedia.org/wiki/Gallium3D">Gallium</a> 146848b8605Smrg- a new GPU abstraction layer. The latest Mesa drivers are based on 147848b8605SmrgGallium and other APIs such as OpenVG are implemented on top of Gallium. 148848b8605Smrg</p> 149848b8605Smrg 150848b8605Smrg<p> 151848b8605SmrgFebruary 2012: Mesa 8.0 is released, implementing the OpenGL 3.0 specification 152848b8605Smrgand version 1.30 of the OpenGL Shading Language. 153848b8605Smrg</p> 154848b8605Smrg 155848b8605Smrg<p> 156848b8605SmrgOngoing: Mesa is the OpenGL implementation for several types of hardware 157848b8605Smrgmade by Intel, AMD and NVIDIA, plus the VMware virtual GPU. 158848b8605SmrgThere's also several software-based renderers: swrast (the legacy 159848b8605SmrgMesa rasterizer), softpipe (a gallium reference driver) and llvmpipe 160848b8605Smrg(LLVM/JIT-based high-speed rasterizer). 161848b8605SmrgWork continues on the drivers and core Mesa to implement newer versions 162848b8605Smrgof the OpenGL specification. 163848b8605Smrg</p> 164848b8605Smrg 165848b8605Smrg 166848b8605Smrg 167848b8605Smrg<h1>Major Versions</h1> 168848b8605Smrg 169848b8605Smrg<p> 170848b8605SmrgThis is a summary of the major versions of Mesa. 171848b8605SmrgMesa's major version number has been incremented whenever a new version 172848b8605Smrgof the OpenGL specification is implemented. 173848b8605Smrg</p> 174848b8605Smrg 175848b8605Smrg 176848b8605Smrg<h2>Version 9.x features</h2> 177848b8605Smrg<p> 178848b8605SmrgVersion 9.x of Mesa implements the OpenGL 3.1 API. 179848b8605SmrgWhile the driver for Intel Sandy Bridge and Ivy Bridge is the only 180848b8605Smrgdriver to support OpenGL 3.1, many developers across the open-source 181848b8605Smrgcommunity contributed features required for OpenGL 3.1. The primary 182848b8605Smrgfeatures added since the Mesa 8.0 release are 183848b8605SmrgGL_ARB_texture_buffer_object and GL_ARB_uniform_buffer_object. 184848b8605Smrg</p> 185848b8605Smrg 186848b8605Smrg 187848b8605Smrg<h2>Version 8.x features</h2> 188848b8605Smrg<p> 189848b8605SmrgVersion 8.x of Mesa implements the OpenGL 3.0 API. 190848b8605SmrgThe developers at Intel deserve a lot of credit for implementing most 191848b8605Smrgof the OpenGL 3.0 features in core Mesa, the GLSL compiler as well as 192848b8605Smrgthe i965 driver. 193848b8605Smrg</p> 194848b8605Smrg 195848b8605Smrg 196848b8605Smrg<h2>Version 7.x features</h2> 197848b8605Smrg<p> 198848b8605SmrgVersion 7.x of Mesa implements the OpenGL 2.1 API. The main feature 199848b8605Smrgof OpenGL 2.x is the OpenGL Shading Language. 200848b8605Smrg</p> 201848b8605Smrg 202848b8605Smrg 203848b8605Smrg<h2>Version 6.x features</h2> 204848b8605Smrg<p> 205848b8605SmrgVersion 6.x of Mesa implements the OpenGL 1.5 API with the following 206848b8605Smrgextensions incorporated as standard features: 207848b8605Smrg</p> 208848b8605Smrg<ul> 209848b8605Smrg<li>GL_ARB_occlusion_query 210848b8605Smrg<li>GL_ARB_vertex_buffer_object 211848b8605Smrg<li>GL_EXT_shadow_funcs 212848b8605Smrg</ul> 213848b8605Smrg<p> 214848b8605SmrgAlso note that several OpenGL tokens were renamed in OpenGL 1.5 215848b8605Smrgfor the sake of consistency. 216848b8605SmrgThe old tokens are still available. 217848b8605Smrg</p> 218848b8605Smrg<pre> 219848b8605SmrgNew Token Old Token 220848b8605Smrg------------------------------------------------------------ 221848b8605SmrgGL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE 222848b8605SmrgGL_FOG_COORD GL_FOG_COORDINATE 223848b8605SmrgGL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE 224848b8605SmrgGL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE 225848b8605SmrgGL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE 226848b8605SmrgGL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER 227848b8605SmrgGL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY 228848b8605SmrgGL_SRC0_RGB GL_SOURCE0_RGB 229848b8605SmrgGL_SRC1_RGB GL_SOURCE1_RGB 230848b8605SmrgGL_SRC2_RGB GL_SOURCE2_RGB 231848b8605SmrgGL_SRC0_ALPHA GL_SOURCE0_ALPHA 232848b8605SmrgGL_SRC1_ALPHA GL_SOURCE1_ALPHA 233848b8605SmrgGL_SRC2_ALPHA GL_SOURCE2_ALPHA 234848b8605Smrg</pre> 235848b8605Smrg<p> 236848b8605SmrgSee the 237848b8605Smrg<a href="http://www.opengl.org/documentation/spec.html"> 238848b8605SmrgOpenGL specification</a> for more details. 239848b8605Smrg</p> 240848b8605Smrg 241848b8605Smrg 242848b8605Smrg 243848b8605Smrg<h2>Version 5.x features</h2> 244848b8605Smrg<p> 245848b8605SmrgVersion 5.x of Mesa implements the OpenGL 1.4 API with the following 246848b8605Smrgextensions incorporated as standard features: 247848b8605Smrg</p> 248848b8605Smrg<ul> 249848b8605Smrg<li>GL_ARB_depth_texture 250848b8605Smrg<li>GL_ARB_shadow 251848b8605Smrg<li>GL_ARB_texture_env_crossbar 252848b8605Smrg<li>GL_ARB_texture_mirror_repeat 253848b8605Smrg<li>GL_ARB_window_pos 254848b8605Smrg<li>GL_EXT_blend_color 255848b8605Smrg<li>GL_EXT_blend_func_separate 256848b8605Smrg<li>GL_EXT_blend_logic_op 257848b8605Smrg<li>GL_EXT_blend_minmax 258848b8605Smrg<li>GL_EXT_blend_subtract 259848b8605Smrg<li>GL_EXT_fog_coord 260848b8605Smrg<li>GL_EXT_multi_draw_arrays 261848b8605Smrg<li>GL_EXT_point_parameters 262848b8605Smrg<li>GL_EXT_secondary_color 263848b8605Smrg<li>GL_EXT_stencil_wrap 264848b8605Smrg<li>GL_EXT_texture_lod_bias (plus, a per-texture LOD bias parameter) 265848b8605Smrg<li>GL_SGIS_generate_mipmap 266848b8605Smrg</ul> 267848b8605Smrg 268848b8605Smrg 269848b8605Smrg<h2>Version 4.x features</h2> 270848b8605Smrg 271848b8605Smrg<p> 272848b8605SmrgVersion 4.x of Mesa implements the OpenGL 1.3 API with the following 273848b8605Smrgextensions incorporated as standard features: 274848b8605Smrg</p> 275848b8605Smrg 276848b8605Smrg<ul> 277848b8605Smrg<li>GL_ARB_multisample 278848b8605Smrg<li>GL_ARB_multitexture 279848b8605Smrg<li>GL_ARB_texture_border_clamp 280848b8605Smrg<li>GL_ARB_texture_compression 281848b8605Smrg<li>GL_ARB_texture_cube_map 282848b8605Smrg<li>GL_ARB_texture_env_add 283848b8605Smrg<li>GL_ARB_texture_env_combine 284848b8605Smrg<li>GL_ARB_texture_env_dot3 285848b8605Smrg<li>GL_ARB_transpose_matrix 286848b8605Smrg</ul> 287848b8605Smrg 288848b8605Smrg<h2>Version 3.x features</h2> 289848b8605Smrg 290848b8605Smrg<p> 291848b8605SmrgVersion 3.x of Mesa implements the OpenGL 1.2 API with the following 292848b8605Smrgfeatures: 293848b8605Smrg</p> 294848b8605Smrg<ul> 295848b8605Smrg<li>BGR, BGRA and packed pixel formats 296848b8605Smrg<li>New texture border clamp mode 297848b8605Smrg<li>glDrawRangeElements() 298848b8605Smrg<li>standard 3-D texturing 299848b8605Smrg<li>advanced MIPMAP control 300848b8605Smrg<li>separate specular color interpolation 301848b8605Smrg</ul> 302848b8605Smrg 303848b8605Smrg 304848b8605Smrg<h2>Version 2.x features</h2> 305848b8605Smrg<p> 306848b8605SmrgVersion 2.x of Mesa implements the OpenGL 1.1 API with the following 307848b8605Smrgfeatures. 308848b8605Smrg</p> 309848b8605Smrg<ul> 310848b8605Smrg<li>Texture mapping: 311848b8605Smrg <ul> 312848b8605Smrg <li>glAreTexturesResident 313848b8605Smrg <li>glBindTexture 314848b8605Smrg <li>glCopyTexImage1D 315848b8605Smrg <li>glCopyTexImage2D 316848b8605Smrg <li>glCopyTexSubImage1D 317848b8605Smrg <li>glCopyTexSubImage2D 318848b8605Smrg <li>glDeleteTextures 319848b8605Smrg <li>glGenTextures 320848b8605Smrg <li>glIsTexture 321848b8605Smrg <li>glPrioritizeTextures 322848b8605Smrg <li>glTexSubImage1D 323848b8605Smrg <li>glTexSubImage2D 324848b8605Smrg </ul> 325848b8605Smrg<li>Vertex Arrays: 326848b8605Smrg <ul> 327848b8605Smrg <li>glArrayElement 328848b8605Smrg <li>glColorPointer 329848b8605Smrg <li>glDrawElements 330848b8605Smrg <li>glEdgeFlagPointer 331848b8605Smrg <li>glIndexPointer 332848b8605Smrg <li>glInterleavedArrays 333848b8605Smrg <li>glNormalPointer 334848b8605Smrg <li>glTexCoordPointer 335848b8605Smrg <li>glVertexPointer 336848b8605Smrg </ul> 337848b8605Smrg<li>Client state management: 338848b8605Smrg <ul> 339848b8605Smrg <li>glDisableClientState 340848b8605Smrg <li>glEnableClientState 341848b8605Smrg <li>glPopClientAttrib 342848b8605Smrg <li>glPushClientAttrib 343848b8605Smrg </ul> 344848b8605Smrg<li>Misc: 345848b8605Smrg <ul> 346848b8605Smrg <li>glGetPointer 347848b8605Smrg <li>glIndexub 348848b8605Smrg <li>glIndexubv 349848b8605Smrg <li>glPolygonOffset 350848b8605Smrg </ul> 351848b8605Smrg</ul> 352848b8605Smrg 353848b8605Smrg</div> 354848b8605Smrg</body> 355848b8605Smrg</html> 356