Mesa 7.3 Release Notes / 22 January 2009
========================================

Mesa 7.3 is a new development release. Users especially concerned with
stability should stick with latest stable release: version 7.2.

Mesa 7.3 implements the OpenGL 2.1 API, but the version reported by
glGetString(GL_VERSION) depends on the particular driver being used.
Some drivers don't support all the features required in OpenGL 2.1.

See the :doc:`Compiling/Installing page <../install>` for
prerequisites for DRI hardware acceleration.

MD5 checksums
-------------

::

   8ed03191432b22d118d88d6db497f304  MesaLib-7.3.tar.gz
   781e7811a6ed5c97b2b8defefc8ffbc9  MesaLib-7.3.tar.bz2
   3ccba9a1734ed6d4b3389e1535d90fbf  MesaLib-7.3.zip
   d312e974b31043b13b61bac5fbf00b87  MesaDemos-7.3.tar.gz
   3f0741394069bdf2329565a387396cda  MesaDemos-7.3.tar.bz2
   4d0887fd4c66a824295cdd619f6d34cb  MesaDemos-7.3.zip
   2d7661b66022bcb8878728f3d5bd33ab  MesaGLUT-7.3.tar.gz
   abe8036a724c1a483bdad6b5a55ddc1a  MesaGLUT-7.3.tar.bz2
   5f247819b47e2a7c62d07a6afe5262fb  MesaGLUT-7.3.zip

New features
------------

-  Support for GLSL 1.20
-  Intel DRI drivers now use GEM and DRI2

Bug fixes
---------

-  Assorted GLSL bug fixes
-  Assorted i965 driver fixes
-  Fix for wglCreateLayerContext() in WGL/Windows driver
-  Build fixes for OpenBSD and gcc 2.95
-  GLSL preprocessor handles #pragma now
-  Fix incorrect transformation of GL_SPOT_DIRECTION
-  Fixed several bugs (#18367 and #19625) in glXMakeContextCurrent()
-  Assorted Windows build fixes

Changes
-------

-  Deprecated the "XMesa" interface (include/GL/xmesa*.h files)
-  Deprecated the "FXMesa" interface (include/GL/fxmesa.h file)
-  Deprecated the "Allegro" interface (include/GL/amesa.h file)
-  Removed include/GL/uglmesa.h header
-  Removed include/GLView.h header for BeOS

Driver Status
-------------

::

   Driver         Status
   ----------------------  ----------------------
   DRI drivers     varies with the driver
   XMesa/GLX (on Xlib) implements OpenGL 2.1
   OSMesa (off-screen) implements OpenGL 2.1
   Windows/Win32       implements OpenGL 2.1
   Glide (3dfx Voodoo1/2)  implements OpenGL 1.3
   SVGA            unsupported
   Wind River UGL      unsupported
   DJGPP           unsupported
   GGI         unsupported
   BeOS            unsupported
   Allegro         unsupported
   D3D         unsupported
