1
2                         Mesa 3.3 release notes
3
4                             July 21, 2000
5
6                             PLEASE READ!!!!
7
8
9
10Introduction
11------------
12
13Mesa uses an even/odd version number scheme like the Linux kernel.
14Odd numbered versions (such as 3.3) designate new developmental releases.
15Even numbered versions (such as 3.2.1) designate stable releases.
16
17Mesa 3.3 has a undergone many internal changes since version 3.2
18and features a lot of new extensions.  3.3 is expected to be pretty
19stable, but perhaps not as stable as 3.2 which has been used by
20thousands of users over the past months.
21
22Everyone is encouraged to try Mesa 3.3.  Bugs should be reported to
23the Mesa bug database on www.sourceforge.net.
24
25
26
27Header file / GLenum changes
28----------------------------
29
30The gl.h and glu.h headers now use #defines to define all GL_* tokens
31instead of C-language enums.  This change improves Mesa/OpenGL
32interoperability.
33
34
35
36New API dispatch code
37---------------------
38
39The core Mesa gl* functions are now implemented with a new dispatch
40(jump table) which will allow simultaneous direct/indirect rendering.
41
42The code is found in the glapi*.[ch] files.
43
44Of interest:  the actual "glFooBar" functions are generated with
45templatized code defined in glapitemp.h and included by glapi.c
46The glapitemp.h template should be reusable for all sorts of OpenGL
47projects.
48
49The new dispatch code has also optimized with x86 assembly code.
50This optimization eliminates copying the function arguments during
51dispatch.
52
53
54
55New thread support
56------------------
57
58Thread support in Mesa has been rewritten.  The glthread.[ch] files
59replace mthreads.[ch].  Thread safety is always enabled (on platforms
60which support threads, that is).  There is virtually no performance
61penalty for typical single-thread applications.  See the glapi.c
62file for details.
63
64The Xlib driver (XMesa) is now thread-safe as well.  Be sure to
65call XInitThreads() in your app first.  See the xdemos/glthreads.c
66demo for an example.
67
68
69
70Make configuration changes
71--------------------------
72
73If you use the old-style (non GNU automake) method to build Mesa note
74that several of the configuration names have changed:
75
76   Old name        New name
77   -------------   ----------------
78   linux-elf       linux
79   linux           linux-static
80   linux-386-elf   linux-386
81   linux-386       linux-386-static
82   etc.
83
84
85
86New extensions
87--------------
88
89GL_ARB_transpose_matrix
90	Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB()
91        functions.
92
93GL_ARB_texture_cube_map
94	For cube-based reflection mapping.
95
96GL_EXT_texture_add_env
97	Adds GL_ADD texture environment mode.
98	See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt
99
100GL_EXT_texture_lod_bias
101	Allows mipmapped texture blurring and sharpening.
102
103GLX_EXT_visual_rating extension
104	This extension has no effect in stand-alone Mesa (used for DRI).
105
106GL_HP_occlusion_test
107	Used for bounding box occlusion testing (see demos/occlude.c).
108
109GL_SGIX_pixel_texture / GL_SGIS_pixel_texture
110	Lets glDraw/CopyPixels draw a texture coordinate image.
111
112GL_SGI_color_matrix
113	Adds a color matrix and another set of scale and bias parameters
114	to the glDraw/CopyPixels paths.
115
116GL_SGI_color_table
117	Adds additional color tables to the glDraw/Read/CopyPixels paths.
118
119GL_EXT_histogram
120	Compute histograms for glDraw/Read/CopyPixels.
121
122GL_EXT_blend_func_separate
123	This is the same as GL_INGR_blend_func_separate.
124
125GL_ARB_texture_cube_mapping
126	6-face cube mapping, nicer than sphere mapping
127
128GL_EXT_texture_env_combine
129	For advanced texture environment effects.
130
131
132Documentation for all these functions can be found at
133http://oss.sgi.com/projects/ogl-sample/registry/
134
135
136
137GLX_SGI_make_current_read functionality
138---------------------------------------
139
140The functionality of this extension is needed for GLX 1.3 (and required
141for the Linux/OpenGL standards base).
142
143Implementing this function required a **DEVICE DRIVER CHANGE**.
144The old SetBuffer() function has been replaced by SetReadBuffer() and
145SetDrawBuffer().  All device drivers will have to be updated because
146of this change.
147
148The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa.
149The xdemos/wincopy.c program demonstrates it.
150
151
152
153Image-related code changes
154--------------------------
155
156The imaging path code used by glDrawPixels, glTexImage[123]D,
157glTexSubImage[123], etc has been rewritten.  It's now faster,
158uses less memory and has several bug fixes.  This work was
159actually started in Mesa 3.1 with the glTexImage paths but has now
160been carried over to glDrawPixels as well.
161
162
163
164Device driver interface changes
165-------------------------------
166
167Added new functions for hardware stencil buffer support:
168   WriteStencilSpan
169   ReadStencilSpan
170   WriteStencilPixels
171   ReadStencilPixels
172
173
174Removed old depth buffer functions:
175   AllocDepthBuffer
176   DepthTestSpan
177   DepthTestPixels
178   ReadDepthSpanFloat
179   ReadDepthSpanInt
180
181
182Added new depth buffer functions:
183   WriteDepthSpan
184   ReadDepthSpan
185   WriteDepthPixels
186   ReadDepthPixels
187
188   These functions always read/write 32-bit GLuints.  This will allow
189   drivers to have anywhere from 0 to 32-bit Z buffers without
190   recompiling for 16 vs 32 bits as was previously needed.
191
192
193New texture image functions
194   The entire interface for texture image specification has been updated.
195   With the new functions, it's optional for Mesa to keep an internal copy
196   of all textures.  Texture download should be a lot faster when the extra
197   copy isn't made.
198
199Misc changes
200   TexEnv now takes a target argument
201   Removed UseGlobalTexturePalette (use Enable function instead)
202
203
204Also added
205   ReadPixels
206   CopyPixels
207
208
209The SetBufffer function has been replaced by SetDrawBuffer and
210SetReadBuffer functions.  This lets core Mesa independently
211specify which buffer is to be used for reading and which for
212drawing.
213
214The Clear function's mask parameter has changed.  Instead of
215mask being the flags specified by the user to glClear, the
216mask is now a bitmask of the DD_*_BIT flags in dd.h.  Now
217multiple color buffers can be specified for clearing (ala
218glDrawBuffers).  The driver's Clear function must also
219check the glColorMask glIndexMask, and glStencilMask settings
220and do the right thing.  See the X/Mesa, OS/Mesa, or FX/Mesa
221drivers for examples.
222
223
224The depth buffer changes shouldn't be hard to make for existing
225drivers.  In fact, it should simply the code.  Be careful with
226the depthBits value passed to gl_create_context().  1 is a bad
227value!  It should normally be 0, 16, 24, or 32.
228
229
230gl_create_framebuffer() takes new arguments which explicitly tell
231core Mesa which ancillary buffers (depth, stencil, accum, alpha)
232should be implemented in software.  Mesa hardware drivers should
233carefully set these flags depending on which buffers are in the
234graphics card.
235
236
237
238Internal constants
239------------------
240
241Point and line size range and granularity limits are now stored
242in the gl_constants struct, which is the Const member of GLcontext.
243The limits are initialized from values in config.h but may be
244overridden by device drivers to reflect the limits of that driver's
245hardware.
246
247Also added constants for NumAuxBuffers and SubPixelBits.
248
249
250
251OpenGL Conformance
252------------------
253
254Mesa now passes all the OpenGL 1.1 conformance tests, except for
255antialiased lines.  AA lines fail on some, but not all, the tests.
256In order to fix the remaining failures, a new AA line algorithm will
257be needed (which computes coverage values for end-point fragments).
258This will be done for Mesa 3.5/3.6.
259
260
261
262OpenGL 1.2 GL_ARB_imaging subset
263--------------------------------
264
265Mesa 3.3 implements all the features of GL_ARB_imaging except for
266image convolution.  This will (hopefully) be done for Mesa 3.5/3.6.
267
268
269
270----------------------------------------------------------------------
271