| |
| Mesa 5.1 release notes |
| |
| December 17, 2003 |
| |
| PLEASE READ!!!! |
| |
| |
| |
| Introduction |
| ------------ |
| |
| Mesa uses an even/odd version number scheme like the Linux kernel. |
| Even-numbered versions (such as 5.0) designate stable releases. |
| Odd-numbered versions (such as 5.1) designate new developmental releases. |
| |
| |
| Bug fixes |
| --------- |
| See the VERSIONS file for a list of bugs fixed in this release. |
| |
| |
| |
| New Features in Mesa 5.1 |
| ------------------------ |
| |
| GL_ARB_vertex_program / GL_ARB_fragment_program |
| Michal Krol and Karl Rasche implemented these extensions. Thanks! |
| Be aware that there may be some rough edges and lurking bugs. |
| |
| GL_ATI_texture_env_combine3 extension |
| This adds a few new texture combine modes. |
| Contributed by Ian Romanick. |
| |
| GL_SGI_texture_color_table |
| Adds a color table lookup to the RGBA texture path. There's a separate |
| color table for each texture unit. |
| Contributed by Eric Plante. |
| |
| GL_NV_fragment_program |
| NVIDIA's fragment-level programming feature. |
| Possible lurking bugs: |
| - the DDX and DDY commands aren't fully tested |
| - there may be bugs in the parser |
| - the TEX and TXP instructions both do perspective correction |
| - the pack/unpack instructions may not be correct |
| |
| GL_EXT_depth_bounds_test |
| This extension adds a scissor-like test for the Z axis. It's used to |
| optimize stencil-volume shadow algorithms. |
| |
| GL_NV_light_max_exponent |
| Lifts the 128 limit for max light exponent. |
| |
| GL_EXT_texture_rectangle |
| Identical to GL_NV_texture_rectangle |
| |
| GL_ARB_occlusion_query |
| Useful for visibility-based culling. |
| |
| GL_ARB_texture_non_power_of_two |
| Removes the restriction that texture dimensions must be powers of two. |
| |
| GL_ARB_vertex_buffer_object |
| Allows server-side vertex arrays, optimized host/card data transfers, etc. |
| |
| GL_ARB_point_sprite |
| ARB-approved version of GL_NV_point_sprite. Basically allows textures |
| to be applied to points. |
| |
| GL_IBM_multimode_draw_arrays |
| Allows multiple vertex arrays to be drawn with one call, including arrays |
| of different types of primitives. |
| |
| GL_SUN_multi_draw_arrays |
| An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4. |
| |
| Faster glDrawPixels / glCopyPixels in X11 driver |
| If your X screen is 32bpp, glDrawPixels to the front color buffer will |
| be accelerated (via XPutImage()) if the image format is GL_BGRA and the |
| type is GL_UNSIGNED_BYTE. No raster operations, such as depth test, |
| blend, fog, etc. can be enabled. |
| |
| If your X screen is 16bpp, glDrawPixels to the front color buffer will |
| be accelerated (via XPutImage()) if the image format is GL_RGB and the |
| type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth |
| test, blend, fog, etc. can be enabled. |
| |
| glCopyPixels() calls for the front color buffer will be accelerated |
| (via XCopyArea()) if no raster operations, such as depth test, blend, |
| fog, pixel zoom, etc. are enabled. |
| |
| The speed-up over typical software rendering is a factor of 10 for |
| glDrawPixels and 100 for glCopyPixels. |
| |
| |
| With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object, |
| GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports |
| all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release) |
| will advertise GL_VERSION = "1.5". |
| |
| |
| |
| Vertex/Fragment program debugger |
| -------------------------------- |
| |
| GL_MESA_program_debug is an experimental extension to support |
| interactive debugging of vertex and fragment programs. See the |
| docs/specs/OLD/MESA_program_debug.spec file for details. |
| |
| The bulk of the vertex/fragment program debugger is implemented |
| outside of Mesa. The GL_MESA_program_debug extension just has minimal |
| hooks for stopping running programs and inspecting programs. |
| |
| The progs/tests/debugger.c (only in CVS) program is an example of how |
| the extension can be used. Presently, the debugger code and demo code |
| is in the same file. Eventually the debugger code should be moved |
| into a reusable module. |
| |
| As it is now, the demo lets you set breakpoings in vertex/fragment |
| programs, single step, and print intermediate register values. It's |
| basically just a proof of concept. |
| |
| |
| |
| Directory tree reorganization |
| ----------------------------- |
| |
| The directory structure for Mesa has been overhauled to improve its layout. |
| All source code for Mesa, GLU, GLUT, etc is now under the src/ directory |
| in appropriate subdirectories. |
| |
| The Mesa source code and drivers has been reorganized under src/mesa/. |
| |
| All demonstration programs and tests are now in subdirectories under progs/. |
| |
| |
| |
| Build System Changes |
| -------------------- |
| |
| The GNU automake/autoconf support has been removed. As it was, it seldom |
| worked on anything but Linux. The Mesa developers aren't big fans of |
| automake/autoconf/libtool and didn't have the time to maintain it. |
| If someone wants to contribute new automake/autoconf support (and is |
| willing to maintain it), it may be re-incorporated into Mesa, subject |
| to some requirements. |
| |
| The "old style" makefile system has been updated: |
| 1. Make-config has been trimmed down to fewer, modern configurations. |
| 2. Most of the bin/mklib.* scripts have been rolled into a new "mklib" |
| script that works on all sorts of systems. There are probably some |
| bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5. |
| Improvements/contributes are greatly appreciated. |
| 3. The Makefile.X11 files have been cleaned up in various ways |
| |
| |
| |
| Source File Changes |
| ------------------- |
| |
| The mmath.[ch] files are obsolete. Their contents have been moved |
| into the imports.[ch] and macros.[ch] files. |
| |
| The files related to vertex and fragment programming have changed. |
| Old files: |
| vpexec.[ch] |
| vpparse.[ch] |
| vpstate.[ch] |
| New files: |
| program.[ch] - generic ARB/NV program code |
| arbprogram.[ch] - ARB program API functions |
| arbfragparse.[ch] - ARB fragment program parsing |
| arbvertparse.[ch] - ARB vertex program parsing |
| arbparse.[ch] - ARB vertex/fragment parsing |
| arbparse_syn.h - vertex/fragment program syntax |
| nvprogram.[ch] - NV program API functions |
| nvvertprog.h - NV vertex program definitions |
| nvfragprog.h - NV fragment program definitions |
| nvvertparse.[ch] - NV vertex program parser |
| nvfragparse.[ch] - NV fragment program parser |
| nvvertexec.[ch] - NV vertex program execution |
| swrast/s_nvfragprog.[ch] - NV fragment program execution |
| |
| The files related to per-vertex handling have changed. |
| Old files: |
| tnl/t_eval_api.c - old per-vertex code |
| tnl/t_imm_alloc.c - old per-vertex code |
| tnl/t_imm_api.c - old per-vertex code |
| tnl/t_imm_debug.c - old per-vertex code |
| tnl/t_imm_dlist.c - old per-vertex code |
| tnl/t_imm_elt.c - old per-vertex code |
| tnl/t_imm_eval.c - old per-vertex code |
| tnl/t_imm_exec.c - old per-vertex code |
| tnl/t_imm_fixup.c - old per-vertex code |
| tnl/t_vtx_sse.c - old per-vertex code |
| tnl/t_vtx_x86.c - old per-vertex code |
| New files: |
| tnl/t_save_api.c - new per-vertex code |
| tnl/t_save_loopback.c - new per-vertex code |
| tnl/t_save_playback.c - new per-vertex code |
| tnl/t_vtx_eval.c - old per-vertex code |
| |
| Other new files: |
| bufferobj.[ch] - GL_ARB_vertex_buffer_object functions |
| version.h - defines the Mesa version info |
| |
| Other removed files: |
| swrast/s_histogram.[ch] - moved into src/histogram.c |
| |
| |
| |
| Other Changes |
| ------------- |
| |
| The ctx->Driver.CreateTexture function has been removed - it wasn't used. |
| |
| New device driver hook functions: |
| NewTextureObject - used to allocate struct gl_texture_objects |
| NewTextureImage - used to allocate struct gl_texture_images |
| |
| New ctx->Texture._EnabledCoordUnits field: |
| With the addition of GL_NV_fragment_program we may need to interpolate |
| various sets of texture coordinates even when the corresponding texture |
| unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get |
| called but we still may have to interpolate texture coordinates across |
| triangles so that the fragment program will get them. |
| This new field indicates which sets of texture coordinates are needed. |
| If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the |
| same bit MUST be set in ctx->Texture._EnabledCoordUnits. |
| |
| The ctx->_TriangleCaps field is deprecated. |
| Instead of testing the DD_* bits in _TriangleCaps, you should instead |
| directly test the relevant state variables, or use one of the helper |
| functions like NEED_SECONDARY_COLOR() at the bottom of context.h |
| While testing _TriangleCaps bits was fast, it was kludgey, and setting |
| the bits in the first place could be error prone. |
| |
| New vertex processing code. |
| The code behind glBegin, glEnd, glVertex, glNormal, etc. has been |
| totally rewritten. It's a cleaner implementation now and should use |
| less memory. (Keith) |
| |
| |
| |
| To Do |
| ----- |
| Add screen-awareness to fakeglx.c |
| |
| |
| |
| |
| Device Driver Status |
| -------------------- |
| |
| A number of Mesa's software drivers haven't been actively maintained for |
| some time. We rely on volunteers to maintain many of these drivers. |
| Here's the current status of all included drivers: |
| |
| |
| Driver Status |
| ---------------------- --------------------- |
| XMesa (Xlib) implements OpenGL 1.4 |
| OSMesa (off-screen) implements OpenGL 1.4 |
| FX (3dfx Voodoo1/2) implements OpenGL 1.3 |
| SVGA implements OpenGL 1.3 |
| Wind River UGL implements OpenGL 1.3 |
| Windows/Win32 implements OpenGL 1.4 |
| DJGPP implements OpenGL 1.4 |
| GGI implements OpenGL 1.3 |
| BeOS implements OpenGL 1.4 |
| Allegro needs updating |
| D3D needs updating |
| |
| Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the |
| driver call the _mesa_enable_1_4_extensions() function. |
| |
| |
| ---------------------------------------------------------------------- |