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