<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>The Mesa 3D Graphics Library</title>
  <link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>

<div class="header">
  <h1>The Mesa 3D Graphics Library</h1>
</div>

<iframe src="contents.html"></iframe>
<div class="content">

<h1>News</h1>

<h2>June 6, 2014</h2>
<p>
<a href="relnotes/10.2.1.html">Mesa 10.2.1</a> is released.  This release
only fixes a build error in the radeonsi driver that was introduced between
10.2-rc5 and the 10.2 final release.
</p>

<h2>June 6, 2014</h2>
<p>
<a href="relnotes/10.2.html">Mesa 10.2</a> is released.  This is a new
development release.  See the release notes for more information about
the release.
</p>

<h2>April 18, 2014</h2>
<p>
<a href="relnotes/10.1.1.html">Mesa 10.1.1</a> is released.
This is a bug-fix release.
</p>

<h2>April 18, 2014</h2>
<p>
<a href="relnotes/10.0.5.html">Mesa 10.0.5</a> is released.
This is a bug-fix release.
<br>
NOTE: Since the 10.1.1 release is being released concurrently, it is
anticipated that 10.0.5 will be the final release in the 10.0
series. Users of 10.0 are encouraged to migrate to the 10.1 series in
order to obtain future fixes.
</p>

<h2>March 12, 2014</h2>
<p>
<a href="relnotes/10.0.4.html">Mesa 10.0.4</a> is released.
This is a bug-fix release.
</p>

<h2>March 4, 2014</h2>
<p>
<a href="relnotes/10.1.html">Mesa 10.1</a> is released.
This is a new development release.
See the release notes for more information about the release.
</p>

<h2>February 3, 2014</h2>
<p>
<a href="relnotes/10.0.3.html">Mesa 10.0.3</a> is released.
This is a bug-fix release.
</p>

<h2>January 9, 2014</h2>
<p>
<a href="relnotes/10.0.2.html">Mesa 10.0.2</a> is released.
This is a bug-fix release.
</p>

<h2>December 12, 2013</h2>
<p>
<a href="relnotes/10.0.1.html">Mesa 10.0.1</a>
and <a href="relnotes/9.2.5.html">Mesa 9.2.5</a> are released.
These are both bug-fix releases.
</p>

<h2>November 30, 2013</h2>
<p>
<a href="relnotes/10.0.html">Mesa 10.0</a> is released.
This is a new development release.
See the release notes for more information about the release.
</p>

<h2>November 27, 2013</h2>
<p>
<a href="relnotes/9.2.4.html">Mesa 9.2.4</a> is released.
This is a bug fix release.
</p>

<h2>November 13, 2013</h2>
<p>
<a href="relnotes/9.2.3.html">Mesa 9.2.3</a> is released.
This is a bug fix release.
</p>

<h2>October 18, 2013</h2>
<p>
<a href="relnotes/9.2.2.html">Mesa 9.2.2</a> is released.
This is a bug fix release.
</p>

<h2>October 4, 2013</h2>
<p>
<a href="relnotes/9.2.1.html">Mesa 9.2.1</a> and
<a href="relnotes/9.1.7.html">Mesa 9.1.7</a> are released,
both bug-fix releases.
</p>

<h2>August 27, 2013</h2>
<p>
<a href="relnotes/9.2.html">Mesa 9.2</a> is released.
This is a new development release.
See the release notes for more information about the release.
</p>

<h2>August 1, 2013</h2>
<p>
<a href="relnotes/9.1.6.html">Mesa 9.1.6</a> is released.
This is a bug fix release.
</p>

<h2>July 17, 2013</h2>
<p>
<a href="relnotes/9.1.5.html">Mesa 9.1.5</a> is released.
This is a bug fix release.
</p>

<h2>July 1, 2013</h2>
<p>
<a href="relnotes/9.1.4.html">Mesa 9.1.4</a> is released.
This is a bug fix release.
</p>

<h2>May 21, 2013</h2>
<p>
<a href="relnotes/9.1.3.html">Mesa 9.1.3</a> is released.
This is a bug fix release.
</p>

<h2>April 30, 2013</h2>
<p>
<a href="relnotes/9.1.2.html">Mesa 9.1.2</a> is released.
This is a bug fix release.
</p>

<h2>March 19, 2013</h2>
<p>
<a href="relnotes/9.1.1.html">Mesa 9.1.1</a> is released.
This is a bug fix release.
</p>

<h2>February 24, 2013</h2>

<p>
Mesa demos 8.1.0 is released.
See the <a href="http://lists.freedesktop.org/archives/mesa-dev/2013-February/035180.html">announcement</a> for more information about the release.
You can download it from <a href="ftp://ftp.freedesktop.org/pub/mesa/demos/8.1.0/">ftp.freedesktop.org/pub/mesa/demos/8.1.0/</a>.
</p>


<h2>February 22, 2013</h2>

<p>
<a href="relnotes/9.1.html">Mesa 9.1</a> is released.
This is a new development release.
See the release notes for more information about the release.
</p>


<h2>February 21, 2013</h2>

<p>
<a href="relnotes/9.0.3.html">Mesa 9.0.3</a> is released.
This is a bug fix release.
</p>


<h2>January 22, 2013</h2>

<p>
<a href="relnotes/9.0.2.html">Mesa 9.0.2</a> is released.
This is a bug fix release.
</p>


<h2>November 16, 2012</h2>

<p>
<a href="relnotes/9.0.1.html">Mesa 9.0.1</a> is released.
This is a bug fix release.
</p>


<h2>October 24, 2012</h2>

<p>
<a href="relnotes/8.0.5.html">Mesa 8.0.5</a> is released.
This is a bug fix release.
</p>


<h2>October 8, 2012</h2>

<p>
<a href="relnotes/9.0.html">Mesa 9.0</a> is released.
This is the first version of Mesa to support OpenGL 3.1 and GLSL 1.40
(with the i965 driver).
See the release notes for more information about the release.
</p>


<h2>July 10, 2012</h2>

<p>
<a href="relnotes/8.0.4.html">Mesa 8.0.4</a> is released.
This is a bug fix release.
</p>


<h2>May 18, 2012</h2>

<p>
<a href="relnotes/8.0.3.html">Mesa 8.0.3</a> is released.
This is a bug fix release.
</p>


<h2>March 21, 2012</h2>

<p>
<a href="relnotes/8.0.2.html">Mesa 8.0.2</a> is released.
This is a bug fix release.
</p>


<h2>February 16, 2012</h2>

<p>
<a href="relnotes/8.0.1.html">Mesa 8.0.1</a> is released.  This is a bug fix
release.  See the release notes for more information about the release.
</p>

<h2>February 9, 2012</h2>

<p>
<a href="relnotes/8.0.html">Mesa 8.0</a> is released.
This is the first version of Mesa to support OpenGL 3.0 and GLSL 1.30
(with the i965 driver).
See the release notes for more information about the release.
</p>


<h2>November 27, 2011</h2>

<p>
<a href="relnotes/7.11.2.html">Mesa 7.11.2</a> is released.  This is a bug fix
release.  This release was made primarily to fix build problems with 7.11.1 on
Mandriva and to fix problems related to glCopyTexImage to luminance-alpha
textures.  The later was believed to have been fixed in 7.11.1 but was not.
</p>

<h2>November 17, 2011</h2>

<p>
<a href="relnotes/7.11.1.html">Mesa 7.11.1</a> is released.  This is a bug
fix release.
</p>

<h2>July 31, 2011</h2>

<p>
<a href="relnotes/7.11.html">Mesa 7.11</a> (final) is released.  This is a new
development release.
</p>

<h2>June 13, 2011</h2>

<p>
<a href="relnotes/7.10.3.html">Mesa 7.10.3</a> is released.  This is a bug
fix release.
</p>

<h2>April 6, 2011</h2>

<p>
<a href="relnotes/7.10.2.html">Mesa 7.10.2</a> is released.  This is a bug
fix release.
</p>

<h2>March 2, 2011</h2>

