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