<!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>Mesa News</title>
  <link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>

<h1>News</h1>

<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 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" target="_parent">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"
target="_parent">
freedesktop.org</a> because of problems with SourceForge's anonymous
CVS service.
</p>

<p>Please see the <a href="cvs_access.html">CVS access page</a> for details.
</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="http://mesa3d.sourceforge.net/docs/MesaFAQ.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" target="_parent">http://sourceforge.net/project/filelist.php?group_id=3</a><a href="http://sourceforge.net/project/showfiles.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" target="_parent">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, <a href="ftp://ftp.mesa3d.org/mesa/beta/MesaLib-3.1beta3.tar.gz">MesaLib-3.1beta3.tar.gz</a>
and <a href="ftp://ftp.mesa3d.org/mesa/beta/MesaDemos-3.1beta3.tar.gz">MesaDemos-3.1beta3.tar.gz</a>,
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>www.mesa3d.org 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 <a href="ftp://ftp.mesa3d.org/mesa/misc/nVidia/">ftp://ftp.mesa3d.org/mesa/misc/nVidia/</a>.</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 <a href="http://www.nvidia.com/Products.nsf/htmlmedia/software_drivers.html">http://www.nvidia.com/Products.nsf/htmlmedia/software_drivers.html</a>.</p>

<h2>May 24, 1999</h2>
<p>Beta 2 of Mesa 3.1 has been make available at <a href="ftp://ftp.mesa3d.org/mesa/beta/">ftp://ftp.mesa3d.org/mesa/beta/</a>.
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 http://www.precisioninsight.com.</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>www.mesa3d.org established</p>

<hr>
</body>
</html>