<p>
<a href="relnotes/7.9.2.html">Mesa 7.9.2</a> and
<a href="relnotes/7.10.1.html">Mesa 7.10.1</a> are released.  These are
stable releases containing bug fixes since the 7.9.1 and 7.10 releases.
</p>


<h2>October 4, 2010</h2>

<p>
<a href="relnotes/7.9.html">Mesa 7.9</a> (final) is released.  This is a new
development release.
</p>


<h2>September 27, 2010</h2>

<p>
<a href="relnotes/7.9.html">Mesa 7.9.0-rc1</a> is released.  This is a
release candidate for the 7.9 development release.
</p>


<h2>June 16, 2010</h2>

<p>
<a href="relnotes/7.8.2.html">Mesa 7.8.2</a> is released.  This is a bug-fix
release collecting fixes since the 7.8.1 release.
</p>


<h2>April 5, 2010</h2>

<p>
<a href="relnotes/7.8.1.html">Mesa 7.8.1</a> is released.  This is a bug-fix
release for a few critical issues in the 7.8 release.
</p>


<h2>March 28, 2010</h2>
<p>
<a href="relnotes/7.7.1.html">Mesa 7.7.1</a> is released.  This is a bug-fix
release fixing issues found in the 7.7 release.
</p>
<p>
Also, <a href="relnotes/7.8.html">Mesa 7.8</a> is released.  This is a new
development release.
</p>



<h2>December 21, 2009</h2>
<p>
<a href="relnotes/7.6.1.html">Mesa 7.6.1</a> is released.  This is a bug-fix
release fixing issues found in the 7.6 release.
</p>
<p>
Also, <a href="relnotes/7.7.html">Mesa 7.7</a> is released.  This is a new
development release.
</p>


<h2>September 28, 2009</h2>
<p>
<a href="relnotes/7.6.html">Mesa 7.6</a> is released.  This is a new feature
release.  Those especially concerned about stability may want to wait for the
follow-on 7.6.1 bug-fix release.
</p>
<p>
<a href="relnotes/7.5.2.html">Mesa 7.5.2</a> is also released.
This is a stable release fixing bugs since the 7.5.1 release.
</p>


<h2>September 3, 2009</h2>
<p>
<a href="relnotes/7.5.1.html">Mesa 7.5.1</a> is released.
This is a bug-fix release which fixes bugs found in version 7.5.
</p>


<h2>July 17, 2009</h2>
<p>
<a href="relnotes/7.5.html">Mesa 7.5</a> is released.
This is a new features release.  People especially concerned about
stability may want to wait for the follow-on 7.5.1 bug-fix release.
</p>


<h2>June 23, 2009</h2>
<p>
<a href="relnotes/7.4.4.html">Mesa 7.4.4</a> is released.
This is a stable release that fixes a regression in the i915/i965 drivers
that slipped into the 7.4.3 release.
</p>


<h2>June 19, 2009</h2>
<p>
<a href="relnotes/7.4.3.html">Mesa 7.4.3</a> is released.
This is a stable release fixing bugs since the 7.4.2 release.
</p>


<h2>May 15, 2009</h2>
<p>
<a href="relnotes/7.4.2.html">Mesa 7.4.2</a> is released.
This is a stable release fixing bugs since the 7.4.1 release.
</p>


<h2>April 18, 2009</h2>
<p>
<a href="relnotes/7.4.1.html">Mesa 7.4.1</a> is released.
This is a stable release fixing bugs since the 7.4 release.
</p>


<h2>March 27, 2009</h2>
<p>
<a href="relnotes/7.4.html">Mesa 7.4</a> is released.
This is a stable release fixing bugs since the 7.3 release.
</p>


<h2>January 22, 2009</h2>
<p>
<a href="relnotes/7.3.html">Mesa 7.3</a> is released.
This is a new development release.
Mesa 7.4 will follow and will have bug fixes relative to 7.3.
</p>


<h2>September 20, 2008</h2>
<p>
<a href="relnotes/7.2.html">Mesa 7.2</a> is released.
This is a stable, bug-fix release.
</p>


<h2>August 26, 2008</h2>
<p>
<a href="relnotes/7.1.html">Mesa 7.1</a> is released.
This is a new development release.
It should be relatively stable, but those especially concerned about
stability should wait for the 7.2 release or use Mesa 7.0.4 (the
previous stable release).
</p>


<h2>August 16, 2008</h2>
<p>
<a href="relnotes/7.0.4.html">Mesa 7.0.4</a> is released.
This is a bug-fix release.
</p>


<h2>April 4, 2008</h2>
<p>
<a href="relnotes/7.0.3.html">Mesa 7.0.3</a> is released.
This is a bug-fix release.
</p>


<h2>January 24, 2008</h2>

<p>
Added a new page describing the Mesa Cell driver.
</p>



<h2>November 13, 2007</h2>

<p>
Gallium3D is the codename for the new Mesa device driver architecture
which is currently under development.
</p>
<p>
Gallium3D development is taking place on the <em>gallium-0.1</em> branch
of the git repository.
Currently, there's only a software-only driver and an Intel i915/945 driver
but other drivers will be coming...
</p>


<h2>November 10, 2007</h2>
<p>
<a href="relnotes/7.0.2.html">Mesa 7.0.2</a> is released.
This is a bug-fix release.
</p>


<h2>August 3, 2007</h2>
<p>
<a href="relnotes/7.0.1.html">Mesa 7.0.1</a> is released.
This is a bug-fix release.
</p>


<h2>June 22, 2007</h2>
<p>
<a href="relnotes/7.0.html">Mesa 7.0</a> is released.
This is a stable release featuring OpenGL 2.1 support.
</p>


<h2>April 27, 2007</h2>
<p>
<a href="relnotes/6.5.3.html">Mesa 6.5.3</a> is released.
This is a development release which will lead up to the Mesa 7.0 release
(which will advertise OpenGL 2.1 API support).
</p>


<h2>March 26, 2007</h2>
<p>
The new Shading Language compiler branch has been merged into the git
master branch.  This is a step toward hardware support for the OpenGL
2.0 Shading Language and will be included in the next Mesa release.
In conjunction, <a href="http://glean.sf.net">Glean</a> has been updated
with a new test that does over 130 tests of the
shading language and built-in functions.
</p>

<h2>April 2007</h2>
<p>
Thomas Hellstr&ouml;m of Tungsten Graphics has written a whitepaper
describing the new DRI memory management system.
</p>

<h2>December 5, 2006</h2>
<p>
Mesa is now using git as its source code management system.
The previous CVS repository should no longer be used.
See the <a href="repository.html">repository page</a> for more information.
</p>

<h2>December 2, 2006</h2>
<p>
<a href="relnotes/6.5.2.html">Mesa 6.5.2</a> has been released.
This is a new development release.
</p>

<h2>September 15, 2006</h2>
<p>
<a href="relnotes/6.5.1.html">Mesa 6.5.1</a> has been released.
This is a new development release.
</p>

<h2>March 31, 2006</h2>
<p>
<a href="relnotes/6.5.html">Mesa 6.5</a> has been released.
This is a new development release.
</p>


<h2>February 2, 2006</h2>
<p>
<a href="relnotes/6.4.2.html">Mesa 6.4.2</a> has been released.
This is stable, bug-fix release.
</p>


<h2>November 29, 2005</h2>
<p>
<a href="relnotes/6.4.1.html">Mesa 6.4.1</a> has been released.
This is stable, bug-fix release.
</p>



<h2>October 24, 2005</h2>
<p>
<a href="relnotes/6.4.html">Mesa 6.4</a> has been released.
This is stable, bug-fix release.
</p>


