1
2                            Mesa 5.1 release notes
3
4                              December 17, 2003
5
6                                PLEASE READ!!!!
7
8
9
10Introduction
11------------
12
13Mesa uses an even/odd version number scheme like the Linux kernel.
14Even-numbered versions (such as 5.0) designate stable releases.
15Odd-numbered versions (such as 5.1) designate new developmental releases.
16
17
18Bug fixes
19---------
20See the VERSIONS file for a list of bugs fixed in this release.
21
22
23
24New Features in Mesa 5.1
25------------------------
26
27GL_ARB_vertex_program / GL_ARB_fragment_program
28   Michal Krol and Karl Rasche implemented these extensions.  Thanks!
29   Be aware that there may be some rough edges and lurking bugs.
30
31GL_ATI_texture_env_combine3 extension
32   This adds a few new texture combine modes.
33   Contributed by Ian Romanick.
34
35GL_SGI_texture_color_table
36   Adds a color table lookup to the RGBA texture path.  There's a separate
37   color table for each texture unit.
38   Contributed by Eric Plante.
39
40GL_NV_fragment_program
41   NVIDIA's fragment-level programming feature.
42   Possible lurking bugs:
43     - the DDX and DDY commands aren't fully tested
44     - there may be bugs in the parser
45     - the TEX and TXP instructions both do perspective correction
46     - the pack/unpack instructions may not be correct
47
48GL_EXT_depth_bounds_test
49   This extension adds a scissor-like test for the Z axis.  It's used to
50   optimize stencil-volume shadow algorithms.
51
52GL_NV_light_max_exponent
53   Lifts the 128 limit for max light exponent.
54
55GL_EXT_texture_rectangle
56   Identical to GL_NV_texture_rectangle
57
58GL_ARB_occlusion_query
59   Useful for visibility-based culling.
60
61GL_ARB_texture_non_power_of_two
62   Removes the restriction that texture dimensions must be powers of two.
63
64GL_ARB_vertex_buffer_object
65   Allows server-side vertex arrays, optimized host/card data transfers, etc.
66
67GL_ARB_point_sprite
68   ARB-approved version of GL_NV_point_sprite.  Basically allows textures
69   to be applied to points.
70
71GL_IBM_multimode_draw_arrays
72   Allows multiple vertex arrays to be drawn with one call, including arrays
73   of different types of primitives.
74
75GL_SUN_multi_draw_arrays
76   An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4.
77
78Faster glDrawPixels / glCopyPixels in X11 driver
79   If your X screen is 32bpp, glDrawPixels to the front color buffer will
80   be accelerated (via XPutImage()) if the image format is GL_BGRA and the
81   type is GL_UNSIGNED_BYTE.  No raster operations, such as depth test,
82   blend, fog, etc. can be enabled.
83
84   If your X screen is 16bpp, glDrawPixels to the front color buffer will
85   be accelerated (via XPutImage()) if the image format is GL_RGB and the
86   type is GL_UNSIGNED_SHORT_5_6_5.  No raster operations, such as depth
87   test, blend, fog, etc. can be enabled.
88
89   glCopyPixels() calls for the front color buffer will be accelerated
90   (via XCopyArea()) if no raster operations, such as depth test, blend,
91   fog, pixel zoom, etc. are enabled.
92
93   The speed-up over typical software rendering is a factor of 10 for
94   glDrawPixels and 100 for glCopyPixels.
95
96
97With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
98GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
99all the new features of OpenGL 1.5.  Mesa 6.0 (the next stable release)
100will advertise GL_VERSION = "1.5".
101 
102
103
104Vertex/Fragment program debugger
105--------------------------------
106
107GL_MESA_program_debug is an experimental extension to support
108interactive debugging of vertex and fragment programs.  See the
109docs/MESA_program_debug.spec file for details.
110
111The bulk of the vertex/fragment program debugger is implemented
112outside of Mesa.  The GL_MESA_program_debug extension just has minimal
113hooks for stopping running programs and inspecting programs.
114
115The progs/tests/debugger.c (only in CVS) program is an example of how
116the extension can be used.  Presently, the debugger code and demo code
117is in the same file.  Eventually the debugger code should be moved
118into a reusable module.
119
120As it is now, the demo lets you set breakpoings in vertex/fragment
121programs, single step, and print intermediate register values.  It's
122basically just a proof of concept.
123
124
125
126Directory tree reorganization
127-----------------------------
128
129The directory structure for Mesa has been overhauled to improve its layout.
130All source code for Mesa, GLU, GLUT, etc is now under the src/ directory
131in appropriate subdirectories.
132
133The Mesa source code and drivers has been reorganized under src/mesa/.
134
135All demonstration programs and tests are now in subdirectories under progs/.
136
137
138
139Build System Changes
140--------------------
141
142The GNU automake/autoconf support has been removed.  As it was, it seldom
143worked on anything but Linux.  The Mesa developers aren't big fans of
144automake/autoconf/libtool and didn't have the time to maintain it.
145If someone wants to contribute new automake/autoconf support (and is
146willing to maintain it), it may be re-incorporated into Mesa, subject
147to some requirements.
148
149The "old style" makefile system has been updated:
150   1. Make-config has been trimmed down to fewer, modern configurations.
151   2. Most of the bin/mklib.* scripts have been rolled into a new "mklib"
152      script that works on all sorts of systems.  There are probably some
153      bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5.
154      Improvements/contributes are greatly appreciated.
155   3. The Makefile.X11 files have been cleaned up in various ways
156
157
158
159Source File Changes
160-------------------
161
162The mmath.[ch] files are obsolete.  Their contents have been moved
163into the imports.[ch] and macros.[ch] files.
164
165The files related to vertex and fragment programming have changed.
166Old files:
167	vpexec.[ch]
168	vpparse.[ch]
169	vpstate.[ch]
170New files:
171	program.[ch]              - generic ARB/NV program code
172	arbprogram.[ch]           - ARB program API functions
173	arbfragparse.[ch]         - ARB fragment program parsing
174	arbvertparse.[ch]         - ARB vertex program parsing
175	arbparse.[ch]             - ARB vertex/fragment parsing
176	arbparse_syn.h            - vertex/fragment program syntax
177	nvprogram.[ch]            - NV program API functions
178	nvvertprog.h              - NV vertex program definitions
179	nvfragprog.h              - NV fragment program definitions
180	nvvertparse.[ch]          - NV vertex program parser
181	nvfragparse.[ch]          - NV fragment program parser
182	nvvertexec.[ch]           - NV vertex program execution
183	swrast/s_nvfragprog.[ch]  - NV fragment program execution
184
185The files related to per-vertex handling have changed.
186Old files:
187	tnl/t_eval_api.c          - old per-vertex code
188	tnl/t_imm_alloc.c         - old per-vertex code
189	tnl/t_imm_api.c           - old per-vertex code
190	tnl/t_imm_debug.c         - old per-vertex code
191	tnl/t_imm_dlist.c         - old per-vertex code
192	tnl/t_imm_elt.c           - old per-vertex code
193	tnl/t_imm_eval.c          - old per-vertex code
194	tnl/t_imm_exec.c          - old per-vertex code
195	tnl/t_imm_fixup.c         - old per-vertex code
196	tnl/t_vtx_sse.c           - old per-vertex code
197	tnl/t_vtx_x86.c           - old per-vertex code
198New files:
199	tnl/t_save_api.c          - new per-vertex code
200	tnl/t_save_loopback.c     - new per-vertex code
201	tnl/t_save_playback.c     - new per-vertex code
202	tnl/t_vtx_eval.c          - old per-vertex code
203
204Other new files:
205	bufferobj.[ch]		- GL_ARB_vertex_buffer_object functions
206	version.h		- defines the Mesa version info
207
208Other removed files:
209	swrast/s_histogram.[ch]   - moved into src/histogram.c
210
211
212
213Other Changes
214-------------
215
216The ctx->Driver.CreateTexture function has been removed - it wasn't used.
217
218New device driver hook functions:
219   NewTextureObject   - used to allocate struct gl_texture_objects
220   NewTextureImage    - used to allocate struct gl_texture_images
221
222New ctx->Texture._EnabledCoordUnits field:
223   With the addition of GL_NV_fragment_program we may need to interpolate
224   various sets of texture coordinates even when the corresponding texture
225   unit is not enabled.  That is, glEnable(GL_TEXTURE_xD) may never get
226   called but we still may have to interpolate texture coordinates across
227   triangles so that the fragment program will get them.
228   This new field indicates which sets of texture coordinates are needed.
229   If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the
230   same bit MUST be set in ctx->Texture._EnabledCoordUnits.
231
232The ctx->_TriangleCaps field is deprecated.
233   Instead of testing the DD_* bits in _TriangleCaps, you should instead
234   directly test the relevant state variables, or use one of the helper
235   functions like NEED_SECONDARY_COLOR() at the bottom of context.h
236   While testing _TriangleCaps bits was fast, it was kludgey, and setting
237   the bits in the first place could be error prone.
238
239New vertex processing code.
240   The code behind glBegin, glEnd, glVertex, glNormal, etc. has been
241   totally rewritten.  It's a cleaner implementation now and should use
242   less memory. (Keith)
243
244
245
246To Do
247-----
248Add screen-awareness to fakeglx.c
249
250
251
252
253Device Driver Status
254--------------------
255
256A number of Mesa's software drivers haven't been actively maintained for
257some time.  We rely on volunteers to maintain many of these drivers.
258Here's the current status of all included drivers:
259
260
261Driver			Status
262----------------------	---------------------
263XMesa (Xlib)		implements OpenGL 1.4
264OSMesa (off-screen)	implements OpenGL 1.4
265FX (3dfx Voodoo1/2)	implements OpenGL 1.3
266SVGA			implements OpenGL 1.3
267Wind River UGL		implements OpenGL 1.3
268Windows/Win32		implements OpenGL 1.4
269DJGPP			implements OpenGL 1.4
270GGI			implements OpenGL 1.3
271BeOS			implements OpenGL 1.4
272Allegro			needs updating
273D3D			needs updating
274
275Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
276driver call the _mesa_enable_1_4_extensions() function.
277
278
279----------------------------------------------------------------------
280