RELNOTES-5.1 revision 76f51ca9ea105eed0f4c7ffb2d8ae25cdd969ab1
1
2                            Mesa 5.1 release notes
3
4                              Month day, 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
78
79With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
80GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
81all the new features of OpenGL 1.5.  Mesa 6.0 (the next stable release)
82will advertise GL_VERSION = "1.5".
83 
84
85
86Vertex/Fragment program debugger
87--------------------------------
88
89GL_MESA_program_debug is an experimental extension to support
90interactive debugging of vertex and fragment programs.  See the
91docs/MESA_program_debug.spec file for details.
92
93The bulk of the vertex/fragment program debugger is implemented
94outside of Mesa.  The GL_MESA_program_debug extension just has minimal
95hooks for stopping running programs and inspecting programs.
96
97The progs/tests/debugger.c (only in CVS) program is an example of how
98the extension can be used.  Presently, the debugger code and demo code
99is in the same file.  Eventually the debugger code should be moved
100into a reusable module.
101
102As it is now, the demo lets you set breakpoings in vertex/fragment
103programs, single step, and print intermediate register values.  It's
104basically just a proof of concept.
105
106
107
108Directory tree reorganization
109-----------------------------
110
111The directory structure for Mesa has been overhauled to improve its layout.
112All source code for Mesa, GLU, GLUT, etc is now under the src/ directory
113in appropriate subdirectories.
114
115The Mesa source code and drivers has been reorganized under src/mesa/.
116
117All demonstration programs and tests are now in subdirectories under progs/.
118
119
120
121Build System Changes
122--------------------
123
124The GNU automake/autoconf support has been removed.  As it was, it seldom
125worked on anything but Linux.  The Mesa developers aren't big fans of
126automake/autoconf/libtool and didn't have the time to maintain it.
127If someone wants to contribute new automake/autoconf support (and is
128willing to maintain it), it may be re-incorporated into Mesa, subject
129to some requirements.
130
131The "old style" makefile system has been updated:
132   1. Make-config has been trimmed down to fewer, modern configurations.
133   2. Most of the bin/mklib.* scripts have been rolled into a new "mklib"
134      script that works on all sorts of systems.  There are probably some
135      bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5.
136      Improvements/contributes are greatly appreciated.
137   3. The Makefile.X11 files have been cleaned up in various ways
138
139
140
141Source File Changes
142-------------------
143
144The mmath.[ch] files are obsolete.  Their contents have been moved
145into the imports.[ch] and macros.[ch] files.
146
147The files related to vertex and fragment programming have changed.
148Old files:
149	vpexec.[ch]
150	vpparse.[ch]
151	vpstate.[ch]
152New files:
153	program.[ch]              - generic ARB/NV program code
154	arbprogram.[ch]           - ARB program API functions
155	arbfragparse.[ch]         - ARB fragment program parsing
156	arbvertparse.[ch]         - ARB vertex program parsing
157	arbparse.[ch]             - ARB vertex/fragment parsing
158	arbparse_syn.h            - vertex/fragment program syntax
159	nvprogram.[ch]            - NV program API functions
160	nvvertprog.h              - NV vertex program definitions
161	nvfragprog.h              - NV fragment program definitions
162	nvvertparse.[ch]          - NV vertex program parser
163	nvfragparse.[ch]          - NV fragment program parser
164	nvvertexec.[ch]           - NV vertex program execution
165	swrast/s_nvfragprog.[ch]  - NV fragment program execution
166
167The files related to per-vertex handling have changed.
168Old files:
169	tnl/t_eval_api.c          - old per-vertex code
170	tnl/t_imm_alloc.c         - old per-vertex code
171	tnl/t_imm_api.c           - old per-vertex code
172	tnl/t_imm_debug.c         - old per-vertex code
173	tnl/t_imm_dlist.c         - old per-vertex code
174	tnl/t_imm_elt.c           - old per-vertex code
175	tnl/t_imm_eval.c          - old per-vertex code
176	tnl/t_imm_exec.c          - old per-vertex code
177	tnl/t_imm_fixup.c         - old per-vertex code
178	tnl/t_vtx_sse.c           - old per-vertex code
179	tnl/t_vtx_x86.c           - old per-vertex code
180New files:
181	tnl/t_save_api.c          - new per-vertex code
182	tnl/t_save_loopback.c     - new per-vertex code
183	tnl/t_save_playback.c     - new per-vertex code
184	tnl/t_vtx_eval.c          - old per-vertex code
185
186Other new files:
187	bufferobj.[ch]		- GL_ARB_vertex_buffer_object functions
188	version.h		- defines the Mesa version info
189
190Other removed files:
191	swrast/s_histogram.[ch]   - moved into src/histogram.c
192
193
194
195Other Changes
196-------------
197
198The ctx->Driver.CreateTexture function has been removed - it wasn't used.
199
200New device driver hook functions:
201   NewTextureObject   - used to allocate struct gl_texture_objects
202   NewTextureImage    - used to allocate struct gl_texture_images
203
204New ctx->Texture._EnabledCoordUnits field:
205   With the addition of GL_NV_fragment_program we may need to interpolate
206   various sets of texture coordinates even when the corresponding texture
207   unit is not enabled.  That is, glEnable(GL_TEXTURE_xD) may never get
208   called but we still may have to interpolate texture coordinates across
209   triangles so that the fragment program will get them.
210   This new field indicates which sets of texture coordinates are needed.
211   If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the
212   same bit MUST be set in ctx->Texture._EnabledCoordUnits.
213
214The ctx->_TriangleCaps field is deprecated.
215   Instead of testing the DD_* bits in _TriangleCaps, you should instead
216   directly test the relevant state variables, or use one of the helper
217   functions like NEED_SECONDARY_COLOR() at the bottom of context.h
218   While testing _TriangleCaps bits was fast, it was kludgey, and setting
219   the bits in the first place could be error prone.
220
221New vertex processing code.
222   The code behind glBegin, glEnd, glVertex, glNormal, etc. has been
223   totally rewritten.  It's a cleaner implementation now and should use
224   less memory. (Keith)
225
226
227
228To Do
229-----
230Add screen-awareness to fakeglx.c
231
232
233
234
235Device Driver Status
236--------------------
237
238A number of Mesa's software drivers haven't been actively maintained for
239some time.  We rely on volunteers to maintain many of these drivers.
240Here's the current status of all included drivers:
241
242
243Driver			Status
244----------------------	---------------------
245XMesa (Xlib)		implements OpenGL 1.4
246OSMesa (off-screen)	implements OpenGL 1.4
247FX (3dfx Voodoo1/2)	implements OpenGL 1.3
248SVGA			implements OpenGL 1.3
249Wind River UGL		implements OpenGL 1.3
250Windows/Win32		implements OpenGL 1.4
251DJGPP			implements OpenGL 1.4
252GGI			implements OpenGL 1.3
253BeOS			implements OpenGL 1.4
254Allegro			needs updating
255D3D			needs updating
256
257Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
258driver call the _mesa_enable_1_4_extensions() function.
259
260
261----------------------------------------------------------------------
262