<h2>August 19, 2005</h2>
<p>
Mesa 6.3.2 has been released.
Note: there was no public release of version 6.3.1.
</p>
<a href="versions.html#6.3.2">Changes in version 6.3.1</a>
<p>
The MD5 checksums are:
</p>
<pre>
98192e45ed8d69113688f89f90869346  MesaLib-6.3.2.tar.gz
0df27701df0924d17ddf41185efa8ce1  MesaLib-6.3.2.tar.bz2
ccb2423aab77fc7e81ce628734586140  MesaLib-6.3.2.zip
9d0fca0a7d051c34a0b485423fb3e85d  MesaDemos-6.3.2.tar.gz
96708868450c188205e42229b5d813c4  MesaDemos-6.3.2.tar.bz2
c5102501e609aa8996d832fafacb8ab9  MesaDemos-6.3.2.zip
</pre>


<h2>July 20, 2005</h2>
<p>
Mesa 6.3 has been released.
This is a development release with new features, changes and bug fixes.
</p>
<pre>
    New:
	- GL_EXT_framebuffer_object extension
	- GL_ARB_draw_buffers extension
	- GL_ARB_pixel_buffer_object extension
	- GL_OES_read_format extension (Ian Romanick)
	- DirectFB driver (Claudio Ciccani)
	- x86_64 vertex transformation code (Mikko T.)
    Changes:
	- added -stereo option for glxgears demo (Jacek Rosik)
	- updated the PBuffer demo code in xdemos/ directory
	- glDeleteTextures/Programs/Buffers() now makes the object ID
	  available for immediate re-use
	- assorted 64-bit clean-ups fixes (x86_64 and Win64)
	- lots of internal changes for GL_EXT_framebuffer_object
    Bug fixes:
	- some functions didn't support PBO functionality
	- glGetTexImage didn't convert color index images to RGBA as required
	- fragment program texcoords were sometimes wrong for points and lines
	- fixed problem with negative dot product in arbfplight, fplight demos
	- fixed bug in perspective correction of antialiased, textured lines
	- querying GL_POST_CONVOLUTION_ALPHA_BIAS_EXT returned wrong value
	- fixed a couple per-pixel fog bugs (Soju Matsumoto)
	- glGetBooleanv(GL_FRAGMENT_PROGRAM_BINDING_NV) was broken
	- fixed float parsing bug in ARB frag/vert programs (bug 2520)
	- XMesaGetDepthBuffer() returned incorrect value for bytesPerValue
	- GL_COLOR_MATERIAL with glColor3 didn't properly set diffuse alpha
	- glXChooseFBConfig() crashed if attribList pointer was NULL
	- program state.light[n].spot.direction.w was wrong value (bug 3083)
	- fragment program fog option required glEnable(GL_FOG) - wrong.
	- glColorTable() could produce a Mesa implementation error (bug 3135)
	- RasterPos could get corrupted by color index rendering path
	- Removed bad XTranslateCoordinates call when rendering to Pixmaps
	- glPopAttrib() didn't properly restore GL_TEXTURE_GEN enable state
	- fixed a few Darwin compilation problems
</pre>
<p>
The MD5 checksums are:
</p>
<pre>
0236f552d37514776945d5a013e5bb7b  MesaLib-6.3.tar.gz
60e1a8f78c4a8c7750a1e95753190986  MesaLib-6.3.tar.bz2
ca7c950fbace68c70caa822322db7223  MesaLib-6.3.zip
25ea801645b376c014051804fe4974b2  MesaDemos-6.3.tar.gz
9248e74872ea88c57ec25c900c295057  MesaDemos-6.3.tar.bz2
8537dfa734ef258dcc7272097558d434  MesaDemos-6.3.zip
</pre>


<h2>December 9, 2004</h2>
<p>
Mesa 6.2.1 has been released.
This is a stable release which just fixes bugs since the 6.2 release.
</p>
<pre>
    Bug fixes:
	- don't apply regular fog or color sum when using a fragment program
	- glProgramEnvParameter4fARB always generated an error on
	  GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645)
	- glVertexAttrib3svNV and glVertexAttrib3svARB were broken
	- fixed width/height mix-up in glSeparableFilter2D()
	- fixed regression in glCopyPixels + convolution
	- glReadPixels from a clipped front color buffer didn't always work
	- glTexImage didn't accept GL_RED/GREEN/BLUE as the format
	- Attempting queries/accesses of VBO 0 weren't detected as errors
	- paletted textures failed if the palette had fewer than 256 entries
    Changes:
	- fixed a bunch of compiler warnings found with gcc 3.4
	- bug reports should to go bugzilla.freedesktop.org
</pre>
<p>
The MD5 checksums are:
</p>
<pre>
80008a92f6e055d3bfdde2cf331ec3fa  MesaLib-6.2.1.tar.gz
f43228cd2bf70f583ef3275c1c545421  MesaLib-6.2.1.tar.bz2
dec26cfd40116ad021020fea2d94f652  MesaLib-6.2.1.zip
2c7af3c986a7571c8713c8bfee7e49e3  MesaDemos-6.2.1.tar.gz
3cac74667b50bcbd4f67f594fb4224a2  MesaDemos-6.2.1.tar.bz2
75b3edd12eb2b370caf05f29b99e508a  MesaDemos-6.2.1.zip
</pre>


<h2>October 2, 2004</h2>
<p>
Mesa 6.2 has been released.
This is a stable release which just fixes bugs since the 6.1 release.
</p>
<pre>
    New:
	- enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle)
	- updated Doxygen support (Jose Fonseca)
    Changes:
	- some GGI driver updates (Christoph Egger, bug 1025977)
    Bug fixes:
	- Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features
	- fixed a few compilation issues on IRIX
	- fixed a matrix classification bug (reported by Wes Bethel)
	- we weren't reseting the vertex/fragment program error state
	  before parsing (Dave Reveman)
	- adjust texcoords for sampling texture rectangles (Dave Reveman)
	- glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented
	- repeated calls to glDeleteTexture(t) could lead to a crash
	- fixed potential ref count bugs in VBOs and vertex/fragment programs
	- spriteblast demo didn't handle window size changes correctly
	- glTexSubImage didn't handle pixels=NULL correctly for PBOs
	- fixed color index mode glDrawPixels bug (Karl Schultz)
</pre>
<p>
The MD5 checksums are:
</p>
<pre>
9e8f34b059272dbb8e1f2c968b33bbf0  MesaLib-6.2.tar.gz
3d6a6362390b6a37d3cb2e615f3ac7db  MesaLib-6.2.tar.bz2
6cfd7895d28e695c0dbbed9469564091  MesaLib-6.2.zip
3e06e33b0809f09855cb60883b8bdfef  MesaDemos-6.2.tar.gz
9d160009c3dfdb35fe7e4088c9ba8f85  MesaDemos-6.2.tar.bz2
856f7ec947122eb3c8985ebc2f654dcd  MesaDemos-6.2.zip
</pre>


