95a4b8e109eabede56a54a2cd7fa211105034295
[mesa.git] / docs / RELNOTES-5.1
1
2 Mesa 5.1 release notes
3
4 Month day, 2003
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 Even-numbered versions (such as 5.0) designate stable releases.
15 Odd-numbered versions (such as 5.1) designate new developmental releases.
16
17
18 Bug fixes
19 ---------
20 See the VERSIONS file for a list of bugs fixed in this release.
21
22
23
24 New Features in Mesa 5.1
25 ------------------------
26
27 GL_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
31 GL_ATI_texture_env_combine3 extension
32 This adds a few new texture combine modes.
33 Contributed by Ian Romanick.
34
35 GL_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
40 GL_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
48 GL_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
52 GL_NV_light_max_exponent
53 Lifts the 128 limit for max light exponent.
54
55 GL_EXT_texture_rectangle
56 Identical to GL_NV_texture_rectangle
57
58 GL_ARB_occlusion_query
59 Useful for visibility-based culling.
60
61 GL_ARB_texture_non_power_of_two
62 Removes the restriction that texture dimensions must be powers of two.
63
64 GL_ARB_vertex_buffer_object
65 Allows server-side vertex arrays, optimized host/card data transfers, etc.
66
67 GL_ARB_point_sprite
68 ARB-approved version of GL_NV_point_sprite. Basically allows textures
69 to be applied to points.
70
71 GL_IBM_multimode_draw_arrays
72 Allows multiple vertex arrays to be drawn with one call, including arrays
73 of different types of primitives.
74
75 GL_SUN_multi_draw_arrays
76 An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4.
77
78
79 With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
80 GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
81 all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release)
82 will advertise GL_VERSION = "1.5".
83
84
85
86 Vertex/Fragment program debugger
87 --------------------------------
88
89 GL_MESA_program_debug is an experimental extension to support
90 interactive debugging of vertex and fragment programs. See the
91 docs/MESA_program_debug.spec file for details.
92
93 The bulk of the vertex/fragment program debugger is implemented
94 outside of Mesa. The GL_MESA_program_debug extension just has minimal
95 hooks for stopping running programs and inspecting programs.
96
97 The progs/tests/debugger.c (only in CVS) program is an example of how
98 the extension can be used. Presently, the debugger code and demo code
99 is in the same file. Eventually the debugger code should be moved
100 into a reusable module.
101
102 As it is now, the demo lets you set breakpoings in vertex/fragment
103 programs, single step, and print intermediate register values. It's
104 basically just a proof of concept.
105
106
107
108 Directory tree reorganization
109 -----------------------------
110
111 The directory structure for Mesa has been overhauled to improve its layout.
112 All source code for Mesa, GLU, GLUT, etc is now under the src/ directory
113 in appropriate subdirectories.
114
115 The Mesa source code and drivers has been reorganized under src/mesa/.
116
117 All demonstration programs and tests are now in subdirectories under progs/.
118
119
120
121 Build System Changes
122 --------------------
123
124 The GNU automake/autoconf support has been removed. As it was, it seldom
125 worked on anything but Linux. The Mesa developers aren't big fans of
126 automake/autoconf/libtool and didn't have the time to maintain it.
127 If someone wants to contribute new automake/autoconf support (and is
128 willing to maintain it), it may be re-incorporated into Mesa, subject
129 to some requirements.
130
131 The "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
141 Source File Changes
142 -------------------
143
144 The mmath.[ch] files are obsolete. Their contents have been moved
145 into the imports.[ch] and macros.[ch] files.
146
147 The files related to vertex and fragment programming have changed.
148 Old files:
149 vpexec.[ch]
150 vpparse.[ch]
151 vpstate.[ch]
152 New 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
167 The files related to per-vertex handling have changed.
168 Old 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
180 New 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
186 Other new files:
187 bufferobj.[ch] - GL_ARB_vertex_buffer_object functions
188 version.h - defines the Mesa version info
189
190 Other removed files:
191 swrast/s_histogram.[ch] - moved into src/histogram.c
192
193
194
195 Other Changes
196 -------------
197
198 The ctx->Driver.CreateTexture function has been removed - it wasn't used.
199
200 New device driver hook functions:
201 NewTextureObject - used to allocate struct gl_texture_objects
202 NewTextureImage - used to allocate struct gl_texture_images
203
204 New 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
214 The 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
221 New 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
228 To Do
229 -----
230 Add screen-awareness to fakeglx.c
231
232
233
234
235 Device Driver Status
236 --------------------
237
238 A number of Mesa's software drivers haven't been actively maintained for
239 some time. We rely on volunteers to maintain many of these drivers.
240 Here's the current status of all included drivers:
241
242
243 Driver Status
244 ---------------------- ---------------------
245 XMesa (Xlib) implements OpenGL 1.4
246 OSMesa (off-screen) implements OpenGL 1.4
247 FX (3dfx Voodoo1/2) implements OpenGL 1.3
248 SVGA implements OpenGL 1.3
249 Wind River UGL implements OpenGL 1.3
250 Windows/Win32 implements OpenGL 1.4
251 DJGPP implements OpenGL 1.4
252 GGI implements OpenGL 1.3
253 BeOS implements OpenGL 1.4
254 Allegro needs updating
255 D3D needs updating
256
257 Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
258 driver call the _mesa_enable_1_4_extensions() function.
259
260
261 ----------------------------------------------------------------------