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