<h2>August 18, 2004</h2>
<p>
Mesa 6.1 has been released.
This is a new development release (version 6.2 will be a stabilization
release).
</p>
<pre>
    New:
	- Revamped Makefile system
	- glXUseRotatedXFont() utility (see xdemos/xuserotfont.c)
	- internal driver interface changes related to texture object
	  allocation, vertex/fragment programs, BlendEquationSeparate, etc.
	- option to walk triangle edges with double-precision floats
	  (Justin Novosad of Discreet) (see config.h file)
	- support for AUX buffers in software GLX driver
	- updated glext.h to version 24 and glxext.h to version 6
	- new MESA_GLX_FORCE_ALPHA and MESA_GLX_DEPTH_BITS env vars
	- updated BeOS support (Philippe Houdoin)
    Changes:
	- fragment fog interpolation is perspective corrected now
	- new glTexImage code, much cleaner, may be a bit faster
    Bug fixes:
	- glArrayElement in display lists didn't handle generic vertex attribs
	- glFogCoord didn't always work properly
	- ARB_fragment_program fog options didn't work
	- frag prog TEX instruction no longer incorrectly divides s,t,r by q
	- ARB frag prog TEX and TEXP instructions now use LOD=0
	- glTexEnviv in display lists didn't work
	- glRasterPos didn't do texgen or apply texture matrix
	- GL_DOUBLE-valued vertex arrays were broken in some cases
	- fixed texture rectangle edge/border sampling bugs
	- sampling an incomplete texture in a fragment program would segfault
	- glTexImage was missing a few error checks
	- fixed some minor glGetTexParameter glitches
	- GL_INTENSITY was mistakenly accepted as a &lt;format&gt; to glTexImage
	- fragment program writes to RC/HC register were broken
	- fixed a few glitches in GL_HP_occlusion_test extension
	- glBeginQueryARB and glEndQueryARB didn't work inside display lists
	- vertex program state references were broken
	- fixed triangle color interpolation bug on AIX (Shane Blackett)
	- fixed a number of minor memory leaks (bug #1002030)
</pre>
<p>
The MD5 checksums are:
</p>
<pre>
c9284d295ebcd2e0486cc3cd54e5863c  MesaLib-6.1.tar.gz
5de1f53ec0709f60fc68fdfed57351f3  MesaLib-6.1.tar.bz2
483e77cac4789a5d36c42f3c0136d6d8  MesaLib-6.1.zip
8c46cfa6f9732acc6f6c25724aad0246  MesaDemos-6.1.tar.gz
89bfe0f6c69b39fd0ebd9fff481a4e9b  MesaDemos-6.1.tar.bz2
161268531fcc6f0c5a056430ee97e0c1  MesaDemos-6.1.zip
</pre>



<h2>April 2, 2004</h2>

<p>
Mesa 6.0.1 has been released.
This release basically just fixes bugs since the 6.0. release.
</p>
<pre>
    New:
	- upgraded glext.h to version 22
	- new build targets (Dan Schikore)
	- new linux-x86-opteron build target (Heath Feather)
    Bug fixes:
	- glBindProgramARB didn't update all necessary state
	- fixed build problems on OpenBSD
	- omit CVS directories from tarballs
	- glGetTexImage(GL_COLOR_INDEX) was broken
	- fixed an infinite loop in t&amp;l module
	- silenced some valgrind warnings about using unitialized memory
	- fixed some compilation/link glitches on IRIX (Mike Stephens)
	- glBindProgram wasn't getting compiled into display lists
	- GLX_FBCONFIG_ID wasn't recognized in glXChooseFBConfig() (bug 888079)
	- two-sided lighting and vertex program didn't work (bug 887330)
	- stores to program parameter registers in vertex state programs
	  didn't work.
	- fixed glOrtho bug found with gcc 3.2.2 (RH9)
	- glXCreateWindow() wasn't fully implemented (bug 890894)
	- generic vertex attribute arrays didn't work in display lists
	- vertex buffer objects' default usage and access fields were wrong
	- glDrawArrays with start!=0 was broken
	- fragment program PK2H, UP2H, UP4B and UP4UB instructions were broken
	- linux-osmesa16-static config didn't work
	- fixed a few color index rendering problems (bug 910687)
	- glInterleavedArrays didn't respect GL_CLIENT_ACTIVE_TEXTURE
	- OSMesa RGB and BGR modes were broken
	- glProgramStringARB mistakenly required a null-terminated string
	- fragment program XPD instruction was incorrect
	- glGetMaterial() didn't work reliably
</pre>
<p>
The MD5 checksums are:
</p>
<pre>
011be0e79666c7a6eb9693fbf9348653  MesaLib-6.0.1.tar.gz
b7f14088c5c2f14490d2739a91102112  MesaLib-6.0.1.tar.bz2
bf0510cf0a2b87d64cdd317eca3f1db1  MesaLib-6.0.1.zip
b7b648599e0aaee1c4ffc554a2a9139e  MesaDemos-6.0.1.tar.gz
dd6aadfd9ca8e1cfa90c6ee492bc6f43  MesaDemos-6.0.1.tar.bz2
eff71d59c211825e949199852f5a2316  MesaDemos-6.0.1.zip
</pre>


<h2>January 16, 2004</h2>

<p>
Mesa 6.0 has been released.  This is a stabilization of the 5.1 release
and primarily just incorporates bug fixes.
</p>
<pre>
    New:
	- full OpenGL 1.5 support
	- updated GL/glext.h file to version 21
    Changes:
	- changed max framebuffer size to 4Kx4K (MAX_WIDTH/HEIGHT in config.h)
    Bug fixes:
	- fixed bug in UNCLAMPED_FLOAT_TO_UBYTE macro; solves a color
	  clamping issue
	- updated suno5-gcc configs
	- glColor3 functions sometimes resulted in undefined alpha values
	- fixed FP divide by zero error seen on VMS with xlockmore, others
	- fixed vertex/fragment program debug problem (bug 873011)
	- building on AIX with gcc works now
	- glDeleteProgramsARB failed for ARB fragment programs (bug 876160)
	- glDrawRangeElements tried to modify potentially read-only storage
	- updated files for building on Windows
</pre>


<h2>December 28, 2003</h2>

<p>
The Mesa CVS server has been moved to <a href="http://www.freedesktop.org">
freedesktop.org</a> because of problems with SourceForge's anonymous
CVS service.
</p>


<h2>December 17, 2003</h2>

<p>
Mesa 5.1 has been released.  This is a new development release.
Mesa 6.0 will be the next stable release and will support all
OpenGL 1.5 features.
</p>
<pre>
    New features:
	- reorganized directory tree
	- GL_ARB_vertex/fragment_program extensions (Michal Krol &amp; Karl Rasche)
	- GL_ATI_texture_env_combine3 extension (Ian Romanick)
	- GL_SGI_texture_color_table extension (Eric Plante)
	- GL_NV_fragment_program extension
	- GL_NV_light_max_exponent extension
	- GL_EXT_texture_rectangle (identical to GL_NV_texture_rectangle)
	- GL_ARB_occlusion_query extension
	- GL_ARB_point_sprite extension
	- GL_ARB_texture_non_power_of_two extension
	- GL_IBM_multimode_draw_arrays extension
	- GL_EXT_texture_mirror_clamp extension (Ian Romanick)
	- GL_ARB_vertex_buffer_object extension
	- new X86 feature detection code (Petr Sebor)
	- less memory used for display lists and vertex buffers
	- demo of per-pixel lighting with a fragment program (demos/fplight.c)
	- new version (18) of glext.h header
	- new spriteblast.c demo of GL_ARB_point_sprite
	- faster glDrawPixels in X11 driver in some cases (see relnotes/5.1)
	- faster glCopyPixels in X11 driver in some cases (see relnotes/5.1)
    Bug fixes:
	- really enable OpenGL 1.4 features in DOS driver.
	- fixed issues in glDrawPixels and glCopyPixels for very wide images
	- glPixelMapf/ui/usv()'s size parameter is GLsizei, not GLint
	- fixed some texgen bugs reported by Daniel Borca
	- fixed wglMakeCurrent(NULL, NULL) bug (#835861)
	- fixed glTexSubImage3D z-offset bug (Cedric Gautier)
	- fixed RGBA blend enable bug (Ville Syrjala)
	- glAccum is supposed to be a no-op in selection/feedback mode
	- fixed texgen bug #597589 (John Popplewell)
    Changes:
	- dropped API trace feature (src/Trace/)
	- documentation overhaul.  merged with website content.  more html.
	- glxgears.c demo updated to use GLX swap rate extensions
	- glTexImage1/2/3D now allows width/height/depth = 0
	- disable SPARC asm code on Linux (bug 852204)
</pre>
<p>
The MD5 checksums are:
</p>
<pre>
78f452f6c55478471a744f07147612b5  MesaLib-5.1.tar.gz
67b3b8d3f7f4c8c44904551b851d01af  MesaLib-5.1.tar.bz2
6dd19ffa750ec7f634e370a987505c9d  MesaLib-5.1.zip
e0214d4ebb22409dfa9262f2b52fd828  MesaDemos-5.1.tar.gz
066c9aff4fd924405de1ae9bad5ec9a7  MesaDemos-5.1.tar.bz2
d2b5ba32b53e0ad0576c637a4cc1fb41  MesaDemos-5.1.zip
</pre>


<H2>November 12, 2003</H2>

<p>
New Mesa 5.0.2 tarballs have been uploaded to SourceForge which fix a
number of automake/libtool problems.
</p>
<p>
The new MD5 checksums are:
</p>
<pre>
a9dcf3ff9ad1b7d6ce73a0df7cff8b5b  MesaLib-5.0.2.tar.gz
7b4bf9261657c2fca03796d4955e6f50  MesaLib-5.0.2.tar.bz2
79c141bddcbad557647535d02194f346  MesaLib-5.0.2.zip
952d9dc823dd818981d1a648d7b2668a  MesaDemos-5.0.2.tar.gz
b81fafff90995025d2f25ea02b786642  MesaDemos-5.0.2.tar.bz2
a21be975589e8a2d1871b6bb7874fffa  MesaDemos-5.0.2.zip
</pre>


<h2>September 5, 2003</h2>

<p>
Mesa 5.0.2 has been released.  This is a stable, bug-fix release.
</p>
<pre>
    Bug fixes:
	- fixed texgen problem causing texcoord's Q to be zero (stex3d)
	- default GL_TEXTURE_COMPARE_MODE_ARB was wrong
	- GL_CURRENT_MATRIX_NV query was wrong
	- GL_CURRENT_MATRIX_STACK_DEPTH_NV query was off by one
	- GL_LIST_MODE query wasn't correct
	- GL_FOG_COORDINATE_SOURCE_EXT query wasn't supported
	- GL_SECONDARY_COLOR_ARRAY_SIZE_EXT query returned wrong value
	- blended, wide lines didn't always work correctly (bug 711595)
	- glVertexAttrib4svNV w component was always 1
	- fixed bug in GL_IBM_rasterpos_clip (missing return)
	- GL_DEPTH_TEXTURE_MODE = GL_ALPHA didn't work correctly
	- a few Solaris compilation fixes
	- fixed glClear() problem for DRI drivers (non-existant stencil, etc)
	- fixed int/REAL mixup in GLU NURBS curve evaluator (Eric Cazeaux)
	- fixed delete [] bug in SI GLU (bug 721765) (Diego Santa Cruz)
	- glFog() didn't clamp fog colors
	- fixed bad float/int conversion for GL_TEXTURE_PRIORITY in the
	  gl[Get]TexParameteri[v] functions
	- fixed invalid memory references in glTexGen functions (bug 781602)
	- integer-valued color arrays weren't handled correctly
	- glDrawPixels(GL_DEPTH_COMPONENT) with glPixelZoom didn't work
	- GL_EXT_texture_lod_bias is part of 1.4, overlooked in 5.0.1
    Changes:
	- build GLUT with -fexceptions so C++ apps propogate exceptions
</pre>


<h2>June 2003</h2>

<p>
Mesa's directory tree has been overhauled.
Things are better organized now with some thought toward future needs.
</p>
<p>
In CVS, the latest Mesa 5.1 development code is now rooted under the
<b>Mesa-newtree/</b> directory.  The old top-level <b>Mesa/</b> directory
holds the Mesa 5.0.x code which will be abandoned at some point.
</p>


<h2>March 30, 2003</h2>

<p>
Mesa 5.0.1 has been released.  This is a stable, bug-fix release.
</p>
<pre>
    New:
	- DOS driver updates from Daniel Borca
	- updated GL/gl_mangle.h file (Bill Hoffman)
    Bug fixes:
	- auto mipmap generation for cube maps was broken (bug 641363)
	- writing/clearing software alpha channels was unreliable
	- minor compilation fixes for OS/2 (Evgeny Kotsuba)
	- fixed some bad assertions found with shadowtex demo
	- fixed error checking bug in glCopyTexSubImage2D (bug 659020)
	- glRotate(angle, -x, 0, 0) was incorrect (bug 659677)
	- fixed potential segfault in texture object validation (bug 659012)
	- fixed some bogus code in _mesa_test_os_sse_exception_support (Linus)
	- fix fog stride bug in tnl code for h/w drivers (Michel Danzer)
	- fixed glActiveTexture / glMatrixMode(GL_TEXTURE) bug (#669080)
	- glGet(GL_CURRENT_SECONDARY_COLOR) should return 4 values, not 3
	- fixed compilation problem on Solaris7/x86 (bug 536406)
	- fixed prefetch bug in 3DNow! code (Felix Kuhling)
	- fixed NeXT build problem (FABSF macro)
	- glDrawPixels Z values when glPixelZoom!=1 were invalid (bug 687811)
	- zoomed glDraw/CopyPixels with clipping sometimes failed (bug 689964)
	- AA line and triangle Z values are now rounded, not truncated
	- fixed color interpolation bug when GLchan==GLfloat (bug 694461)
	- glArePrograms/TexturesResident() wasn't 100% correct (Jose Fonseca)
	- fixed a minor GL_COLOR_MATERIAL bug
	- NV vertex program EXP instruction was broken
	- glColorMask misbehaved with X window / pixmap rendering
	- fix autoconf/libtool GLU C++ linker problem on Linux (a total hack)
	- attempt to fix GGI compilation problem when MesaDemos not present
	- NV vertex program ARL-relative fetches didn't work
    Changes:
	- use glPolygonOffset in gloss demo to avoid z-fighting artifacts
	- updated winpos and pointblast demos to use ARB extensions
	- disable SPARC normal transformation code (bug 673938)
	- GLU fixes for OS/2 (Evgeny Kotsuba)
</pre>
<p>
MD5 checksums follow:
</p>
<pre>
b80f8b5d53a3e9f19b9fde5af0c542f0  MesaLib-5.0.1.tar.gz
513b4bbd7d38951f05027179063d876b  MesaLib-5.0.1.tar.bz2
eebd395678f4520d33b267e5d5c22651  MesaLib-5.0.1.zip
49d7feaec6dc1d2091d7c3cc72a9b320  MesaDemos-5.0.1.tar.gz
37190374a98c3c892f0698be9ca3acf0  MesaDemos-5.0.1.tar.bz2
becd8bf17f5791361b4a54ba2a78e5c9  MesaDemos-5.0.1.zip
</pre>



<h2>March 7, 2003</h2>
<p>
Website and documentation overhaul.
</p>
<p>
The website content and Mesa documentation (from the doc/ directory) have
been merged together.
All the documentation files have been entered into the CVS repository.
Many of the old plain-text files have been converted to html and modernized.
</p>


<h2>November 13, 2002</h2>
<p>Mesa 5.0 has been released.  This is a stable release which
implements the OpenGL 1.4 specification.
</p><pre>New:
    - OpenGL 1.4 support (glGetString(GL_VERSION) returns "1.4")
    - removed some overlooked debugging code
    - glxinfo updated to support GLX_ARB_multisample
    - GLUT now support GLX_ARB_multisample
    - updated DOS driver (Daniel Borca)
Bug fixes:
    - GL_POINT and GL_LINE-mode polygons didn't obey cull state
    - fixed potential bug in _mesa_align_malloc/calloc()
    - fixed missing triangle bug when running vertex programs
    - fixed a few HPUX compilation problems
    - FX (Glide) driver didn't compile
    - setting GL_TEXTURE_BORDER_COLOR with glTexParameteriv() didn't work
    - a few EXT functions, like glGenTexturesEXT, were no-ops
    - a few OpenGL 1.4 functions like glFogCoord*, glBlendFuncSeparate,
      glMultiDrawArrays and glMultiDrawElements were missing
    - glGet*(GL_ACTIVE_STENCIL_FACE_EXT) was broken
    - Pentium 4 Mobile was mistakenly identified as having 3DNow!
    - fixed one-bit error in point/line fragment Z calculation
    - fixed potential segfault in fakeglx code
    - fixed color overflow problem in DOT3 texture env mode
</pre>


<h2>October 29, 2002</h2>
<p>Mesa 4.1 has been released.  This is a new development release.
For a stable release, get 4.0.4.
</p><pre>New:
    - GL_NV_vertex_program extension
    - GL_NV_vertex_program1_1 extension
    - GL_ARB_window_pos extension
    - GL_ARB_depth_texture extension
    - GL_ARB_shadow extension
    - GL_ARB_shadow_ambient extension
    - GL_EXT_shadow_funcs extension
    - GL_ARB_point_parameters extension
    - GL_ARB_texture_env_crossbar
    - GL_NV_point_sprite extension
    - GL_NV_texture_rectangle extension
    - GL_EXT_multi_draw_arrays extension
    - GL_EXT_stencil_two_side extension
    - GLX_SGIX_fbconfig and GLX_SGIX_pbuffer extensions
    - GL_ATI_texture_mirror_once extension (Ian Romanick)
    - massive overhaul/simplification of software rasterizer module,
      many contributions from Klaus Niederkrueger
    - faster software texturing in some cases (i.e. trilinear filtering)
    - new OSMesaGetProcAddress() function
    - more blend modes implemented with MMX code (Jose Fonseca)
    - added glutGetProcAddress() to GLUT
    - added GLUT_FPS env var to compute frames/second in glutSwapBuffers()
    - pbinfo and pbdemo PBuffer programs
    - glxinfo -v prints transprent pixel info (Gerd Sussner)
Bug fixes:
    - better mipmap LOD computation (prevents excessive blurriness)
    - OSMesaMakeCurrent() didn't recognize buffer size changes
    - assorted conformance fixes for 16-bit/channel rendering
    - texcombine alpha subtraction mode was broken
    - fixed some blend problems when GLchan==GLfloat (Gerk Huisma)
    - clamp colors to [0,1] in OSMesa if GLchan==GLfloat (Gerk Huisma)
    - fixed divide by zero error in NURBS tessellator (Jon Perry)
    - fixed GL_LINEAR fog bug by adding clamping
    - fixed FP exceptions found using Alpha CPU
    - 3dfx/glide driver render-to-window feature was broken
    - added missing GLX_TRANSPARENT_RGB token to glx.h
    - fixed error checking related to paletted textures
    - fixed reference count error in glDeleteTextures (Randy Fayan)
Changes:
    - New spec file and Python code to generate some GL dispatch files
    - Glide driver defaults to "no" with autoconf/automake
    - floating point color channels now clamped to [0,inf)
    - updated demos/stex3d with new options
</pre>


<h2>October 4, 2002</h2>
<p>
The <a href="faq.html">Mesa FAQ</a> has been rewritten.
</p>

<h2>October 3, 2002</h2>
<p>Mesa 4.0.4 has been released.  This is a stable bug-fix release.
</p><pre>    New:
	- GL_NV_texture_rectangle extension
	- updated glext.h header (version 17)
	- updated DOS driver (Daniel Borca)
	- updated BeOS R5 driver (Philippe Houdoin)
	- added GL_IBM_texture_mirror_repeat
	- glxinfo now takes -l option to print interesting OpenGL limits info
	- GL_MESA_ycbcr_texture extension
	- GL_APPLE_client_storage extension (for some DRI drivers only)
	- GL_MESA_pack_invert extension
    Bug fixes:
	- fixed GL_LINEAR fog bug by adding clamping
	- fixed FP exceptions found using Alpha CPU
	- 3dfx MESA_GLX_FX=window (render to window) didn't work
	- fixed memory leak in wglCreateContest (Karl Schultz)
	- define GLAPIENTRY and GLAPI if undefined in glu.h
	- wglGetProcAddress didn't handle all API functions
	- when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map
	- removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc()
	- error checking in compressed tex image functions had some glitches
	- fixed AIX compile problem in src/config.c
	- glGetTexImage was using pixel unpacking instead of packing params
	- auto-mipmap generation for cube maps was incorrect
    Changes:
	- max texture units reduced to six to accomodate texture rectangles
	- removed unfinished GL_MESA_sprite_point extension code
</pre>

<h2>June 25, 2002</h2>
<p>Mesa 4.0.3 has been released.  This is a stable bug-fix release.
</p><pre>    New:
    - updated GL/glext.h file (version 15)
    - corrected MMX blend code (Jose Fonseca)
    - support for software-based alpha planes in Windows driver
    - updated GGI driver (Filip Spacek)
    Bug fixes:
    - glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens
    - OSMesaMakeCurrent() didn't recognize buffer size changes
    - assorted conformance fixes for 16-bit/channel rendering
    - texcombine alpha subtraction mode was broken
    - fixed lighting bug with non-uniform scaling and display lists
    - fixed bug when deleting shared display lists
    - disabled SPARC cliptest assembly code (Mesa bug 544665)
    - fixed a couple Solaris compilation/link problems
    - blending clipped glDrawPixels didn't always work
    - glGetTexImage() didn't accept packed pixel types
    - glPixelMapu[is]v() could explode given too large of pixelmap
    - glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT
    - glXCopyContext() could lead to segfaults
    - glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665)
    Changes:
    - lots of C++ (g++) code clean-ups
    - lots of T&amp;L updates for the Radeon DRI driver
    Known bugs:
    - mipmap LOD computation (fixed for Mesa 4.1)
</pre>

<h2>April 2, 2002</h2>
<p>Mesa 4.0.2 has been released.  This is a stable bug-fix release.
</p><pre>    New:
      - New DOS (DJGPP) driver written by Daniel Borca
      - New driver interface functions for TCL drivers (such as Radeon DRI)
      - GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32"
        if using deep color channels
      - latest GL/glext.h and GL/glxext.h headers from SGI
    Bug fixes:
      - GL_BLEND with non-black texture env color wasn't always correct
      - GL_REPLACE with GL_RGB texture format wasn't always correct (alpha)
      - glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken
      - glReadPixels was sometimes mistakenly clipped by the scissor box
      - glDraw/ReadPixels didn't catch all the errors that they should have
      - Fixed 24bpp rendering problem in Windows driver (Karl Schultz)
      - 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c)
      - Fixed 1-bit float-&gt;int conversion bug in glDrawPixels(GL_DEPTH_COMP)
      - glColorMask as sometimes effecting glXSwapBuffers()
      - fixed a potential bug in XMesaGarbageCollect()
      - N threads rendering into one window didn't work reliably
      - glCopyPixels didn't work for deep color channels
      - improved 8 -&gt; 16bit/channel texture image conversion (Gerk Huisma)
      - glPopAttrib() didn't correctly restore user clip planes
      - user clip planes failed for some perspective projections (Chromium)
</pre>

<h2>December 17, 2001</h2>
<p>Mesa 4.0.1 has been released.  This is a stable bug-fix release.
</p><pre>    New:
      - better sub-pixel sample positions for AA triangles (Ray Tice)
      - slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO)
    Bug fixes:
      - added missing break statements in glGet*() for multisample cases
      - fixed uninitialized hash table mutex bug (display lists / texobjs)
      - fixed bad teximage error check conditional (bug 476846)
      - fixed demos readtex.c compilation problem on Windows (Karl Schultz)
      - added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT
      - silence some compiler warnings (gcc 2.96)
      - enable the #define GL_VERSION_1_3 in GL/gl.h
      - added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h
      - fixed glu.h typedef problem found with MSDev 6.0
      - build libGL.so with -Bsymbolic (fixes bug found with Chromium)
      - added missing 'const' to glXGetContextIDEXT() in glxext.h
      - fixed a few glXGetProcAddress() errors (texture compression, etc)
      - fixed start index bug in compiled vertex arrays (Keith)
      - fixed compilation problems in src/SPARC/glapi_sparc.S
      - fixed triangle strip "parity" bug found in VTK medical1 demo (Keith)
      - use glXGetProcAddressARB in GLUT to avoid extension linking problems
      - provoking vertex of flat-shaded, color-index triangles was wrong
      - fixed a few display list bugs (GLUT walker, molecule, etc) (Keith)
      - glTexParameter didn't flush the vertex buffer (Ray Tice)
      - feedback attributes for glDraw/CopyPixels and glBitmap were wrong
      - fixed bug in normal length caching (ParaView lighting bug)
