1bf215546Sopenharmony_ci 2bf215546Sopenharmony_ci Mesa 5.1 release notes 3bf215546Sopenharmony_ci 4bf215546Sopenharmony_ci December 17, 2003 5bf215546Sopenharmony_ci 6bf215546Sopenharmony_ci PLEASE READ!!!! 7bf215546Sopenharmony_ci 8bf215546Sopenharmony_ci 9bf215546Sopenharmony_ci 10bf215546Sopenharmony_ciIntroduction 11bf215546Sopenharmony_ci------------ 12bf215546Sopenharmony_ci 13bf215546Sopenharmony_ciMesa uses an even/odd version number scheme like the Linux kernel. 14bf215546Sopenharmony_ciEven-numbered versions (such as 5.0) designate stable releases. 15bf215546Sopenharmony_ciOdd-numbered versions (such as 5.1) designate new developmental releases. 16bf215546Sopenharmony_ci 17bf215546Sopenharmony_ci 18bf215546Sopenharmony_ciBug fixes 19bf215546Sopenharmony_ci--------- 20bf215546Sopenharmony_ciSee the VERSIONS file for a list of bugs fixed in this release. 21bf215546Sopenharmony_ci 22bf215546Sopenharmony_ci 23bf215546Sopenharmony_ci 24bf215546Sopenharmony_ciNew Features in Mesa 5.1 25bf215546Sopenharmony_ci------------------------ 26bf215546Sopenharmony_ci 27bf215546Sopenharmony_ciGL_ARB_vertex_program / GL_ARB_fragment_program 28bf215546Sopenharmony_ci Michal Krol and Karl Rasche implemented these extensions. Thanks! 29bf215546Sopenharmony_ci Be aware that there may be some rough edges and lurking bugs. 30bf215546Sopenharmony_ci 31bf215546Sopenharmony_ciGL_ATI_texture_env_combine3 extension 32bf215546Sopenharmony_ci This adds a few new texture combine modes. 33bf215546Sopenharmony_ci Contributed by Ian Romanick. 34bf215546Sopenharmony_ci 35bf215546Sopenharmony_ciGL_SGI_texture_color_table 36bf215546Sopenharmony_ci Adds a color table lookup to the RGBA texture path. There's a separate 37bf215546Sopenharmony_ci color table for each texture unit. 38bf215546Sopenharmony_ci Contributed by Eric Plante. 39bf215546Sopenharmony_ci 40bf215546Sopenharmony_ciGL_NV_fragment_program 41bf215546Sopenharmony_ci NVIDIA's fragment-level programming feature. 42bf215546Sopenharmony_ci Possible lurking bugs: 43bf215546Sopenharmony_ci - the DDX and DDY commands aren't fully tested 44bf215546Sopenharmony_ci - there may be bugs in the parser 45bf215546Sopenharmony_ci - the TEX and TXP instructions both do perspective correction 46bf215546Sopenharmony_ci - the pack/unpack instructions may not be correct 47bf215546Sopenharmony_ci 48bf215546Sopenharmony_ciGL_EXT_depth_bounds_test 49bf215546Sopenharmony_ci This extension adds a scissor-like test for the Z axis. It's used to 50bf215546Sopenharmony_ci optimize stencil-volume shadow algorithms. 51bf215546Sopenharmony_ci 52bf215546Sopenharmony_ciGL_NV_light_max_exponent 53bf215546Sopenharmony_ci Lifts the 128 limit for max light exponent. 54bf215546Sopenharmony_ci 55bf215546Sopenharmony_ciGL_EXT_texture_rectangle 56bf215546Sopenharmony_ci Identical to GL_NV_texture_rectangle 57bf215546Sopenharmony_ci 58bf215546Sopenharmony_ciGL_ARB_occlusion_query 59bf215546Sopenharmony_ci Useful for visibility-based culling. 60bf215546Sopenharmony_ci 61bf215546Sopenharmony_ciGL_ARB_texture_non_power_of_two 62bf215546Sopenharmony_ci Removes the restriction that texture dimensions must be powers of two. 63bf215546Sopenharmony_ci 64bf215546Sopenharmony_ciGL_ARB_vertex_buffer_object 65bf215546Sopenharmony_ci Allows server-side vertex arrays, optimized host/card data transfers, etc. 66bf215546Sopenharmony_ci 67bf215546Sopenharmony_ciGL_ARB_point_sprite 68bf215546Sopenharmony_ci ARB-approved version of GL_NV_point_sprite. Basically allows textures 69bf215546Sopenharmony_ci to be applied to points. 70bf215546Sopenharmony_ci 71bf215546Sopenharmony_ciGL_IBM_multimode_draw_arrays 72bf215546Sopenharmony_ci Allows multiple vertex arrays to be drawn with one call, including arrays 73bf215546Sopenharmony_ci of different types of primitives. 74bf215546Sopenharmony_ci 75bf215546Sopenharmony_ciGL_SUN_multi_draw_arrays 76bf215546Sopenharmony_ci An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4. 77bf215546Sopenharmony_ci 78bf215546Sopenharmony_ciFaster glDrawPixels / glCopyPixels in X11 driver 79bf215546Sopenharmony_ci If your X screen is 32bpp, glDrawPixels to the front color buffer will 80bf215546Sopenharmony_ci be accelerated (via XPutImage()) if the image format is GL_BGRA and the 81bf215546Sopenharmony_ci type is GL_UNSIGNED_BYTE. No raster operations, such as depth test, 82bf215546Sopenharmony_ci blend, fog, etc. can be enabled. 83bf215546Sopenharmony_ci 84bf215546Sopenharmony_ci If your X screen is 16bpp, glDrawPixels to the front color buffer will 85bf215546Sopenharmony_ci be accelerated (via XPutImage()) if the image format is GL_RGB and the 86bf215546Sopenharmony_ci type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth 87bf215546Sopenharmony_ci test, blend, fog, etc. can be enabled. 88bf215546Sopenharmony_ci 89bf215546Sopenharmony_ci glCopyPixels() calls for the front color buffer will be accelerated 90bf215546Sopenharmony_ci (via XCopyArea()) if no raster operations, such as depth test, blend, 91bf215546Sopenharmony_ci fog, pixel zoom, etc. are enabled. 92bf215546Sopenharmony_ci 93bf215546Sopenharmony_ci The speed-up over typical software rendering is a factor of 10 for 94bf215546Sopenharmony_ci glDrawPixels and 100 for glCopyPixels. 95bf215546Sopenharmony_ci 96bf215546Sopenharmony_ci 97bf215546Sopenharmony_ciWith the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object, 98bf215546Sopenharmony_ciGL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports 99bf215546Sopenharmony_ciall the new features of OpenGL 1.5. Mesa 6.0 (the next stable release) 100bf215546Sopenharmony_ciwill advertise GL_VERSION = "1.5". 101bf215546Sopenharmony_ci 102bf215546Sopenharmony_ci 103bf215546Sopenharmony_ci 104bf215546Sopenharmony_ciVertex/Fragment program debugger 105bf215546Sopenharmony_ci-------------------------------- 106bf215546Sopenharmony_ci 107bf215546Sopenharmony_ciGL_MESA_program_debug is an experimental extension to support 108bf215546Sopenharmony_ciinteractive debugging of vertex and fragment programs. See the 109bf215546Sopenharmony_cidocs/specs/OLD/MESA_program_debug.spec file for details. 110bf215546Sopenharmony_ci 111bf215546Sopenharmony_ciThe bulk of the vertex/fragment program debugger is implemented 112bf215546Sopenharmony_cioutside of Mesa. The GL_MESA_program_debug extension just has minimal 113bf215546Sopenharmony_cihooks for stopping running programs and inspecting programs. 114bf215546Sopenharmony_ci 115bf215546Sopenharmony_ciThe progs/tests/debugger.c (only in CVS) program is an example of how 116bf215546Sopenharmony_cithe extension can be used. Presently, the debugger code and demo code 117bf215546Sopenharmony_ciis in the same file. Eventually the debugger code should be moved 118bf215546Sopenharmony_ciinto a reusable module. 119bf215546Sopenharmony_ci 120bf215546Sopenharmony_ciAs it is now, the demo lets you set breakpoings in vertex/fragment 121bf215546Sopenharmony_ciprograms, single step, and print intermediate register values. It's 122bf215546Sopenharmony_cibasically just a proof of concept. 123bf215546Sopenharmony_ci 124bf215546Sopenharmony_ci 125bf215546Sopenharmony_ci 126bf215546Sopenharmony_ciDirectory tree reorganization 127bf215546Sopenharmony_ci----------------------------- 128bf215546Sopenharmony_ci 129bf215546Sopenharmony_ciThe directory structure for Mesa has been overhauled to improve its layout. 130bf215546Sopenharmony_ciAll source code for Mesa, GLU, GLUT, etc is now under the src/ directory 131bf215546Sopenharmony_ciin appropriate subdirectories. 132bf215546Sopenharmony_ci 133bf215546Sopenharmony_ciThe Mesa source code and drivers has been reorganized under src/mesa/. 134bf215546Sopenharmony_ci 135bf215546Sopenharmony_ciAll demonstration programs and tests are now in subdirectories under progs/. 136bf215546Sopenharmony_ci 137bf215546Sopenharmony_ci 138bf215546Sopenharmony_ci 139bf215546Sopenharmony_ciBuild System Changes 140bf215546Sopenharmony_ci-------------------- 141bf215546Sopenharmony_ci 142bf215546Sopenharmony_ciThe GNU automake/autoconf support has been removed. As it was, it seldom 143bf215546Sopenharmony_ciworked on anything but Linux. The Mesa developers aren't big fans of 144bf215546Sopenharmony_ciautomake/autoconf/libtool and didn't have the time to maintain it. 145bf215546Sopenharmony_ciIf someone wants to contribute new automake/autoconf support (and is 146bf215546Sopenharmony_ciwilling to maintain it), it may be re-incorporated into Mesa, subject 147bf215546Sopenharmony_cito some requirements. 148bf215546Sopenharmony_ci 149bf215546Sopenharmony_ciThe "old style" makefile system has been updated: 150bf215546Sopenharmony_ci 1. Make-config has been trimmed down to fewer, modern configurations. 151bf215546Sopenharmony_ci 2. Most of the bin/mklib.* scripts have been rolled into a new "mklib" 152bf215546Sopenharmony_ci script that works on all sorts of systems. There are probably some 153bf215546Sopenharmony_ci bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5. 154bf215546Sopenharmony_ci Improvements/contributes are greatly appreciated. 155bf215546Sopenharmony_ci 3. The Makefile.X11 files have been cleaned up in various ways 156bf215546Sopenharmony_ci 157bf215546Sopenharmony_ci 158bf215546Sopenharmony_ci 159bf215546Sopenharmony_ciSource File Changes 160bf215546Sopenharmony_ci------------------- 161bf215546Sopenharmony_ci 162bf215546Sopenharmony_ciThe mmath.[ch] files are obsolete. Their contents have been moved 163bf215546Sopenharmony_ciinto the imports.[ch] and macros.[ch] files. 164bf215546Sopenharmony_ci 165bf215546Sopenharmony_ciThe files related to vertex and fragment programming have changed. 166bf215546Sopenharmony_ciOld files: 167bf215546Sopenharmony_ci vpexec.[ch] 168bf215546Sopenharmony_ci vpparse.[ch] 169bf215546Sopenharmony_ci vpstate.[ch] 170bf215546Sopenharmony_ciNew files: 171bf215546Sopenharmony_ci program.[ch] - generic ARB/NV program code 172bf215546Sopenharmony_ci arbprogram.[ch] - ARB program API functions 173bf215546Sopenharmony_ci arbfragparse.[ch] - ARB fragment program parsing 174bf215546Sopenharmony_ci arbvertparse.[ch] - ARB vertex program parsing 175bf215546Sopenharmony_ci arbparse.[ch] - ARB vertex/fragment parsing 176bf215546Sopenharmony_ci arbparse_syn.h - vertex/fragment program syntax 177bf215546Sopenharmony_ci nvprogram.[ch] - NV program API functions 178bf215546Sopenharmony_ci nvvertprog.h - NV vertex program definitions 179bf215546Sopenharmony_ci nvfragprog.h - NV fragment program definitions 180bf215546Sopenharmony_ci nvvertparse.[ch] - NV vertex program parser 181bf215546Sopenharmony_ci nvfragparse.[ch] - NV fragment program parser 182bf215546Sopenharmony_ci nvvertexec.[ch] - NV vertex program execution 183bf215546Sopenharmony_ci swrast/s_nvfragprog.[ch] - NV fragment program execution 184bf215546Sopenharmony_ci 185bf215546Sopenharmony_ciThe files related to per-vertex handling have changed. 186bf215546Sopenharmony_ciOld files: 187bf215546Sopenharmony_ci tnl/t_eval_api.c - old per-vertex code 188bf215546Sopenharmony_ci tnl/t_imm_alloc.c - old per-vertex code 189bf215546Sopenharmony_ci tnl/t_imm_api.c - old per-vertex code 190bf215546Sopenharmony_ci tnl/t_imm_debug.c - old per-vertex code 191bf215546Sopenharmony_ci tnl/t_imm_dlist.c - old per-vertex code 192bf215546Sopenharmony_ci tnl/t_imm_elt.c - old per-vertex code 193bf215546Sopenharmony_ci tnl/t_imm_eval.c - old per-vertex code 194bf215546Sopenharmony_ci tnl/t_imm_exec.c - old per-vertex code 195bf215546Sopenharmony_ci tnl/t_imm_fixup.c - old per-vertex code 196bf215546Sopenharmony_ci tnl/t_vtx_sse.c - old per-vertex code 197bf215546Sopenharmony_ci tnl/t_vtx_x86.c - old per-vertex code 198bf215546Sopenharmony_ciNew files: 199bf215546Sopenharmony_ci tnl/t_save_api.c - new per-vertex code 200bf215546Sopenharmony_ci tnl/t_save_loopback.c - new per-vertex code 201bf215546Sopenharmony_ci tnl/t_save_playback.c - new per-vertex code 202bf215546Sopenharmony_ci tnl/t_vtx_eval.c - old per-vertex code 203bf215546Sopenharmony_ci 204bf215546Sopenharmony_ciOther new files: 205bf215546Sopenharmony_ci bufferobj.[ch] - GL_ARB_vertex_buffer_object functions 206bf215546Sopenharmony_ci version.h - defines the Mesa version info 207bf215546Sopenharmony_ci 208bf215546Sopenharmony_ciOther removed files: 209bf215546Sopenharmony_ci swrast/s_histogram.[ch] - moved into src/histogram.c 210bf215546Sopenharmony_ci 211bf215546Sopenharmony_ci 212bf215546Sopenharmony_ci 213bf215546Sopenharmony_ciOther Changes 214bf215546Sopenharmony_ci------------- 215bf215546Sopenharmony_ci 216bf215546Sopenharmony_ciThe ctx->Driver.CreateTexture function has been removed - it wasn't used. 217bf215546Sopenharmony_ci 218bf215546Sopenharmony_ciNew device driver hook functions: 219bf215546Sopenharmony_ci NewTextureObject - used to allocate struct gl_texture_objects 220bf215546Sopenharmony_ci NewTextureImage - used to allocate struct gl_texture_images 221bf215546Sopenharmony_ci 222bf215546Sopenharmony_ciNew ctx->Texture._EnabledCoordUnits field: 223bf215546Sopenharmony_ci With the addition of GL_NV_fragment_program we may need to interpolate 224bf215546Sopenharmony_ci various sets of texture coordinates even when the corresponding texture 225bf215546Sopenharmony_ci unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get 226bf215546Sopenharmony_ci called but we still may have to interpolate texture coordinates across 227bf215546Sopenharmony_ci triangles so that the fragment program will get them. 228bf215546Sopenharmony_ci This new field indicates which sets of texture coordinates are needed. 229bf215546Sopenharmony_ci If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the 230bf215546Sopenharmony_ci same bit MUST be set in ctx->Texture._EnabledCoordUnits. 231bf215546Sopenharmony_ci 232bf215546Sopenharmony_ciThe ctx->_TriangleCaps field is deprecated. 233bf215546Sopenharmony_ci Instead of testing the DD_* bits in _TriangleCaps, you should instead 234bf215546Sopenharmony_ci directly test the relevant state variables, or use one of the helper 235bf215546Sopenharmony_ci functions like NEED_SECONDARY_COLOR() at the bottom of context.h 236bf215546Sopenharmony_ci While testing _TriangleCaps bits was fast, it was kludgey, and setting 237bf215546Sopenharmony_ci the bits in the first place could be error prone. 238bf215546Sopenharmony_ci 239bf215546Sopenharmony_ciNew vertex processing code. 240bf215546Sopenharmony_ci The code behind glBegin, glEnd, glVertex, glNormal, etc. has been 241bf215546Sopenharmony_ci totally rewritten. It's a cleaner implementation now and should use 242bf215546Sopenharmony_ci less memory. (Keith) 243bf215546Sopenharmony_ci 244bf215546Sopenharmony_ci 245bf215546Sopenharmony_ci 246bf215546Sopenharmony_ciTo Do 247bf215546Sopenharmony_ci----- 248bf215546Sopenharmony_ciAdd screen-awareness to fakeglx.c 249bf215546Sopenharmony_ci 250bf215546Sopenharmony_ci 251bf215546Sopenharmony_ci 252bf215546Sopenharmony_ci 253bf215546Sopenharmony_ciDevice Driver Status 254bf215546Sopenharmony_ci-------------------- 255bf215546Sopenharmony_ci 256bf215546Sopenharmony_ciA number of Mesa's software drivers haven't been actively maintained for 257bf215546Sopenharmony_cisome time. We rely on volunteers to maintain many of these drivers. 258bf215546Sopenharmony_ciHere's the current status of all included drivers: 259bf215546Sopenharmony_ci 260bf215546Sopenharmony_ci 261bf215546Sopenharmony_ciDriver Status 262bf215546Sopenharmony_ci---------------------- --------------------- 263bf215546Sopenharmony_ciXMesa (Xlib) implements OpenGL 1.4 264bf215546Sopenharmony_ciOSMesa (off-screen) implements OpenGL 1.4 265bf215546Sopenharmony_ciFX (3dfx Voodoo1/2) implements OpenGL 1.3 266bf215546Sopenharmony_ciSVGA implements OpenGL 1.3 267bf215546Sopenharmony_ciWind River UGL implements OpenGL 1.3 268bf215546Sopenharmony_ciWindows/Win32 implements OpenGL 1.4 269bf215546Sopenharmony_ciDJGPP implements OpenGL 1.4 270bf215546Sopenharmony_ciGGI implements OpenGL 1.3 271bf215546Sopenharmony_ciBeOS implements OpenGL 1.4 272bf215546Sopenharmony_ciAllegro needs updating 273bf215546Sopenharmony_ciD3D needs updating 274bf215546Sopenharmony_ci 275bf215546Sopenharmony_ciNote: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the 276bf215546Sopenharmony_cidriver call the _mesa_enable_1_4_extensions() function. 277bf215546Sopenharmony_ci 278bf215546Sopenharmony_ci 279bf215546Sopenharmony_ci---------------------------------------------------------------------- 280