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