</pre>

<h2>October 22, 2001</h2>
<p>Mesa 4.0 has been released.  This is a stable release.
</p><pre>    New:
      - Mesa 4.0 implements the OpenGL 1.3 specification
      - GL_IBM_rasterpos_clip extension
      - GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp)
      - GL_ARB_texture_mirrored_repeat extension
      - WindML UGL driver (Stephane Raimbault)
      - added OSMESA_MAX_WIDTH/HEIGHT queries
      - attempted compiliation fixes for Solaris 5, 7 and 8
      - updated glext.h and glxext.h files
      - updated Windows driver (Karl Schultz)
    Bug fixes:
      - added some missing GLX 1.3 tokens to include/GL/glx.h
      - GL_COLOR_MATRIX changes weren't recognized by teximage functions
      - glCopyPixels with scale and bias was broken
      - glRasterPos with lighting could segfault
      - glDeleteTextures could leave a dangling pointer
      - Proxy textures for cube maps didn't work
      - fixed a number of 16-bit color channel bugs
      - fixed a few minor memory leaks
      - GLX context sharing was broken in 3.5
      - fixed state-update bugs in glPopClientAttrib()
      - fixed glDrawRangeElements() bug
      - fixed a glPush/PopAttrib() bug related to texture binding
      - flat-shaded, textured lines were broken
      - fixed a dangling pointer problem in the XMesa code (Chris Burghart)
      - lighting didn't always produce the correct alpha value
      - fixed 3DNow! code to not read past end of arrays (Andrew Lewycky)
