glsl2: Set a flag when visiting the assignee of an assignment
[mesa/nouveau-pmpeg.git] / docs / RELNOTES-5.1
blobaed6e102b09a974e78f9516063c01a7196e62a46
2                             Mesa 5.1 release notes
4                               December 17, 2003
6                                 PLEASE READ!!!!
10 Introduction
11 ------------
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.
18 Bug fixes
19 ---------
20 See the VERSIONS file for a list of bugs fixed in this release.
24 New Features in Mesa 5.1
25 ------------------------
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.
31 GL_ATI_texture_env_combine3 extension
32    This adds a few new texture combine modes.
33    Contributed by Ian Romanick.
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.
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
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.
52 GL_NV_light_max_exponent
53    Lifts the 128 limit for max light exponent.
55 GL_EXT_texture_rectangle
56    Identical to GL_NV_texture_rectangle
58 GL_ARB_occlusion_query
59    Useful for visibility-based culling.
61 GL_ARB_texture_non_power_of_two
62    Removes the restriction that texture dimensions must be powers of two.
64 GL_ARB_vertex_buffer_object
65    Allows server-side vertex arrays, optimized host/card data transfers, etc.
67 GL_ARB_point_sprite
68    ARB-approved version of GL_NV_point_sprite.  Basically allows textures
69    to be applied to points.
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.
75 GL_SUN_multi_draw_arrays
76    An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4.
78 Faster 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.
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.
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.
93    The speed-up over typical software rendering is a factor of 10 for
94    glDrawPixels and 100 for glCopyPixels.
97 With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
98 GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
99 all the new features of OpenGL 1.5.  Mesa 6.0 (the next stable release)
100 will advertise GL_VERSION = "1.5".
104 Vertex/Fragment program debugger
105 --------------------------------
107 GL_MESA_program_debug is an experimental extension to support
108 interactive debugging of vertex and fragment programs.  See the
109 docs/MESA_program_debug.spec file for details.
111 The bulk of the vertex/fragment program debugger is implemented
112 outside of Mesa.  The GL_MESA_program_debug extension just has minimal
113 hooks for stopping running programs and inspecting programs.
115 The progs/tests/debugger.c (only in CVS) program is an example of how
116 the extension can be used.  Presently, the debugger code and demo code
117 is in the same file.  Eventually the debugger code should be moved
118 into a reusable module.
120 As it is now, the demo lets you set breakpoings in vertex/fragment
121 programs, single step, and print intermediate register values.  It's
122 basically just a proof of concept.
126 Directory tree reorganization
127 -----------------------------
129 The directory structure for Mesa has been overhauled to improve its layout.
130 All source code for Mesa, GLU, GLUT, etc is now under the src/ directory
131 in appropriate subdirectories.
133 The Mesa source code and drivers has been reorganized under src/mesa/.
135 All demonstration programs and tests are now in subdirectories under progs/.
139 Build System Changes
140 --------------------
142 The GNU automake/autoconf support has been removed.  As it was, it seldom
143 worked on anything but Linux.  The Mesa developers aren't big fans of
144 automake/autoconf/libtool and didn't have the time to maintain it.
145 If someone wants to contribute new automake/autoconf support (and is
146 willing to maintain it), it may be re-incorporated into Mesa, subject
147 to some requirements.
149 The "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
159 Source File Changes
160 -------------------
162 The mmath.[ch] files are obsolete.  Their contents have been moved
163 into the imports.[ch] and macros.[ch] files.
165 The files related to vertex and fragment programming have changed.
166 Old files:
167         vpexec.[ch]
168         vpparse.[ch]
169         vpstate.[ch]
170 New 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
185 The files related to per-vertex handling have changed.
186 Old 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
198 New 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
204 Other new files:
205         bufferobj.[ch]          - GL_ARB_vertex_buffer_object functions
206         version.h               - defines the Mesa version info
208 Other removed files:
209         swrast/s_histogram.[ch]   - moved into src/histogram.c
213 Other Changes
214 -------------
216 The ctx->Driver.CreateTexture function has been removed - it wasn't used.
218 New device driver hook functions:
219    NewTextureObject   - used to allocate struct gl_texture_objects
220    NewTextureImage    - used to allocate struct gl_texture_images
222 New 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.
232 The 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.
239 New 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)
246 To Do
247 -----
248 Add screen-awareness to fakeglx.c
253 Device Driver Status
254 --------------------
256 A number of Mesa's software drivers haven't been actively maintained for
257 some time.  We rely on volunteers to maintain many of these drivers.
258 Here's the current status of all included drivers:
261 Driver                  Status
262 ----------------------  ---------------------
263 XMesa (Xlib)            implements OpenGL 1.4
264 OSMesa (off-screen)     implements OpenGL 1.4
265 FX (3dfx Voodoo1/2)     implements OpenGL 1.3
266 SVGA                    implements OpenGL 1.3
267 Wind River UGL          implements OpenGL 1.3
268 Windows/Win32           implements OpenGL 1.4
269 DJGPP                   implements OpenGL 1.4
270 GGI                     implements OpenGL 1.3
271 BeOS                    implements OpenGL 1.4
272 Allegro                 needs updating
273 D3D                     needs updating
275 Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
276 driver call the _mesa_enable_1_4_extensions() function.
279 ----------------------------------------------------------------------