
                           Mesa 6.0 release notes

                             January 16, 2004

                              PLEASE READ!!!!



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

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

Mesa version 6.0 signifies two things:

  1. A stabilization of the 5.1 development release
  2. Implementation of the OpenGL 1.5 specification.  When you query
     glGetString(GL_VERSION) "1.5" will be returned (as long as the
     driver supports all the required features).


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
   Mesa 5.x  ==  OpenGL 1.4
   Mesa 6.x  ==  OpenGL 1.5



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

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

   GL_ARB_occlusion_query extension
   GL_ARB_texture_non_power_of_two extension
   GL_ARB_vertex_buffer_object extension
   GL_EXT_shadow_funcs



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

Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on
the device driver.  For example, 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.5
OSMesa (off-screen)	implements OpenGL 1.5
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.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.0.


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