1848b8605Smrg 2848b8605Smrg Mesa 5.1 release notes 3848b8605Smrg 4848b8605Smrg December 17, 2003 5848b8605Smrg 6848b8605Smrg PLEASE READ!!!! 7848b8605Smrg 8848b8605Smrg 9848b8605Smrg 10848b8605SmrgIntroduction 11848b8605Smrg------------ 12848b8605Smrg 13848b8605SmrgMesa uses an even/odd version number scheme like the Linux kernel. 14848b8605SmrgEven-numbered versions (such as 5.0) designate stable releases. 15848b8605SmrgOdd-numbered versions (such as 5.1) designate new developmental releases. 16848b8605Smrg 17848b8605Smrg 18848b8605SmrgBug fixes 19848b8605Smrg--------- 20848b8605SmrgSee the VERSIONS file for a list of bugs fixed in this release. 21848b8605Smrg 22848b8605Smrg 23848b8605Smrg 24848b8605SmrgNew Features in Mesa 5.1 25848b8605Smrg------------------------ 26848b8605Smrg 27848b8605SmrgGL_ARB_vertex_program / GL_ARB_fragment_program 28848b8605Smrg Michal Krol and Karl Rasche implemented these extensions. Thanks! 29848b8605Smrg Be aware that there may be some rough edges and lurking bugs. 30848b8605Smrg 31848b8605SmrgGL_ATI_texture_env_combine3 extension 32848b8605Smrg This adds a few new texture combine modes. 33848b8605Smrg Contributed by Ian Romanick. 34848b8605Smrg 35848b8605SmrgGL_SGI_texture_color_table 36848b8605Smrg Adds a color table lookup to the RGBA texture path. There's a separate 37848b8605Smrg color table for each texture unit. 38848b8605Smrg Contributed by Eric Plante. 39848b8605Smrg 40848b8605SmrgGL_NV_fragment_program 41848b8605Smrg NVIDIA's fragment-level programming feature. 42848b8605Smrg Possible lurking bugs: 43848b8605Smrg - the DDX and DDY commands aren't fully tested 44848b8605Smrg - there may be bugs in the parser 45848b8605Smrg - the TEX and TXP instructions both do perspective correction 46848b8605Smrg - the pack/unpack instructions may not be correct 47848b8605Smrg 48848b8605SmrgGL_EXT_depth_bounds_test 49848b8605Smrg This extension adds a scissor-like test for the Z axis. It's used to 50848b8605Smrg optimize stencil-volume shadow algorithms. 51848b8605Smrg 52848b8605SmrgGL_NV_light_max_exponent 53848b8605Smrg Lifts the 128 limit for max light exponent. 54848b8605Smrg 55848b8605SmrgGL_EXT_texture_rectangle 56848b8605Smrg Identical to GL_NV_texture_rectangle 57848b8605Smrg 58848b8605SmrgGL_ARB_occlusion_query 59848b8605Smrg Useful for visibility-based culling. 60848b8605Smrg 61848b8605SmrgGL_ARB_texture_non_power_of_two 62848b8605Smrg Removes the restriction that texture dimensions must be powers of two. 63848b8605Smrg 64848b8605SmrgGL_ARB_vertex_buffer_object 65848b8605Smrg Allows server-side vertex arrays, optimized host/card data transfers, etc. 66848b8605Smrg 67848b8605SmrgGL_ARB_point_sprite 68848b8605Smrg ARB-approved version of GL_NV_point_sprite. Basically allows textures 69848b8605Smrg to be applied to points. 70848b8605Smrg 71848b8605SmrgGL_IBM_multimode_draw_arrays 72848b8605Smrg Allows multiple vertex arrays to be drawn with one call, including arrays 73848b8605Smrg of different types of primitives. 74848b8605Smrg 75848b8605SmrgGL_SUN_multi_draw_arrays 76848b8605Smrg An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4. 77848b8605Smrg 78848b8605SmrgFaster glDrawPixels / glCopyPixels in X11 driver 79848b8605Smrg If your X screen is 32bpp, glDrawPixels to the front color buffer will 80848b8605Smrg be accelerated (via XPutImage()) if the image format is GL_BGRA and the 81848b8605Smrg type is GL_UNSIGNED_BYTE. No raster operations, such as depth test, 82848b8605Smrg blend, fog, etc. can be enabled. 83848b8605Smrg 84848b8605Smrg If your X screen is 16bpp, glDrawPixels to the front color buffer will 85848b8605Smrg be accelerated (via XPutImage()) if the image format is GL_RGB and the 86848b8605Smrg type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth 87848b8605Smrg test, blend, fog, etc. can be enabled. 88848b8605Smrg 89848b8605Smrg glCopyPixels() calls for the front color buffer will be accelerated 90848b8605Smrg (via XCopyArea()) if no raster operations, such as depth test, blend, 91848b8605Smrg fog, pixel zoom, etc. are enabled. 92848b8605Smrg 93848b8605Smrg The speed-up over typical software rendering is a factor of 10 for 94848b8605Smrg glDrawPixels and 100 for glCopyPixels. 95848b8605Smrg 96848b8605Smrg 97848b8605SmrgWith the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object, 98848b8605SmrgGL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports 99848b8605Smrgall the new features of OpenGL 1.5. Mesa 6.0 (the next stable release) 100848b8605Smrgwill advertise GL_VERSION = "1.5". 101848b8605Smrg 102848b8605Smrg 103848b8605Smrg 104848b8605SmrgVertex/Fragment program debugger 105848b8605Smrg-------------------------------- 106848b8605Smrg 107848b8605SmrgGL_MESA_program_debug is an experimental extension to support 108848b8605Smrginteractive debugging of vertex and fragment programs. See the 109848b8605Smrgdocs/specs/OLD/MESA_program_debug.spec file for details. 110848b8605Smrg 111848b8605SmrgThe bulk of the vertex/fragment program debugger is implemented 112848b8605Smrgoutside of Mesa. The GL_MESA_program_debug extension just has minimal 113848b8605Smrghooks for stopping running programs and inspecting programs. 114848b8605Smrg 115848b8605SmrgThe progs/tests/debugger.c (only in CVS) program is an example of how 116848b8605Smrgthe extension can be used. Presently, the debugger code and demo code 117848b8605Smrgis in the same file. Eventually the debugger code should be moved 118848b8605Smrginto a reusable module. 119848b8605Smrg 120848b8605SmrgAs it is now, the demo lets you set breakpoings in vertex/fragment 121848b8605Smrgprograms, single step, and print intermediate register values. It's 122848b8605Smrgbasically just a proof of concept. 123848b8605Smrg 124848b8605Smrg 125848b8605Smrg 126848b8605SmrgDirectory tree reorganization 127848b8605Smrg----------------------------- 128848b8605Smrg 129848b8605SmrgThe directory structure for Mesa has been overhauled to improve its layout. 130848b8605SmrgAll source code for Mesa, GLU, GLUT, etc is now under the src/ directory 131848b8605Smrgin appropriate subdirectories. 132848b8605Smrg 133848b8605SmrgThe Mesa source code and drivers has been reorganized under src/mesa/. 134848b8605Smrg 135848b8605SmrgAll demonstration programs and tests are now in subdirectories under progs/. 136848b8605Smrg 137848b8605Smrg 138848b8605Smrg 139848b8605SmrgBuild System Changes 140848b8605Smrg-------------------- 141848b8605Smrg 142848b8605SmrgThe GNU automake/autoconf support has been removed. As it was, it seldom 143848b8605Smrgworked on anything but Linux. The Mesa developers aren't big fans of 144848b8605Smrgautomake/autoconf/libtool and didn't have the time to maintain it. 145848b8605SmrgIf someone wants to contribute new automake/autoconf support (and is 146848b8605Smrgwilling to maintain it), it may be re-incorporated into Mesa, subject 147848b8605Smrgto some requirements. 148848b8605Smrg 149848b8605SmrgThe "old style" makefile system has been updated: 150848b8605Smrg 1. Make-config has been trimmed down to fewer, modern configurations. 151848b8605Smrg 2. Most of the bin/mklib.* scripts have been rolled into a new "mklib" 152848b8605Smrg script that works on all sorts of systems. There are probably some 153848b8605Smrg bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5. 154848b8605Smrg Improvements/contributes are greatly appreciated. 155848b8605Smrg 3. The Makefile.X11 files have been cleaned up in various ways 156848b8605Smrg 157848b8605Smrg 158848b8605Smrg 159848b8605SmrgSource File Changes 160848b8605Smrg------------------- 161848b8605Smrg 162848b8605SmrgThe mmath.[ch] files are obsolete. Their contents have been moved 163848b8605Smrginto the imports.[ch] and macros.[ch] files. 164848b8605Smrg 165848b8605SmrgThe files related to vertex and fragment programming have changed. 166848b8605SmrgOld files: 167848b8605Smrg vpexec.[ch] 168848b8605Smrg vpparse.[ch] 169848b8605Smrg vpstate.[ch] 170848b8605SmrgNew files: 171848b8605Smrg program.[ch] - generic ARB/NV program code 172848b8605Smrg arbprogram.[ch] - ARB program API functions 173848b8605Smrg arbfragparse.[ch] - ARB fragment program parsing 174848b8605Smrg arbvertparse.[ch] - ARB vertex program parsing 175848b8605Smrg arbparse.[ch] - ARB vertex/fragment parsing 176848b8605Smrg arbparse_syn.h - vertex/fragment program syntax 177848b8605Smrg nvprogram.[ch] - NV program API functions 178848b8605Smrg nvvertprog.h - NV vertex program definitions 179848b8605Smrg nvfragprog.h - NV fragment program definitions 180848b8605Smrg nvvertparse.[ch] - NV vertex program parser 181848b8605Smrg nvfragparse.[ch] - NV fragment program parser 182848b8605Smrg nvvertexec.[ch] - NV vertex program execution 183848b8605Smrg swrast/s_nvfragprog.[ch] - NV fragment program execution 184848b8605Smrg 185848b8605SmrgThe files related to per-vertex handling have changed. 186848b8605SmrgOld files: 187848b8605Smrg tnl/t_eval_api.c - old per-vertex code 188848b8605Smrg tnl/t_imm_alloc.c - old per-vertex code 189848b8605Smrg tnl/t_imm_api.c - old per-vertex code 190848b8605Smrg tnl/t_imm_debug.c - old per-vertex code 191848b8605Smrg tnl/t_imm_dlist.c - old per-vertex code 192848b8605Smrg tnl/t_imm_elt.c - old per-vertex code 193848b8605Smrg tnl/t_imm_eval.c - old per-vertex code 194848b8605Smrg tnl/t_imm_exec.c - old per-vertex code 195848b8605Smrg tnl/t_imm_fixup.c - old per-vertex code 196848b8605Smrg tnl/t_vtx_sse.c - old per-vertex code 197848b8605Smrg tnl/t_vtx_x86.c - old per-vertex code 198848b8605SmrgNew files: 199848b8605Smrg tnl/t_save_api.c - new per-vertex code 200848b8605Smrg tnl/t_save_loopback.c - new per-vertex code 201848b8605Smrg tnl/t_save_playback.c - new per-vertex code 202848b8605Smrg tnl/t_vtx_eval.c - old per-vertex code 203848b8605Smrg 204848b8605SmrgOther new files: 205848b8605Smrg bufferobj.[ch] - GL_ARB_vertex_buffer_object functions 206848b8605Smrg version.h - defines the Mesa version info 207848b8605Smrg 208848b8605SmrgOther removed files: 209848b8605Smrg swrast/s_histogram.[ch] - moved into src/histogram.c 210848b8605Smrg 211848b8605Smrg 212848b8605Smrg 213848b8605SmrgOther Changes 214848b8605Smrg------------- 215848b8605Smrg 216848b8605SmrgThe ctx->Driver.CreateTexture function has been removed - it wasn't used. 217848b8605Smrg 218848b8605SmrgNew device driver hook functions: 219848b8605Smrg NewTextureObject - used to allocate struct gl_texture_objects 220848b8605Smrg NewTextureImage - used to allocate struct gl_texture_images 221848b8605Smrg 222848b8605SmrgNew ctx->Texture._EnabledCoordUnits field: 223848b8605Smrg With the addition of GL_NV_fragment_program we may need to interpolate 224848b8605Smrg various sets of texture coordinates even when the corresponding texture 225848b8605Smrg unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get 226848b8605Smrg called but we still may have to interpolate texture coordinates across 227848b8605Smrg triangles so that the fragment program will get them. 228848b8605Smrg This new field indicates which sets of texture coordinates are needed. 229848b8605Smrg If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the 230848b8605Smrg same bit MUST be set in ctx->Texture._EnabledCoordUnits. 231848b8605Smrg 232848b8605SmrgThe ctx->_TriangleCaps field is deprecated. 233848b8605Smrg Instead of testing the DD_* bits in _TriangleCaps, you should instead 234848b8605Smrg directly test the relevant state variables, or use one of the helper 235848b8605Smrg functions like NEED_SECONDARY_COLOR() at the bottom of context.h 236848b8605Smrg While testing _TriangleCaps bits was fast, it was kludgey, and setting 237848b8605Smrg the bits in the first place could be error prone. 238848b8605Smrg 239848b8605SmrgNew vertex processing code. 240848b8605Smrg The code behind glBegin, glEnd, glVertex, glNormal, etc. has been 241848b8605Smrg totally rewritten. It's a cleaner implementation now and should use 242848b8605Smrg less memory. (Keith) 243848b8605Smrg 244848b8605Smrg 245848b8605Smrg 246848b8605SmrgTo Do 247848b8605Smrg----- 248848b8605SmrgAdd screen-awareness to fakeglx.c 249848b8605Smrg 250848b8605Smrg 251848b8605Smrg 252848b8605Smrg 253848b8605SmrgDevice Driver Status 254848b8605Smrg-------------------- 255848b8605Smrg 256848b8605SmrgA number of Mesa's software drivers haven't been actively maintained for 257848b8605Smrgsome time. We rely on volunteers to maintain many of these drivers. 258848b8605SmrgHere's the current status of all included drivers: 259848b8605Smrg 260848b8605Smrg 261848b8605SmrgDriver Status 262848b8605Smrg---------------------- --------------------- 263848b8605SmrgXMesa (Xlib) implements OpenGL 1.4 264848b8605SmrgOSMesa (off-screen) implements OpenGL 1.4 265848b8605SmrgFX (3dfx Voodoo1/2) implements OpenGL 1.3 266848b8605SmrgSVGA implements OpenGL 1.3 267848b8605SmrgWind River UGL implements OpenGL 1.3 268848b8605SmrgWindows/Win32 implements OpenGL 1.4 269848b8605SmrgDJGPP implements OpenGL 1.4 270848b8605SmrgGGI implements OpenGL 1.3 271848b8605SmrgBeOS implements OpenGL 1.4 272848b8605SmrgAllegro needs updating 273848b8605SmrgD3D needs updating 274848b8605Smrg 275848b8605SmrgNote: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the 276848b8605Smrgdriver call the _mesa_enable_1_4_extensions() function. 277848b8605Smrg 278848b8605Smrg 279848b8605Smrg---------------------------------------------------------------------- 280