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