<HTML>

<TITLE>Mesa News</TITLE>

<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>

<BODY>

<body bgcolor="#eeeeee">

<H1>News</H1>


<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 <a href="cell.html">Mesa Cell driver</a>.
</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</a>.
</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 <format> 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>
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&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>
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 & 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>

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>
<p>
</p><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>
<p>
</p><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>
<p>
</p><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><ul>
	Bug fixes:
	<ul>
		- mixed drawing of lines and bitmaps sometimes had wrong colors<br>
		- added missing glHintPGI() function<br>
		- fixed a polygon culling bug<br>
		- fixed bugs in gluPartialDisk()<br>
		- Z values in selection mode were wrong<br>
		- added missing tokens:
		<ul>
			GL_SMOOTH_POINT_SIZE_RANGE<br>
			GL_SMOOTH_POINT_SIZE_GRANULARITY<br>
			GL_SMOOTH_LINE_WIDTH_RANGE<br>
			GL_SMOOTH_LINE_WIDTH_GRANULARITY<br>
			GL_ALIASED_POINT_SIZE_RANGE<br>
			GL_ALIASED_LINE_WIDTH_RANGE
		</ul>
		- fixed glCopyPixels when copying from back to front buffer<br>
		- GL_EXT_compiled_vertex_array tokens had _SGI suffix instead of _EXT<br>
		- glDrawRangeElements(GL_LINES, 0, 1, 2, type, indices) was broken<br>
		- glDeleteTextures() didn't decrement reference count correctly<br>
		- GL_SRCA_ALPHA_SATURATE blend mode didn't work correctly<br>
		- Actual depth of transformation matrix stacks was off by one<br>
		- 24bpp visuals didn't address pixels correctly<br>
		- mipmap level of detail (lambda) calculation simplified, more accurate<br>
		- 101691 - Polygon clipping and GL_LINE<br>
		- 101928 - Polygon clipping and GL_LINE (same fix as above)<br>
		- 101808 - Non-glVertexArrays tristrip bug<br>
		- 101971 - find_last_3f on Dec OSF (worked around)<br>
		- 102369 - segv on dec osf (possibly a duplicate of the above)<br>
		- 102893 - orientations of modelview cause segfault
	</ul>
	New:
	<ul>
		- updated SVGA Linux driver<br>
		- added the MESA_FX_NO_SIGNALS env var, see docs/README.3DFX<br>
		- build libGLw.a (Xt/OpenGL drawing area widget) library by default<br>
		- changed -O2 to -O3 for a number of gcc configs
	</ul>
	Changes:
	<ul>
		- glXCopyContext's mask parameter is now unsigned long, per GLX spec
	</ul>
</ul>

<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>
<p>
</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>
<p>
</p><h2>December 14, 1999</h2>
<p>Mesa 3.1 is released!</p>
<p>
</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>
<p>
</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>
<p>
</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>
<p>
</p><h2>August 17, 1999</h2>
<p>A report from the SIGGRAPH '99 Linux/OpenGL
BOF meeting is now available.</p>
<p>-Brian</p>
<p>
</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>
<p>
</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>
<p>
</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>
<p>
</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.
<p>
</p><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>
<p>
</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>
<p>
</p><h2>May 1, 1999</h2>
<p>John Carmack made an interesting .plan update yesterday:

</p><ul>
	<i>"I put together a document on optimizing OpenGL drivers for Q3 that
	should be helpful to the various Linux 3D teams. <br>
	</i>http://www.quake3arena.com/news/glopt.html</i>"
</ul>

<p>
</p><h2>April 7, 1999</h2>
<p>Updated the Mesa contributors section and added links to RPM Mesa packages.</p>
<p>
</p><h2>March 18, 1999</h2>
<p>The new webpages are now online. Enjoy, and let me know if you find any errors.
<p>
</p><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>
<p>
</p><h2>January 22, 1999</h2>
<p>www.mesa3d.org established</p>


</p>


<hr>
</body>
</html>