</pre>


<h2>June 21, 2001</h2>
<p>Mesa 3.5 has been released.  This is a new development release.
</p><pre>    New:
	- internals of Mesa divided into modular pieces (Keith Whitwell)
	- 100% OpenGL 1.2 conformance (passes all conformance tests)
	- new AA line algorithm
	- GL_EXT_convolution extension
        - GL_ARB_imaging subset
        - OSMesaCreateContextExt() function
        - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
        - GL_MAX_TEXTURE_UNITS_ARB now defaults to eight
        - GL_EXT_fog_coord extension (Keith Whitwell)
        - GL_EXT_secondary_color extension (Keith Whitwell)
        - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
        - GL_SGIX_depth_texture extension
        - GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
        - demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
        - GL_ARB_texture_env_combine extension
        - GL_ARB_texture_env_dot3 extension
        - GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp)
        - OSMesaCreateContextExt() function
        - libOSMesa.so library, contains the OSMesa driver interface
        - GL/glxext.h header file for GLX extensions
        - somewhat faster software texturing, fogging, depth testing
        - all color-index conformance tests now pass (only 8bpp tested)
        - SPARC assembly language TCL optimizations (David Miller)
        - GL_SGIS_generate_mipmap extension
    Bug Fixes:
        - fbiRev and tmuRev were unitialized when using Glide3
        - fixed a few color index mode conformance failures; all pass now
        - now appling antialiasing coverage to alpha after texturing
        - colors weren't getting clamped to [0,1] before color table lookup
        - fixed RISC alignment errors caused by COPY_4UBV macro
        - drawing wide, flat-shaded lines could cause a segfault
        - vertices now snapped to 1/16 pixel to fix rendering of tiny triangles
    Changes:
        - SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU
        - new libOSMesa.so library, contains the OSMesa driver interface
