
                           Mesa 6.1 release notes

                              August 18, 2004

                              PLEASE READ!!!!



Introduction
------------

Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 6.1) designate new developmental releases.
Even numbered versions (such as 6.0) designate stable releases.


New Features
------------

Half-precision floating point (GLhalf) pixel formats are supported
in Mesa, but the feature isn't exposed yet since the ARB extension
hasn't been finalized yet.


Texture image handling
----------------------

The code which implements image conversion, pixel transfer ops, etc
for glTexImage commands has been rewritten.

Now the gl_texture_format struct has a new StoreImage function
pointer.  Each texture format must implement this function.  The
function is totally responsible for converting the user's texture
image into the specific format.  A few helper functions makes this
relatively simple.

Overall, the code is much simpler, cleaner and easier to work with
now.  Adding new texture formats is straight-forward and there's no
longer any distinction between "hardware" and "software" formats.

Finally, the code for compressed texture images has been reorganized
as well.

Removed files:
  texutil.c
  texutil.h
  texutil_tmp.h

New files:
  texcompress_s3tc.c
  texcompress_fxt1.c



Driver / context changes
------------------------

The _mesa_create_context() and _mesa_initialize_context() function
parameters have changed.  They now take a pointer to a struct
dd_function_table.  Drivers can initialize this table by calling
_mesa_init_driver_functions().  Drivers should then plug in the special
functions they implement.  In particular, the ctx->Driver.NewTextureObject
pointer _must_ be set so that the default texture objects created in
_mesa_create/initialize_context() are correctly built.

The _mesa_init_driver_functions() function allows a lot of redundant code
to be removed from the device drivers (such as initializing
ctx->Driver.Accum to point to _swrast_Accum).  Adding new functions to
the dd_function_table can be done with less hassle since the pointer can
be initialized in _mesa_init_driver_functions() rather than in _all_ the
drivers.


Device Drivers
--------------

Mesa advertises itself as supporting OpenGL 1.2, 1.3, 1.4 or 1.5
depending on the device driver's capabilities.  For example, if the
driver enables all the ARB extensions which are part of OpenGL 1.5
then glGetString(GL_VERSION) will return "1.5".  Otherwise, it'll
return "1.4" or the next lower version that implements all required
functionality.

A number of Mesa's software drivers haven't been actively maintained for
some time.  We rely on volunteers to maintain many of the drivers.
Here's the current status of all included drivers:

Driver			Status
----------------------	---------------------
XMesa (Xlib)		implements OpenGL 1.5
OSMesa (off-screen)	implements OpenGL 1.5
Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
SVGA			implements OpenGL 1.3
Wind River UGL		implements OpenGL 1.3
Windows/Win32		implements OpenGL 1.5
DJGPP			implements OpenGL 1.5
GGI			implements OpenGL 1.3
BeOS			implements OpenGL 1.5
Allegro			needs updating
D3D			needs updating



Other Changes
-------------

See the VERSIONS file for more details about bug fixes, etc. in Mesa 6.1.


----------------------------------------------------------------------
$Id: RELNOTES-6.1,v 1.1.1.1 2012/03/29 17:22:08 uid42307 Exp $
