
                            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/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.


----------------------------------------------------------------------