</pre>


<h2>May 17, 2001</h2>
<p>Mesa 3.4.2 has been released.  This is basically just a bug-fix release.
Here's what's new:</p>
<pre>    Bug fixes:
        - deleting the currently bound texture could cause bad problems
        - using fog could result in random vertex alpha values
         - AA triangle rendering could touch pixels outside right window bound
        - fixed byteswapping problem in clear_32bit_ximage() function
        - fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam
        - fixed memory leak in glXUseXFont()
        - fragment sampling in AA triangle function was off by 1/2 pixel
        - Windows: reading pixels from framebuffer didn't always work
        - glConvolutionFilter2D could segfault or cause FP exception
        - fixed segfaults in FX and X drivers when using tex unit 1 but not 0
        - GL_NAND logicop didn't work right in RGBA mode
        - fixed a memory corruption bug in vertex buffer reset code
        - clearing the softwara alpha buffer with scissoring was broken
        - fixed a few color index mode fog bugs
        - fixed some bad assertions in color index mode
        - fixed FX line 'stipple' bug #420091
    Changes:
        - optimized writing mono-colored pixel spans to X pixmaps
        - increased max viewport size to 2048 x 2048
</pre>


<h2>April 29, 2001</h2>
<p>New Mesa website</p>
<p>Mark Manning produced the new website.<br>Thanks, Mark!</p>


<h2>February 14, 2001</h2>
<p>Mesa 3.4.1 has been released.  Here's what's new:</p>
<pre>    New:
        - fixed some Linux build problems
        - fixed some Windows build problems
        - GL_EXT_texture_env_dot3 extension (Gareth Hughes)
    Bug fixes:
        - added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI
        - various state-update code changes needed for DRI bugs
        - disabled pixel transfer ops in glColorTable commands, not needed
        - fixed bugs in glCopyConvolutionFilter1D/2D, glGetConvolutionFilter
        - updated sources and fixed compile problems in widgets-mesa/
        - GLX_PBUFFER enum value was wrong in glx.h
        - fixed a glColorMaterial lighting bug
        - fixed bad args to Read/WriteStencilSpan in h/w stencil clear function
        - glXCopySubBufferMESA() Y position was off by one
        - Error checking of glTexSubImage3D() was broken (bug 128775)
        - glPopAttrib() didn't restore all derived Mesa state correctly
        - Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL
          conformance problems at 16bpp.
        - clearing depth buffer with scissoring was broken, would segfault
        - OSMesaGetDepthBuffer() returned bad bytesPerValue value
        - fixed a line clipping bug (reported by Craig McDaniel)
        - fixed RGB color over/underflow bug for very tiny triangles
    Known problems:
        - NURBS or evaluator surfaces inside display lists don't always work
</pre>

