1 2 Mesa 5.1 release notes 3 4 December 17, 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 78Faster 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. 83 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. 88 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. 92 93 The speed-up over typical software rendering is a factor of 10 for 94 glDrawPixels and 100 for glCopyPixels. 95 96 97With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object, 98GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports 99all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release) 100will advertise GL_VERSION = "1.5". 101 102 103 104Vertex/Fragment program debugger 105-------------------------------- 106 107GL_MESA_program_debug is an experimental extension to support 108interactive debugging of vertex and fragment programs. See the 109docs/MESA_program_debug.spec file for details. 110 111The bulk of the vertex/fragment program debugger is implemented 112outside of Mesa. The GL_MESA_program_debug extension just has minimal 113hooks for stopping running programs and inspecting programs. 114 115The progs/tests/debugger.c (only in CVS) program is an example of how 116the extension can be used. Presently, the debugger code and demo code 117is in the same file. Eventually the debugger code should be moved 118into a reusable module. 119 120As it is now, the demo lets you set breakpoings in vertex/fragment 121programs, single step, and print intermediate register values. It's 122basically just a proof of concept. 123 124 125 126Directory tree reorganization 127----------------------------- 128 129The directory structure for Mesa has been overhauled to improve its layout. 130All source code for Mesa, GLU, GLUT, etc is now under the src/ directory 131in appropriate subdirectories. 132 133The Mesa source code and drivers has been reorganized under src/mesa/. 134 135All demonstration programs and tests are now in subdirectories under progs/. 136 137 138 139Build System Changes 140-------------------- 141 142The GNU automake/autoconf support has been removed. As it was, it seldom 143worked on anything but Linux. The Mesa developers aren't big fans of 144automake/autoconf/libtool and didn't have the time to maintain it. 145If someone wants to contribute new automake/autoconf support (and is 146willing to maintain it), it may be re-incorporated into Mesa, subject 147to some requirements. 148 149The "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 156 157 158 159Source File Changes 160------------------- 161 162The mmath.[ch] files are obsolete. Their contents have been moved 163into the imports.[ch] and macros.[ch] files. 164 165The files related to vertex and fragment programming have changed. 166Old files: 167 vpexec.[ch] 168 vpparse.[ch] 169 vpstate.[ch] 170New 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 184 185The files related to per-vertex handling have changed. 186Old 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 198New 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 203 204Other new files: 205 bufferobj.[ch] - GL_ARB_vertex_buffer_object functions 206 version.h - defines the Mesa version info 207 208Other removed files: 209 swrast/s_histogram.[ch] - moved into src/histogram.c 210 211 212 213Other Changes 214------------- 215 216The ctx->Driver.CreateTexture function has been removed - it wasn't used. 217 218New device driver hook functions: 219 NewTextureObject - used to allocate struct gl_texture_objects 220 NewTextureImage - used to allocate struct gl_texture_images 221 222New 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. 231 232The 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. 238 239New 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) 243 244 245 246To Do 247----- 248Add screen-awareness to fakeglx.c 249 250 251 252 253Device Driver Status 254-------------------- 255 256A number of Mesa's software drivers haven't been actively maintained for 257some time. We rely on volunteers to maintain many of these drivers. 258Here's the current status of all included drivers: 259 260 261Driver Status 262---------------------- --------------------- 263XMesa (Xlib) implements OpenGL 1.4 264OSMesa (off-screen) implements OpenGL 1.4 265FX (3dfx Voodoo1/2) implements OpenGL 1.3 266SVGA implements OpenGL 1.3 267Wind River UGL implements OpenGL 1.3 268Windows/Win32 implements OpenGL 1.4 269DJGPP implements OpenGL 1.4 270GGI implements OpenGL 1.3 271BeOS implements OpenGL 1.4 272Allegro needs updating 273D3D needs updating 274 275Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the 276driver call the _mesa_enable_1_4_extensions() function. 277 278 279---------------------------------------------------------------------- 280