
                           Mesa 4.0 release notes

                             October 18, 2001

                              PLEASE READ!!!!



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

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

Mesa version 4.0 signifies two things:

  1. A stabilization of the 3.5 development release
  2. Implementation of the OpenGL 1.3 specification


Note that the Mesa major version number is incremented with the OpenGL
minor version number:

   Mesa 1.x  ==  OpenGL 1.0
   Mesa 2.x  ==  OpenGL 1.1
   Mesa 3.x  ==  OpenGL 1.2
   Mesa 4.x  ==  OpenGL 1.3



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

Mesa 3.5 already had all the new features of OpenGL 1.3, implemented as
extensions.  These extensions were simply promoted to standard features:

   GL_ARB_multisample
   GL_ARB_multitexture
   GL_ARB_texture_border_clamp
   GL_ARB_texture_compression
   GL_ARB_texture_cube_map
   GL_ARB_texture_env_add
   GL_ARB_texture_env_combine
   GL_ARB_texture_env_dot3
   GL_ARB_transpose_matrix

In Mesa 4.0 the functions defined by these extensions are now available
without the "ARB" suffix.  For example, glLoadTransposeMatrixf() is now
a standard API function.  The new functions in OpenGL 1.3 and Mesa 4.0 are:

   glActiveTexture
   glClientActiveTexture
   glCompressedTexImage1D
   glCompressedTexImage2D
   glCompressedTexImage3D
   glCompressedTexSubImage1D
   glCompressedTexSubImage2D
   glCompressedTexSubImage3D
   glGetCompressedTexImage
   glLoadTransposeMatrixd
   glLoadTransposeMatrixf
   glMultiTexCoord1d
   glMultiTexCoord1dv
   glMultiTexCoord1f
   glMultiTexCoord1fv
   glMultiTexCoord1i
   glMultiTexCoord1iv
   glMultiTexCoord1s
   glMultiTexCoord1sv
   glMultiTexCoord2d
   glMultiTexCoord2dv
   glMultiTexCoord2f
   glMultiTexCoord2fv
   glMultiTexCoord2i
   glMultiTexCoord2iv
   glMultiTexCoord2s
   glMultiTexCoord2sv
   glMultiTexCoord3d
   glMultiTexCoord3dv
   glMultiTexCoord3f
   glMultiTexCoord3fv
   glMultiTexCoord3i
   glMultiTexCoord3iv
   glMultiTexCoord3s
   glMultiTexCoord3sv
   glMultiTexCoord4d
   glMultiTexCoord4dv
   glMultiTexCoord4f
   glMultiTexCoord4fv
   glMultiTexCoord4i
   glMultiTexCoord4iv
   glMultiTexCoord4s
   glMultiTexCoord4sv
   glMultTransposeMatrixd
   glMultTransposeMatrixf
   glSampleCoverage
   glSamplePass


GLX 1.4 is the companion to OpenGL 1.3.  The only new features in GLX 1.4
are support for multisampling and the GLX_ARB_get_proc_address extension.
glXGetProcAddress() is the only new function in GLX 1.4.



Multisample and Texture Compression
-----------------------------------

The OpenGL 1.3 specification allows the multisample and texture compression
features to essentially be no-ops.  For example, if you query for multisample
support you'll find none, but the API functions work.

Similarly, texture compression is not implemented by any of the software
drivers but you can specify a generic compressed texture format (like
GL_COMPRESSED_RGBA) to glTexImage2D and it'll be accepted.



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

Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the
device driver.  If the driver enables all the ARB extensions which are part
of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3".  Otherwise,
it'll return "1.2".

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.3
OSMesa (off-screen)	implements OpenGL 1.3
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.3
GGI			needs updating
DOS/DJGPP		needs updating
BeOS			needs updating
Allegro			needs updating
D3D			needs updating
DOS			needs updating

Special thanks go to Karl Schultz for updating the Windows driver.

The XFree86/DRI drivers	have not yet been updated to use Mesa 4.0 as of
September 2001, but that should happen eventually.



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

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


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