Mesa 7.0.3 Release Notes / April 4, 2008
========================================

Mesa 7.0.3 is a stable release with bug fixes since version 7.0.2.

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

::

   3fd1cb76531b2515ef7db92d9a93dbf8  MesaLib-7.0.3.tar.gz
   e6e6379d7793af40a6bc3ce1bace572e  MesaLib-7.0.3.tar.bz2
   97882bac195229ee0b78cab82e0e3be1  MesaLib-7.0.3.zip
   8abf6bbcb1661e7dd4ce73b3fbb85898  MesaDemos-7.0.3.tar.gz
   47fd6863621d3c9c7dbb870ab7f0c303  MesaDemos-7.0.3.tar.bz2
   99e442e14da1928f76a7297bb421a3af  MesaDemos-7.0.3.zip
   2b50fe9fadc4709b57c52adef09fce3c  MesaGLUT-7.0.3.tar.gz
   0ff23c4e91b238abae63a5fc9fa003e7  MesaGLUT-7.0.3.tar.bz2
   70e83554a4462dad28e0d6e20f79aada  MesaGLUT-7.0.3.zip

Bug fixes
---------

-  Added missing glw.pc.in file to release tarball
-  Fix GLUT/Fortran issues
-  GLSL gl_FrontLightModelProduct.sceneColor variable wasn't defined
-  Fix crash upon GLSL variable array indexes (not yet supported)
-  Two-sided stencil test didn't work in software rendering
-  Fix two-sided lighting bugs/crashes (bug 13368)
-  GLSL gl_FrontFacing didn't work properly
-  glGetActiveUniform returned incorrect sizes (bug 13751)
-  Fix several bugs relating to uniforms and attributes in GLSL API
   (Bruce Merry, bug 13753)
-  glTexImage3D(GL_PROXY_TEXTURE_3D) mis-set teximage depth field
-  Fixed GLX indirect vertex array rendering bug (14197)
-  Fixed crash when deleting framebuffer objects (bugs 13507, 14293)
-  User-defined clip planes enabled for R300 (bug 9871)
-  Fixed glBindTexture() crash upon bad target (bug 14514)
-  Fixed potential crash in glDrawPixels(GL_DEPTH_COMPONENT) (bug 13915)
-  Bad strings given to glProgramStringARB() didn't generate
   GL_INVALID_OPERATION
-  Fixed minor point rasterization regression (bug 11016)
-  state.texenv.color state var didn't work in GL_ARB_fragment_program
   (bug 14931)
-  glBitmap from a PBO didn't always work
-  glGetTexImage into a PBO didn't always work
-  Comments at the end of ARB vertex/fragment programs crashed the
   parser

Changes
-------

-  Updated glext.h to version 40

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
