mesa: Re-add main/bitset.h to fix classic nouveau build failure.
[mesa.git] / docs / RELNOTES-5.1
index c93981351c4139d842cc006142e7ed969f7c90ea..aed6e102b09a974e78f9516063c01a7196e62a46 100644 (file)
@@ -1,7 +1,7 @@
 
                             Mesa 5.1 release notes
 
-                              Month day, 2003
+                              December 17, 2003
 
                                 PLEASE READ!!!!
 
@@ -24,6 +24,10 @@ 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.
@@ -35,6 +39,120 @@ GL_SGI_texture_color_table
 
 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/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
 
 
 
@@ -50,14 +168,85 @@ Old files:
        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
-       nvprogram.[ch]            - NV program API functions
        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
+
 
 
 
@@ -77,10 +266,9 @@ 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
-DOS/DJGPP              implements OpenGL 1.3
+DJGPP                  implements OpenGL 1.4
 GGI                    implements OpenGL 1.3
-DOS                    implements OpenGL 1.4
-BeOS                   needs updating (underway)
+BeOS                   implements OpenGL 1.4
 Allegro                        needs updating
 D3D                    needs updating
 
@@ -89,4 +277,3 @@ driver call the _mesa_enable_1_4_extensions() function.
 
 
 ----------------------------------------------------------------------
-$Id: RELNOTES-5.1,v 1.6 2003/03/07 20:21:51 brianp Exp $