<h2>November 3, 2000</h2>
<p>Mesa 3.4 has been released. Here's what's new since the 3.3 release:</p>
<pre>    New:
    - optimized glDrawPixels for glPixelZoom(1,-1)
    Bug Fixes:
    - widgets-mesa/src/*.c files were missing from 3.3 distro
    - include/GL/mesa_wgl.h file was missing from 3.3 distro
    - fixed some Win32 compile problems
    - texture object priorities weren't getting initialized to 1.0
    - glAreTexturesResident return value was wrong when using hardware
    - glXUseXFont segfaulted when using 3dfx driver (via MESA_GLX_FX)
    - glReadPixels with GLushort packed types was broken
    - fixed a few bugs in the GL_EXT_texture_env_combine texture code
    - glPush/PopAttrib(GL_ENABLE_BIT) mishandled multi-texture enables
    - fixed some typos/bugs in the VB code
    - glDrawPixels(GL_COLOR_INDEX) to RGB window didn't work
    - optimized glDrawPixels paths weren't being used
    - per-fragment fog calculation didn't work without a Z buffer
    - improved blending accuracy, fixes Glean  blendFunc test failures
    - glPixelStore(GL_PACK/UNPACK_SKIP_IMAGES) wasn't handled correctly
    - glXGetProcAddressARB() didn't always return the right address
    - gluBuild[12]DMipmaps() didn't grok the GL_BGR pixel format
    - texture matrix changes weren't always detected (GLUT projtex demo)
    - fixed random color problem in vertex fog code
    - fixed Glide-related bug that let Quake get a 24-bit Z buffer
    Changes:
    - finished internal support for compressed textures for DRI
</pre>

<h2>April 24, 2000</h2>
<p>Mesa 3.2 has been released. Here's what's new since the beta release:</p>
<pre>    Bug fixes:
    - fixed memcpy bugs in span.c
    - fixed missing glEnd problem in demos/tessdemo.c
    - fixed bug when clearing 24bpp Ximages
    - fixed clipping problem found in Unreal Tournament
    - fixed Loki's "ice bug" and "crazy triangles" seen in Heretic2
    - fixed Loki's 3dfx RGB vs BGR bug
    - fixed Loki's 3dfx smooth/flat shading bug in SoF
    Changes:
    - updated docs/README file
    - use bcopy() optimizations on FreeBSD
    - re-enabled the optimized persp_textured_triangle() function
</pre>

<h2>March 23, 2000</h2>
<p>I've just upload the Mesa 3.2 beta 1 files to SourceForge at <a href="http://sourceforge.net/project/showfiles.php?group_id=3">http://sourceforge.net/project/filelist.php?group_id=3</a></p>
<p>3.2 (note even number) is a stabilization release of Mesa 3.1 meaning it's mainly
just bug fixes.</p>
<p>Here's what's changed:</p>
<pre>
    Bug fixes:
        - mixed drawing of lines and bitmaps sometimes had wrong colors
        - added missing glHintPGI() function
        - fixed a polygon culling bug
        - fixed bugs in gluPartialDisk()
        - Z values in selection mode were wrong
        - added missing tokens:
            GL_SMOOTH_POINT_SIZE_RANGE
            GL_SMOOTH_POINT_SIZE_GRANULARITY
            GL_SMOOTH_LINE_WIDTH_RANGE
            GL_SMOOTH_LINE_WIDTH_GRANULARITY
            GL_ALIASED_POINT_SIZE_RANGE
            GL_ALIASED_LINE_WIDTH_RANGE
        - fixed glCopyPixels when copying from back to front buffer
        - GL_EXT_compiled_vertex_array tokens had _SGI suffix instead of _EXT
        - glDrawRangeElements(GL_LINES, 0, 1, 2, type, indices) was broken
        - glDeleteTextures() didn't decrement reference count correctly
        - GL_SRCA_ALPHA_SATURATE blend mode didn't work correctly
        - Actual depth of transformation matrix stacks was off by one
        - 24bpp visuals didn't address pixels correctly
        - mipmap level of detail (lambda) calculation simplified, more accurate
        - 101691 - Polygon clipping and GL_LINE
        - 101928 - Polygon clipping and GL_LINE (same fix as above)
        - 101808 - Non-glVertexArrays tristrip bug
        - 101971 - find_last_3f on Dec OSF (worked around)
        - 102369 - segv on dec osf (possibly a duplicate of the above)
        - 102893 - orientations of modelview cause segfault
    New:
        - updated SVGA Linux driver
        - added the MESA_FX_NO_SIGNALS env var, see docs/README.3DFX
        - build libGLw.a (Xt/OpenGL drawing area widget) library by default
        - changed -O2 to -O3 for a number of gcc configs
    Changes:
        - glXCopyContext's mask parameter is now unsigned long, per GLX spec
</pre>

<p>Please report any problems with this release ASAP. Bugs should be filed on the
Mesa3D website at sourceforge.<br>
After 3.2 is wrapped up I hope to release 3.3 beta 1 soon afterward.</p>
<p>-- Brian</p>

<h2>December 17, 1999</h2>
<p>A Slashdot interview with Brian about Mesa (questions submitted by Slashdot readers)
can be found at <a href="http://slashdot.org/interviews/99/12/17/0927212.shtml">http://slashdot.org/interviews/99/12/17/0927212.shtml</a>.</p>

<h2>December 14, 1999</h2>
<p>Mesa 3.1 is released!</p>

<h2>September 21, 1999</h2>
<p>There appear to be two new files on the ftp site, <code>MesaLib-3.1beta3.tar.gz</code>
and <code>MesaDemos-3.1beta3.tar.gz</code>,
that seem to be... yes, I've just received confirmation from the beta center, they
are indeed the <b>THIRD</b> beta release of Mesa 3.1! Happy Days. Happy Days. Thanks
Keith Whitwell for preparing these for us during Brian's absence.</p>

<h2>August 30, 1999</h2>
<p>I'm pleased to announce that I've accepted a position with Precision Insight,
Inc. effective October, 1999. I'll be leaving Avid Technology in September.</p>
<p>I've been working on Mesa in my spare time for over five years. With Precision
Insight I now have the opportunity to devote my full attention to advancing Mesa
and OpenGL on Linux.</p>
<p>While I'll be focused on Linux, the X Window System, and hardware acceleration,
my work will continue to be open sourced and available to any other programmers who
may want to contribute to it, or use it for other projects or platforms</p>
<p>PS: I'm going to be traveling until Sep 6 and won't be reading email until then.</p>

<h2>August 23, 1999</h2>
<p>Anonymous CVS access is back online so suck up all the bandwidth you can afford.
Note that this is a new archive, so you will need to re-checkout the archive. That
means don't <i>cvs update</i> from a previous download.</p>

<h2>August 17, 1999</h2>
<p>A report from the SIGGRAPH '99 Linux/OpenGL
BOF meeting is now available.</p>
<p>-Brian</p>

<h2>August 14, 1999</h2>
<p><a href="http://www.mesa3d.org">www.mesa3d.org</a> is having
technical problems due to hardware failures at VA Linux systems. The Mac pages,
ftp, and CVS services aren't fully restored yet. Please be patient.</p>
<p>-Brian</p>

<h2>June 7, 1999</h2>
<p>RPMS of the nVidia RIVA server can be found at <code>ftp://ftp.mesa3d.org/mesa/misc/nVidia/</code>.</p>

<h2>June 2, 1999</h2>
<p><a href="http://www.nvidia.com/">nVidia</a> has released some Linux binaries for
xfree86 3.3.3.1, along with the <b>full source</b>, which includes GLX acceleration
based on Mesa 3.0. They can be downloaded from <code>http://www.nvidia.com/Products.nsf/htmlmedia/software_drivers.html</code>.</p>

<h2>May 24, 1999</h2>
<p>Beta 2 of Mesa 3.1 has been make available at <code>ftp://ftp.mesa3d.org/mesa/beta/</code>.
If you are into the quake scene, you may want to try this out, as it contains some
optimizations specifically in the Q3A rendering path.

<h2>May 13, 1999</h2>
<p>For those interested in the integration of Mesa into XFree86 4.0, Precision Insight
has posted their lowlevel design documents at <code>http://www.precisioninsight.com</code>.</p>

<h2>May 13, 1999</h2>
<pre>May 1999 - John Carmack of id Software, Inc. has made a donation of
US$10,000 to the Mesa project to support its continuing development.
Mesa is a free implementation of the OpenGL 3D graphics library and id's
newest game, Quake 3 Arena, will use Mesa as the 3D renderer on Linux.

The donation will go to Keith Whitwell, who has been optimizing Mesa to
improve performance on 3d hardware.  Thanks to Keith's work, many
applications using Mesa 3.1 will see a dramatic performance increase
over Mesa 3.0.  The donation will allow Keith to continue working on
Mesa full time for some time to come.

For more information about Mesa see www.mesa3d.org.  For more
information about id Software, Inc. see www.idsoftware.com.

--------------------------------

This donation from John/id is very generous.  Keith and I are very
grateful.

</pre>

<h2>May 1, 1999</h2>
<p>John Carmack made an interesting .plan update yesterday:</p>
<blockquote>
    <i>"I put together a document on optimizing OpenGL drivers for Q3 that
    should be helpful to the various Linux 3D teams.</i><br>
    http://www.quake3arena.com/news/glopt.html"
</blockquote>

<h2>April 7, 1999</h2>
<p>Updated the Mesa contributors section and added links to RPM Mesa packages.</p>

<h2>March 18, 1999</h2>
<p>The new webpages are now online. Enjoy, and let me know if you find any errors.

<h2>February 16, 1999</h2>
<p><a href="http://www.sgi.com/">SGI</a> releases its
<a href="http://www.sgi.com/software/opensource/glx/">GLX source code</a>.</p>

<h2>January 22, 1999</h2>
<p><a href="http://www.mesa3d.org">www.mesa3d.org</a> established</p>

</div>
</body>
</html>
