<HTML>

<TITLE>Mesa News</TITLE>

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

<BODY>

<body bgcolor="#eeeeee">

<H1>News</H1>


<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.
A <a href="http://wiki.freedesktop.org/wiki/Software/gallium"
target="_parent"> summary</a> of the architecture can be found on the
Tungsten Graphics website.
</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
<a href="http://www.tungstengraphics.com" target="_parent">
Tungsten Graphics</a> has written a whitepaper describing the new
<a href="http://www.tungstengraphics.com/mm.pdf">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.
For an eye-candy free version you can use <a href="http://www.mesa3d.org/txt/">http://www.mesa3d.org/txt/</a>.</p>
<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>
