5.1 revision 848b8605
1848b8605Smrg
2848b8605Smrg                            Mesa 5.1 release notes
3848b8605Smrg
4848b8605Smrg                              December 17, 2003
5848b8605Smrg
6848b8605Smrg                                PLEASE READ!!!!
7848b8605Smrg
8848b8605Smrg
9848b8605Smrg
10848b8605SmrgIntroduction
11848b8605Smrg------------
12848b8605Smrg
13848b8605SmrgMesa uses an even/odd version number scheme like the Linux kernel.
14848b8605SmrgEven-numbered versions (such as 5.0) designate stable releases.
15848b8605SmrgOdd-numbered versions (such as 5.1) designate new developmental releases.
16848b8605Smrg
17848b8605Smrg
18848b8605SmrgBug fixes
19848b8605Smrg---------
20848b8605SmrgSee the VERSIONS file for a list of bugs fixed in this release.
21848b8605Smrg
22848b8605Smrg
23848b8605Smrg
24848b8605SmrgNew Features in Mesa 5.1
25848b8605Smrg------------------------
26848b8605Smrg
27848b8605SmrgGL_ARB_vertex_program / GL_ARB_fragment_program
28848b8605Smrg   Michal Krol and Karl Rasche implemented these extensions.  Thanks!
29848b8605Smrg   Be aware that there may be some rough edges and lurking bugs.
30848b8605Smrg
31848b8605SmrgGL_ATI_texture_env_combine3 extension
32848b8605Smrg   This adds a few new texture combine modes.
33848b8605Smrg   Contributed by Ian Romanick.
34848b8605Smrg
35848b8605SmrgGL_SGI_texture_color_table
36848b8605Smrg   Adds a color table lookup to the RGBA texture path.  There's a separate
37848b8605Smrg   color table for each texture unit.
38848b8605Smrg   Contributed by Eric Plante.
39848b8605Smrg
40848b8605SmrgGL_NV_fragment_program
41848b8605Smrg   NVIDIA's fragment-level programming feature.
42848b8605Smrg   Possible lurking bugs:
43848b8605Smrg     - the DDX and DDY commands aren't fully tested
44848b8605Smrg     - there may be bugs in the parser
45848b8605Smrg     - the TEX and TXP instructions both do perspective correction
46848b8605Smrg     - the pack/unpack instructions may not be correct
47848b8605Smrg
48848b8605SmrgGL_EXT_depth_bounds_test
49848b8605Smrg   This extension adds a scissor-like test for the Z axis.  It's used to
50848b8605Smrg   optimize stencil-volume shadow algorithms.
51848b8605Smrg
52848b8605SmrgGL_NV_light_max_exponent
53848b8605Smrg   Lifts the 128 limit for max light exponent.
54848b8605Smrg
55848b8605SmrgGL_EXT_texture_rectangle
56848b8605Smrg   Identical to GL_NV_texture_rectangle
57848b8605Smrg
58848b8605SmrgGL_ARB_occlusion_query
59848b8605Smrg   Useful for visibility-based culling.
60848b8605Smrg
61848b8605SmrgGL_ARB_texture_non_power_of_two
62848b8605Smrg   Removes the restriction that texture dimensions must be powers of two.
63848b8605Smrg
64848b8605SmrgGL_ARB_vertex_buffer_object
65848b8605Smrg   Allows server-side vertex arrays, optimized host/card data transfers, etc.
66848b8605Smrg
67848b8605SmrgGL_ARB_point_sprite
68848b8605Smrg   ARB-approved version of GL_NV_point_sprite.  Basically allows textures
69848b8605Smrg   to be applied to points.
70848b8605Smrg
71848b8605SmrgGL_IBM_multimode_draw_arrays
72848b8605Smrg   Allows multiple vertex arrays to be drawn with one call, including arrays
73848b8605Smrg   of different types of primitives.
74848b8605Smrg
75848b8605SmrgGL_SUN_multi_draw_arrays
76848b8605Smrg   An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4.
77848b8605Smrg
78848b8605SmrgFaster glDrawPixels / glCopyPixels in X11 driver
79848b8605Smrg   If your X screen is 32bpp, glDrawPixels to the front color buffer will
80848b8605Smrg   be accelerated (via XPutImage()) if the image format is GL_BGRA and the
81848b8605Smrg   type is GL_UNSIGNED_BYTE.  No raster operations, such as depth test,
82848b8605Smrg   blend, fog, etc. can be enabled.
83848b8605Smrg
84848b8605Smrg   If your X screen is 16bpp, glDrawPixels to the front color buffer will
85848b8605Smrg   be accelerated (via XPutImage()) if the image format is GL_RGB and the
86848b8605Smrg   type is GL_UNSIGNED_SHORT_5_6_5.  No raster operations, such as depth
87848b8605Smrg   test, blend, fog, etc. can be enabled.
88848b8605Smrg
89848b8605Smrg   glCopyPixels() calls for the front color buffer will be accelerated
90848b8605Smrg   (via XCopyArea()) if no raster operations, such as depth test, blend,
91848b8605Smrg   fog, pixel zoom, etc. are enabled.
92848b8605Smrg
93848b8605Smrg   The speed-up over typical software rendering is a factor of 10 for
94848b8605Smrg   glDrawPixels and 100 for glCopyPixels.
95848b8605Smrg
96848b8605Smrg
97848b8605SmrgWith the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
98848b8605SmrgGL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
99848b8605Smrgall the new features of OpenGL 1.5.  Mesa 6.0 (the next stable release)
100848b8605Smrgwill advertise GL_VERSION = "1.5".
101848b8605Smrg 
102848b8605Smrg
103848b8605Smrg
104848b8605SmrgVertex/Fragment program debugger
105848b8605Smrg--------------------------------
106848b8605Smrg
107848b8605SmrgGL_MESA_program_debug is an experimental extension to support
108848b8605Smrginteractive debugging of vertex and fragment programs.  See the
109848b8605Smrgdocs/specs/OLD/MESA_program_debug.spec file for details.
110848b8605Smrg
111848b8605SmrgThe bulk of the vertex/fragment program debugger is implemented
112848b8605Smrgoutside of Mesa.  The GL_MESA_program_debug extension just has minimal
113848b8605Smrghooks for stopping running programs and inspecting programs.
114848b8605Smrg
115848b8605SmrgThe progs/tests/debugger.c (only in CVS) program is an example of how
116848b8605Smrgthe extension can be used.  Presently, the debugger code and demo code
117848b8605Smrgis in the same file.  Eventually the debugger code should be moved
118848b8605Smrginto a reusable module.
119848b8605Smrg
120848b8605SmrgAs it is now, the demo lets you set breakpoings in vertex/fragment
121848b8605Smrgprograms, single step, and print intermediate register values.  It's
122848b8605Smrgbasically just a proof of concept.
123848b8605Smrg
124848b8605Smrg
125848b8605Smrg
126848b8605SmrgDirectory tree reorganization
127848b8605Smrg-----------------------------
128848b8605Smrg
129848b8605SmrgThe directory structure for Mesa has been overhauled to improve its layout.
130848b8605SmrgAll source code for Mesa, GLU, GLUT, etc is now under the src/ directory
131848b8605Smrgin appropriate subdirectories.
132848b8605Smrg
133848b8605SmrgThe Mesa source code and drivers has been reorganized under src/mesa/.
134848b8605Smrg
135848b8605SmrgAll demonstration programs and tests are now in subdirectories under progs/.
136848b8605Smrg
137848b8605Smrg
138848b8605Smrg
139848b8605SmrgBuild System Changes
140848b8605Smrg--------------------
141848b8605Smrg
142848b8605SmrgThe GNU automake/autoconf support has been removed.  As it was, it seldom
143848b8605Smrgworked on anything but Linux.  The Mesa developers aren't big fans of
144848b8605Smrgautomake/autoconf/libtool and didn't have the time to maintain it.
145848b8605SmrgIf someone wants to contribute new automake/autoconf support (and is
146848b8605Smrgwilling to maintain it), it may be re-incorporated into Mesa, subject
147848b8605Smrgto some requirements.
148848b8605Smrg
149848b8605SmrgThe "old style" makefile system has been updated:
150848b8605Smrg   1. Make-config has been trimmed down to fewer, modern configurations.
151848b8605Smrg   2. Most of the bin/mklib.* scripts have been rolled into a new "mklib"
152848b8605Smrg      script that works on all sorts of systems.  There are probably some
153848b8605Smrg      bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5.
154848b8605Smrg      Improvements/contributes are greatly appreciated.
155848b8605Smrg   3. The Makefile.X11 files have been cleaned up in various ways
156848b8605Smrg
157848b8605Smrg
158848b8605Smrg
159848b8605SmrgSource File Changes
160848b8605Smrg-------------------
161848b8605Smrg
162848b8605SmrgThe mmath.[ch] files are obsolete.  Their contents have been moved
163848b8605Smrginto the imports.[ch] and macros.[ch] files.
164848b8605Smrg
165848b8605SmrgThe files related to vertex and fragment programming have changed.
166848b8605SmrgOld files:
167848b8605Smrg	vpexec.[ch]
168848b8605Smrg	vpparse.[ch]
169848b8605Smrg	vpstate.[ch]
170848b8605SmrgNew files:
171848b8605Smrg	program.[ch]              - generic ARB/NV program code
172848b8605Smrg	arbprogram.[ch]           - ARB program API functions
173848b8605Smrg	arbfragparse.[ch]         - ARB fragment program parsing
174848b8605Smrg	arbvertparse.[ch]         - ARB vertex program parsing
175848b8605Smrg	arbparse.[ch]             - ARB vertex/fragment parsing
176848b8605Smrg	arbparse_syn.h            - vertex/fragment program syntax
177848b8605Smrg	nvprogram.[ch]            - NV program API functions
178848b8605Smrg	nvvertprog.h              - NV vertex program definitions
179848b8605Smrg	nvfragprog.h              - NV fragment program definitions
180848b8605Smrg	nvvertparse.[ch]          - NV vertex program parser
181848b8605Smrg	nvfragparse.[ch]          - NV fragment program parser
182848b8605Smrg	nvvertexec.[ch]           - NV vertex program execution
183848b8605Smrg	swrast/s_nvfragprog.[ch]  - NV fragment program execution
184848b8605Smrg
185848b8605SmrgThe files related to per-vertex handling have changed.
186848b8605SmrgOld files:
187848b8605Smrg	tnl/t_eval_api.c          - old per-vertex code
188848b8605Smrg	tnl/t_imm_alloc.c         - old per-vertex code
189848b8605Smrg	tnl/t_imm_api.c           - old per-vertex code
190848b8605Smrg	tnl/t_imm_debug.c         - old per-vertex code
191848b8605Smrg	tnl/t_imm_dlist.c         - old per-vertex code
192848b8605Smrg	tnl/t_imm_elt.c           - old per-vertex code
193848b8605Smrg	tnl/t_imm_eval.c          - old per-vertex code
194848b8605Smrg	tnl/t_imm_exec.c          - old per-vertex code
195848b8605Smrg	tnl/t_imm_fixup.c         - old per-vertex code
196848b8605Smrg	tnl/t_vtx_sse.c           - old per-vertex code
197848b8605Smrg	tnl/t_vtx_x86.c           - old per-vertex code
198848b8605SmrgNew files:
199848b8605Smrg	tnl/t_save_api.c          - new per-vertex code
200848b8605Smrg	tnl/t_save_loopback.c     - new per-vertex code
201848b8605Smrg	tnl/t_save_playback.c     - new per-vertex code
202848b8605Smrg	tnl/t_vtx_eval.c          - old per-vertex code
203848b8605Smrg
204848b8605SmrgOther new files:
205848b8605Smrg	bufferobj.[ch]		- GL_ARB_vertex_buffer_object functions
206848b8605Smrg	version.h		- defines the Mesa version info
207848b8605Smrg
208848b8605SmrgOther removed files:
209848b8605Smrg	swrast/s_histogram.[ch]   - moved into src/histogram.c
210848b8605Smrg
211848b8605Smrg
212848b8605Smrg
213848b8605SmrgOther Changes
214848b8605Smrg-------------
215848b8605Smrg
216848b8605SmrgThe ctx->Driver.CreateTexture function has been removed - it wasn't used.
217848b8605Smrg
218848b8605SmrgNew device driver hook functions:
219848b8605Smrg   NewTextureObject   - used to allocate struct gl_texture_objects
220848b8605Smrg   NewTextureImage    - used to allocate struct gl_texture_images
221848b8605Smrg
222848b8605SmrgNew ctx->Texture._EnabledCoordUnits field:
223848b8605Smrg   With the addition of GL_NV_fragment_program we may need to interpolate
224848b8605Smrg   various sets of texture coordinates even when the corresponding texture
225848b8605Smrg   unit is not enabled.  That is, glEnable(GL_TEXTURE_xD) may never get
226848b8605Smrg   called but we still may have to interpolate texture coordinates across
227848b8605Smrg   triangles so that the fragment program will get them.
228848b8605Smrg   This new field indicates which sets of texture coordinates are needed.
229848b8605Smrg   If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the
230848b8605Smrg   same bit MUST be set in ctx->Texture._EnabledCoordUnits.
231848b8605Smrg
232848b8605SmrgThe ctx->_TriangleCaps field is deprecated.
233848b8605Smrg   Instead of testing the DD_* bits in _TriangleCaps, you should instead
234848b8605Smrg   directly test the relevant state variables, or use one of the helper
235848b8605Smrg   functions like NEED_SECONDARY_COLOR() at the bottom of context.h
236848b8605Smrg   While testing _TriangleCaps bits was fast, it was kludgey, and setting
237848b8605Smrg   the bits in the first place could be error prone.
238848b8605Smrg
239848b8605SmrgNew vertex processing code.
240848b8605Smrg   The code behind glBegin, glEnd, glVertex, glNormal, etc. has been
241848b8605Smrg   totally rewritten.  It's a cleaner implementation now and should use
242848b8605Smrg   less memory. (Keith)
243848b8605Smrg
244848b8605Smrg
245848b8605Smrg
246848b8605SmrgTo Do
247848b8605Smrg-----
248848b8605SmrgAdd screen-awareness to fakeglx.c
249848b8605Smrg
250848b8605Smrg
251848b8605Smrg
252848b8605Smrg
253848b8605SmrgDevice Driver Status
254848b8605Smrg--------------------
255848b8605Smrg
256848b8605SmrgA number of Mesa's software drivers haven't been actively maintained for
257848b8605Smrgsome time.  We rely on volunteers to maintain many of these drivers.
258848b8605SmrgHere's the current status of all included drivers:
259848b8605Smrg
260848b8605Smrg
261848b8605SmrgDriver			Status
262848b8605Smrg----------------------	---------------------
263848b8605SmrgXMesa (Xlib)		implements OpenGL 1.4
264848b8605SmrgOSMesa (off-screen)	implements OpenGL 1.4
265848b8605SmrgFX (3dfx Voodoo1/2)	implements OpenGL 1.3
266848b8605SmrgSVGA			implements OpenGL 1.3
267848b8605SmrgWind River UGL		implements OpenGL 1.3
268848b8605SmrgWindows/Win32		implements OpenGL 1.4
269848b8605SmrgDJGPP			implements OpenGL 1.4
270848b8605SmrgGGI			implements OpenGL 1.3
271848b8605SmrgBeOS			implements OpenGL 1.4
272848b8605SmrgAllegro			needs updating
273848b8605SmrgD3D			needs updating
274848b8605Smrg
275848b8605SmrgNote: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
276848b8605Smrgdriver call the _mesa_enable_1_4_extensions() function.
277848b8605Smrg
278848b8605Smrg
279848b8605Smrg----------------------------------------------------------------------
280