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

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

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

<b>
NOTE: Changes for Mesa 6.4 and later are documented in the corresponding
<a href="relnotes.html">release notes</a> file.
</b>


<h1>Mesa Version History</h1>


<h2>1.0 beta   February 1995</h2>
<ul>
<li>Initial release
</ul>

<h2>1.1 beta   March 4, 1995</h2>
Changes:
<ul>
<li>faster point and line drawing (2x faster)
<li>more systems supported, better Makefiles
<li>Renamed lib*.a files to avoid collisions
<li>many small bug fixes
</ul>
New:
<ul>
<li>pseudo-GLX functions added
<li>new implementation of evaluators (eval2.c)
<li>GLUT support
</ul>

<h2>1.1.1 beta   March 7, 1995</h2>
Changes:
<ul>
<li>Reverted from eval2.c to eval.c due to FPE on Linux
<li>more speed improvements
<li>more Makefile changes
</ul>

<h2>1.1.2 beta   March 14, 1995</h2>
New:
<ul>
<li>implementation of SGI's blending extensions
<li>glXUseXFont implemented
<li>added MESA_DEBUG environment variable support
</ul>
Changes:
<ul>
<li>Using eval2.c again
<li>more FPE-prevention checks (0-length normals are OK)
<li>a few small bug fixes
<li>much faster pixel logic ops!
<li>faster transformation arithmetic
</ul>

<h2>1.1.3 beta   March 31, 1995</h2>
New:
<ul>
<li>gluScaleImage() and gluBuild2DMipMaps() implemented
<li>Mesa widgets for Xt/Motif
<li>blendEXT demos
<li>added environment variables for selecting visuals
</ul>
Changes:
<ul>
<li>almost all GLUT demos work correctly now
<li>faster X device driver functions
<li>more bug fixes
</ul>

<h2>1.1.4 beta   April 20, 1995</h2>
Bug fixes:
<ul>
<li>missing #define SEEK_SET in src-tk/image.c
<li>compile glShadeModel into display lists
<li>fixed pow() domain error in src/light.c
<li>fixed "flickering bitmaps" in double buffer mode
<li>fixed tk.h and aux.h for C++
<li>state of LIGHT_MODEL_LOCAL_VIEWER was inverted
</ul>
New features:
<ul>
<li>MUCH, MUCH nicer dithering in 8-bit RGB mode
<li>updated widgets and widget demos
<li>Implemented GLXPixmap functions
<li>Added GLU 1.1 and GLX 1.1 functions
<li>Changed the X/Mesa interface API, more versatile
<li>Implemented gluPartialDisk()
</ul>

<h2>1.2   May 22, 1995</h2>
Bug fixes:
<ul>
<li>IRIX 4.x makefile problem
<li>modified tk to share root colormap as needed
<li>gluLookAt normalization problem
<li>suppress Expose, NoExpose events in swapbuffers
<li>glBitmap() and glDrawPixels() clipping
</ul>
New features:
<ul>
<li>GL_BLEND, GL_MODULATE, GL_DECAL, and GL_REPLACE_EXT texture
	    modes implemented
<li>texture maps stored more efficiently
<li>texture maps can be compiled into display lists
<li>Bogdan Sikorski's GLU polygon tesselation code
<li>Linas Vepstas's sweep and extrusion library
<li>glXCreateContext()'s shareList parameter works as it's supposed to.
	XMesaCreateContext() updated to accept a shareList parameter too.
<li>Mesa can be compiled with real OpenGL .h files
<li>MESA_BACK_BUFFER environment variable
<li>better GLX error checking
</ul>

<h2>1.2.1   June 22, 1995</h2>
Bug fixes:
<ul>
<li>X/Mesa double buffer window resize crash
<li>widgets now pass PointerMotion events
<li>X/Mesa incorrect default clear color and drawing color
<li>more robust X MIT-SHM support in X/Mesa
<li>glTexImage( format=GL_LUMINANCE ) didn't work
<li>GL_LINE mode polygons with line width &gt; 1.0 could cause a crash
<li>numerous feedback bugs
<li>glReadPixels() from depth buffer was wrong
<li>error prone depth and stencil buffer allocation
New features:
<li>Preliminary Microsoft Windows driver
<li>Implemented a number of missing functions: glEvalCoord[12][df]v(),
	glGet...(), etc.
<li>Added a few missing symbols to gl.h and glu.h
<li>Faster rendering of smooth-shaded, RGBA, depth-buffered polygons.
<li>Faster rendering of lines when width=2.0
<li>Stencil-related functions now work in display lists
</ul>
Changes:
<ul>
<li>renamed aux.h as glaux.h (MS-DOS names can't start with aux)
<li>most filenames are in 8.3 format to accomodate MS-DOS
<li>use GLubytes to store arrays of colors instead of GLints
</ul>

<h2>1.2.2   August 2, 1995</h2>
New features:
<ul>
<li>texture mapped points and lines
<li>NURBS! (but not 100% complete)
<li>viewports may safely extend beyond window boundaries
<li>MESA_PRIVATE_CMAP environment variable
<li>Grayscale X display support
<li>two new demos:  demos/gears.c and demos/shadow.c
<li>MachTen for Macintosh configuration
</ul>
Bug fixes:
<ul>
<li>glGet*(GL_DEPTH_BITS) returned bytes, not bits
<li>point, line, and bitmap rasterization suffered from roundoff errors
<li>fixed a division by zero error in line clippping
<li>occasional wrong default background color really fixed!
<li>glDepthFunc(GL_ALWAYS) with glDepthMask(GL_FALSE) didn't work
<li>gluBuild2DMipmaps malloc problem fixed
<li>view volume clipping of smooth shaded lines resulted in bad colors
</ul>
Changes:
<ul>
<li>new visual selection method in glXChooseVisual()
<li>improved GLU quadric functions
<li>call XSync for glFinish and XFlush for glFlush
<li>glVertex() calls now use a function pointer to avoid conditionals
<li>removed contrib directory from Mesa tar file (available on ftp site)
<li>AIX shared library support
<li>Removed GLUenum type as it's not in OpenGL
</ul>

<h2>1.2.3   September 26, 1995</h2>
New features:
<ul>
<li>Mesa header files now equivalent to SGI OpenGL headers
<li>Support for HP's Color Recovery dithering displays
<li>Faster vertex transformation
<li>Faster raster operations into X windows under certain conditions
<li>New configurations:  HP w/ shared libs, Ultrix w/ GCC, Data General
<li>4-bit visuals now supported
</ul>
Bug fixes:
<ul>
<li>glScissor bug fixed
<li>round-off errors in clipping lines against clip planes fixed
<li>byte swapping between hosts and display servers implemented
<li>glGetError() can be called without a current rendering context
<li>problem with accidentally culled polygons is fixed
<li>fixed some widget compilation problems
</ul>

<h2>1.2.4   November 17, 1995</h2>
New features:
<ul>
<li>More speed improvements (lighting, fogging, polygon drawing)
<li>Window system and OS-independent off-screen rendering
<li>Preliminary Fortran bindings
<li>glPolygonOffsetEXT implemented
<li>glColorMask and glIndexMask now fully implemented
<li>glPixelZoom implemented
<li>display lists fully implemented
<li>gamma correction
<li>dithering in 8-bit TrueColor/DirectColor visuals
</ul>
Changes:
<ul>
<li>Improved device driver interface
<li>tk.h renamed to gltk.h to avoid conflicts with Tcl's Tk
<li>Dithering support moved from core into device driver
</ul>
Bug fixes:
<ul>
<li>glEnable/Disable( GL_LIGHTING ) didn't always take effect
<li>glReadPixels byte swapping was broken
<li>glMaterial with pname==GL_AMBIENT_AND_DIFFUSE was broken
<li>duplicate glColor4b() prototype in GL/gl.h removed
<li>stripes in wave -ci demo fixed
<li>GL_LINEAR_MIPMAP_NEAREST had wrong value
<li>bugs in HP Color Recovery support fixed
<li>fixed bug when blending lines, points, bitmaps outside of window
</ul>

<h2>1.2.5   November 30, 1995</h2>
New Features:
<ul>
<li>updated MS Windows driver
<li>new implementation of StaticGray/GrayScale visual support
</ul>
Bug fixes:
<ul>
<li>pixelzooming with gamma correction or blending didn't work
<li>HP color recovery visual wasn't being picked by glXChooseVisual
<li>glClear didn't always observe glColorMask changes
<li>olympic and offset demos didn't compile on some Suns
<li>texcoord clamping wasn't correct
<li>a polygon optimization introduced an occasional sampling problem
</ul>

<h2>1.2.6   January 26, 1996</h2>
New Features:
<ul>
<li>faster line and polygon rendering under certain conditions.  See
	  Performance Tips 9 and 10 in README
<li>profiling
<li>lighting is a bit faster
<li>better perspective corrected texture mapping
<li>Amiga AmiWin (X11) support
<li>preliminary Linux SVGA driver
Changes:
<li>now using a 16-bit depth buffer, faster, smaller
<li>GL_NORMALIZE is disabled by default
</ul>
Bug fixes:
<ul>
<li>projective texture mapping
<li>fixed a memory leak in the context destroy function
<li>GL_POLYGON with less than 3 vertices caused a crash
<li>glGet*() returned wrong result for GL_INDEX_MODE
<li>reading pixels from an unmapped X window caused a BadMatch error
</ul>

<h2>1.2.7   March 5, 1996</h2>
New:
<ul>
<li>faster lighting
<li>faster 16-bit TrueColor rendering on Linux
<li>faster 32-bit TrueColor rendering on Linux, HP, IBM
<li>non-depth-buffered XImage polygons are faster
<li>vertex array extension
<li>software alpha planes
<li>updated Macintosh driver
<li>new NeXT driver
<li>GLU quadric functions generate texture coordinates
<li>reflect.c demo - reflective, textured surface demo
</ul>
Changes:
<ul>
<li>gamma correction code moved into the X driver for better performance
</ul>
Bug fixes:
<ul>
<li>multiple glClipPlane()'s didn't work reliably
<li>glPolygonMode() didn't always work
<li>glCullFace( GL_FRONT_AND_BACK ) didn't work
<li>texture mapping with gamma correction was buggy
<li>floating point exceptions in texture coordinate interpolation
<li>XImage byte swapping didn't always work
<li>polygon edge flags weren't always used correctly
</ul>

<h2>1.2.8   May 22, 1996</h2>
New:
<ul>
<li>overlay planes on X servers with the SERVER_OVERLAY_VISUALS property
<li>better monochrome output
<li>more IRIX 6.x configurations
<li>more robust RGB mode color allocation
<li>added MESA_XSYNC environment variable
<li>GLX_MESA_pixmap_colormap and GLX_EXT_visual_info extensions
<li>GL_MESA_window_pos extension
<li>faster glReadPixels/glDrawPixels for GL_DEPTH and GL_UNSIGNED_SHORT
	and GL_UNSIGNED_INT
<li>driver for prototype Cirrus Mondello 3-D board
<li>updated AmigaDOS driver
<li>a few small speed optimizations in polygon rendering
</ul>
Changes:
<ul>
<li>internal device driver interface modified to simplify device
	  driver implementations and to support hardware Z buffers
<li>several changes to the X/Mesa interface (xmesa.h)
</ul>
Bug fixes:
<ul>
<li>fixed pow(0,0) domain error triggered on some systems
<li>glStencilClear() in a display list caused an infinite loop
<li>glRasterPos*() was sometimes off by +/-0.5 in X and Y
<li>color masking and blending were performed in wrong order
<li>auxSolidCylinder() sometimes drew a wire-frame cylinder
<li>fixed file writing bug in osdemo.c
<li>pixel mapping didn't always work
<li>the GL_GEQUAL stencil func didn't work
<li>the GL_INVERT stencil op didn't work
<li>the stencil write mask didn't work
<li>glPush/PopAttrib() didn't do enough error checking
<li>glIsList() didn't always work correctly
</ul>

<h2>2.0  October 10, 1996</h2>
New:
<ul>
<li>Implements OpenGL 1.1 API functions
<li>all texture filtering modes supported (mipmapping)
<li>faster texture mapping, see Performance Tip 11 in README
<li>antialiased RGB points
<li>X support for line and polygon stippling
<li>glDrawBuffer( GL_FRONT_AND_BACK ) works
<li>util/ directory of useful stuff
<li>demos/texobj demo of texture objects
</ul>
Changes:
<ul>
<li>major internal changes for thread-safeness
<li>new device driver interface
<li>MESA_ALPHA env variable removed
<li>triangle rasterizer replaces polygon rasterizer
</ul>
Bug fixes:
<ul>
<li>glPopAttrib() bug
<li>glDrawBuffer(GL_NONE) works now
</ul>

<h2>2.1  December 14, 1996</h2>
New:
<ul>
<li>VMS support
<li>MS-DOS driver
<li>OpenStep support
<li>updated, combined Windows 95/NT driver
<li>implemented glGetLighti() and glGetTexGen*()
<li>GLX does garbage collection of ancillary buffers
</ul>
Bug fixes:
<ul>
<li>removed unused _EXT constants from gl.h
<li>fixed polygon offset bugs
<li>Z coordinates of clipped lines were incorrect
<li>glEdgeFlag() in display lists didn't always work
<li>glLight*() in display lists didn't work
<li>fixed X line stipple bugs (Michael Pichler)
<li>glXUseXfonts XFreeFont/XFreeFontInfo bug fixed
<li>fixed a feedback bug
<li>glTexGen*() now transforms GL_EYE_PLANE by inverse modelview matrix
<li>polygons were sometimes culled instead of clipped
<li>triangle rasterizer suffered from float/int overflow exceptions
<li>fixed FP underflow exception in lighting (specular exponent)
<li>glEnable/glDisable of GL_EXT_vertex_array enums didn't work
<li>fixed free(NULL) in GLU tesselator code
<li>using 24-bit color on some X servers resulted in garbage rendering
<li>32-bit per pixel mode for XFree86 now works
<li>glRotate(a,0,0,0) gave unpredictable results
<li>GL_LINE_STRIP with &gt; 480 vertices had occasional clipping problems
<li>8-bit TrueColor GLXPixmap rendering incorrectly required a colormap
<li>glMaterial() wasn't ignored when GL_COLOR_MATERIAL was enabled
<li>glEnable(GL_COLOR_MATERIAL) followed by glColor() didn't work right
<li>accumulation buffer was limited to positive values
<li>projective textures didn't work
<li>selection buffer overflows weren't handled correctly
</ul>
Changes:
<ul>
<li>restored the GL_EXT_polygon_offset extension
<li>slightly faster RGB dithering
<li>the SVGA driver works again
<li>Amiga driver now distributed separately
<li>NeXT driver updated for Mesa 2.x
</ul>

<h2>2.2  March 14, 1997</h2>
New:
<ul>
<li>better color selection when dithering
<li>added GL_EXT_texture_object extension
<li>updated MS-DOS driver for DJGPP
<li>added openbsd make configuration
<li>faster dithered flat-shaded triangles
<li>various compilation problems with Motif widgets fixed
<li>gl.h, glx.h and glu.h name mangling option
<li>BeOS driver
<li>3D texture mapping extension
<li>GL_MESA_resize_buffers extension
<li>morph3d, stex3d and spectex demos
<li>3Dfx support
</ul>
Bug fixes:
<ul>
<li>glColorMaterial should finally work right in all respects
<li>linear interpolation of mipmap levels was incorrectly weighted
<li>readpix.c didn't compile on Macintosh
<li>GL_INVERT and related logic ops didn't work right
<li>glTexImage[12]D() didn't check its parameters consistantly
<li>fixed a memory leak in glTexImage[12]D()
<li>kludged around a SunOS 5.x/GCC compiler bug in the feedback code
<li>glReadPixels aborted instead of normally catching some errors
<li>a few 1.1 constants were missing or misnamed in gl.h
<li>glBegin(p); glBegin(q); didn't generate an error
<li>fixed a memory leak in GLX code
<li>clipping of concave polygons could cause a core dump
<li>1-component alpha texture maps didn't work
<li>fixed a GLU polygon tesselator bug
<li>polygons with colinear vertices were sometimes culled
<li>feedback triangle colors were wrong when using smooth shading
<li>textures with borders didn't work correctly
<li>colors returned in feedback mode were wrong when using lighting
<li>spotlights didn't effect ambient lighting correctly
<li>gluPartialDisk() had a few bugs
</ul>
Changes:
<ul>
<li>device driver interface expanded to support texture mapping
<li>faster matrix inversion subroutine
<li>commented out #include "wmesa_extend.h" from src/wmesa.c
<li>fixed many compiler warnings in the demo programs
</ul>

<h2>2.3  June 30, 1997</h2>
New:
<ul>
<li>Mesa distribution divided into two pieces:  library code and demos
<li>faster vertex transformation, clip testing, lighting
<li>faster line drawing
<li>TrueColor visuals how have dithering (for depths < 24 bits)
<li>added MESA_NO_DITHER environment variable
<li>new device driver function: NearFar(), RenderVB(), RasterSetup()
<li>added LynxOS configuration
<li>added cygnus Win32 configuration
<li>added texcyl.c GLUT demo
<li>added XMesaDitherColor() to X/Mesa interface
<li>new NURBS code from Bogdan Sikorski
<li>added demos/shape.c (non-rectangular X window!)
</ul>
Bug fixes:
<ul>
<li>glEnable/DisableClientState() were missing from GL/gl.h
<li>GL_SPHERE_MAP texcoord generation didn't work correctly
<li>glXGetConfig() returned wrong number of depth, stencil, accum bits
<li>glDrawPixels feedback/selection didn't examine RasterPos valid bit
<li>black and white were reversed on some monochrome displays
<li>fixed potential image memory leak (wasn't setting reference counter)
<li>glDrawPixels sometimes didn't recognize some GL state changes
<li>gluProject/UnProject() didn't check for divide by zero
<li>stex3d demo called random() and srandom(), not portable
<li>fixed memory leaks in context.c and drawpix.c
<li>fixed NULL dereferencing problem in gl_update_texture_state()
<li>glReadPixels between glBegin/glEnd didn't generate an error.
<li>fixed memory leak in polygon tesselator (Randy Frank)
<li>fixed seg fault bug drawing flat-shaded, depth-tested lines
<li>clipped GL_TRIANGLE_STRIPs sometimes had wrong color when flat-shaded
<li>glBindTexture sometimes didn't work
<li>fixed a bug deep in glXReleaseBuffersMESA()
<li>fog was mistakenly applied to alpha
<li>glPopMatrix didn't set "dirty matrix" flag
<li>glPolygonStipple pattern was sometimes wrong
<li>glClear wasn't disabled during feedback and selection
<li>fixed memory leak in glTexSubImage[123]D
</ul>
Changes:
<ul>
<li>many library source files reorganized
<li>faster X color allocation, colors also freed when finished with them
<li>new texture sampling function pointer in texture objects
<li>incorporated 3Dfx VooDoo driver v0.16 into main source tree
<li>many 3Dfx driver updates
<li>cygnus Makefiles now included
<li>updated DOS driver
<li>made a few changes to dosmesa.c and wmesa.c (VB-&gt;Unclipped)
<li>internally, colors now stored in GLubytes, not GLfixed
<li>optimized changing of GL_SHININESS parameter
</ul>

<h2>2.4  September 18, 1997</h2>
New:
<ul>
<li>updated 3Dfx Glide driver
<li>hacks for 3Dfx rendering into an X window or fullscreen
<li>added depth buffer access functions to X/Mesa and OS/Mesa interfaces
</ul>
Bug fixes:
<ul>
<li>pixel buffer could overflow with long, wide lines
<li>fixed FP underflow problems in lighting
<li>glTexSubImage1D() had an unitialized variable
<li>incomplete texture objects could cause a segfault
<li>glDrawPixels with GL_COMPILE_AND_EXECUTE caused infinite loop
<li>flat-shaded quads in a strip were miscolored if clipped
<li>mipmapped triangle lod computation now works correctly
<li>fixed a few under/overflow bugs in triangle rasterizer
<li>glArrayElement() assigned bad normal if normal array disabled
<li>changed argument to glXReleaseBuffersMESA()
<li>fixed small triangle underflow bugs in tritemp.h (hopefully)
<li>glBindTexture(target, 0) caused a crash
<li>glTexImage[123]D() with NULL image pointer caused crash
<li>glPixelStore parameters are now ignored during display list execution
<li>fixed a two-sided lighting w/ clipping bug (black vertices)
<li>textures with width!=height were sometimes mis-rendered
<li>"weird" projection matrices could cause div by 0, other fp errors
</ul>
Changes:
<ul>
<li>changed precompiled header symbol from PCH to PC_HEADER
<li>split api.c into api1.c and api2.c
<li>added hash.c source file (but not used yet)
<li>a few Sun and HP configuration file changes
<li>MESA_GLX_FX env var replaces MESA_FX_WINDOW and MESA_FX_FULLSCREEN
<li>fixed a few cygnus build problems (src/Makefile.cygnus, src/wmesa.c)
</ul>

<h2>2.5  November 20, 1997</h2>
New:
<ul>
<li>updated 3Dfx driver (v20) for GLQuake
<li>added GL_EXT_paletted_texture extension
<li>added GL_EXT_shared_texture_palette extension
<li>added GL_EXT_point_parameters extension
<li>now including Mark Kilgard's GLUT library v3.6
<li>new GLUT-based demos in gdemos/
<li>added a few more Unix config targets
<li>added Intel X86 assembly language vertex transformation code
<li>3Dfx/Glide driver for Mesa now recognizes SST_SCREENREFRESH env var
<li>Windows 95 S3 Virge driver
</ul>
Bug fixes:
<ul>
<li>glCopyTexImage?D would crash due to uninitialized variable
<li>glColor w/ glColorMaterial in a display list caused a bug
<li>fixed several glDrawPixels() and ReadPixels() bugs in 3Dfx driver
<li>glVertex4*() vertices weren't always projected correctly
<li>trying to use mipmapped textured points or lines caused crash
<li>glColor[34][fd]() values now clamped to [0,1] before int conversion
</ul>
Changes:
<ul>
<li>new device driver functions for texture mapping
<li>hash tables used for display list and texture object lookup
<li>fixed GLX visual handling code to avoid saving redundant visuals
<li>3Dfx Glide libraries automatically linked to libMesaGL.so
<li>dropped the Cirrus Logic Mondello code since it's obsolete
<li>updated Cygnus Makefiles (Stephane Rehel)
<li>updated Windows MSVC++ Makefiles (Oleg Letsinsky)
<li>procedure for making library files has changed: scripts now take
	a major and minor version arguments.  Make-config changed a lot.
<li>new implementation of glTexSubImage2D()
<li>updated widgets-mesa directory to create libMesaGLwM.a (Motif widget)
<li>separate linux-glide and linux-386-glide configurations
</ul>

<h2>2.6  February 12, 1998</h2>
New:
<ul>
<li>Windows WGL functions
<li>updated VMS, DOS, Windows, Cygnus, BeOS, Amiga compilation support
<li>v0.22 of 3Dfx Glide driver
<li>more X86 assembly language optimizations
<li>faster blending for some modes
<li>XMesaSetFXmode() to switch between 3Dfx window and full-screen mode
<li>added preliminary thread support
<li>added GLX_MESA_copy_sub_buffer extension
<li>some clipping optimizations
</ul>
Bug fixes:
<ul>
<li>fixed shading/material bug when drawing long primitive strips
<li>fixed clipping problem in long primitive strips
<li>fixed clipping bug when using 3Dfx driver
<li>fixed a problem when trying to use X fonts w/ 3Dfx driver
<li>fixed a texture filter bug in 3Dfx/Glide driver
<li>fixed bug in 3Dfx/Glide driver involving depth mask &amp; clearing
<li>glLoadMatrix to set projection matrix confused the 3Dfx driver
<li>non-identity texture matrices didn't work with linux-386 configs
<li>glGenTextures() didn't reserve the returned texture IDs
<li>NULL proxy image sent to glTexImageXD() caused crash
<li>added texture state validation optimization (Henk Kok)
<li>fixed colormap reuse problem when using both RGB and CI windows
<li>32bpp True/DirectColor X visuals weren't recognized
<li>fixed potential problem in evaluators memory allocation
<li>fixed assorted demo compilation bugs
</ul>
Changes:
<ul>
<li>replaced old Mesa/windows/ directory with Mesa/WIN32/ directory
<li>converted a few old glaux/gltk demos to GLUT
<li>renamed directories:  demos -&gt; xdemos,  gdemos -&gt; demos
</ul>


<h2>3.0  September 17, 1998</h2>
New:
<ul>
<li>OpenGL 1.2 API
<li>GL_EXT_abgr pixel format extension
<li>GL_SGIS_texture_edge_clamp extension
<li>GL_SGIS_multitexture extension (to be replaced by GL_ARB_multitex)
<li>GL_EXT_multitexture extension (to be replaced by GL_ARB_multitex)
<li>GL_EXT_rescale_normal extension and renormal.c demo
<li>GLX_SGI_video_sync extension (a no-op)
<li>antialiased lines
<li>glGetTexImage() now implemented
<li>glDraw/Copy/ReadPixels() optimizations
<li>optimized textured triangle code (Marten Stromberg)
<li>more optimization of dithered TrueColor triangles in X driver
<li>Linux GGI driver
<li>updated MGL driver
</ul>
Bug fixes:
<ul>
<li>lots of assorted compilation fixes
<li>glInitNames didn't write initial hit record
<li>glBitmap didn't always check for invalid raster position
<li>switching between GLX and OSMesa contexts caused a crash
<li>fixed uninitialized variable in Mesa widget code
<li>fixed typo in texture code which caused book/texgen to crash
<li>fixed texture sampling bug when filter=GL_LINEAR and wrap=GL_CLAMP
<li>gluDisk() in POINT or LINE mode sometimes failed
<li>fixed texture + fog bug
<li>GL_COMPILE_AND_EXECUTE mode didn't work reliably
<li>glMultMatrix in projection matrix mode w/ 3Dfx driver could fail
<li>glDrawPixels(color index pixels) weren't converted to RGBA
<li>fixed possible getenv() buffer overflow security bug
<li>glBitmap in feedback mode was offset by xOrig, yOrig params
<li>device driver's DrawPixels hook was never used
<li>glDrawPixels with zoomY!=1 and top/bottom clipping didn't work
<li>glDrawPixels optimized for GL_LUMINANCE, GL_LUMINANCE_ALPHA, GLubyte
<li>fixed MakeCurrent bug in GLwRedrawObjects() in MesaWorkstation.c
<li>glCopyTexSubImage2D() didn't work with 3Dfx driver
<li>lines with width = 2 could cause crash
<li>glClear with scissor rect sometimes cleared whole buffer
<li>glTexSubImage2D( .. GL_COLOR_INDEX .. ) didn't work
<li>glTexImageXD( .. GL_ABGR_EXT .. ) didn't work
<li>computation of inverse modelview matrix sometimes failed
<li>fixed GL_CLAMP mode texture sampling bug
<li>textured line interpolation was somewhat broken
<li>textured triangle interpolation was also somewhat broken
<li>glGet(MODELVIEW/PROJECTION/TEXTURE_MATRIX_STACK_DEPTH) off by one
<li>evaluator state wasn't fully initialized
<li>texture coordinate clipping was buggy
<li>evaluator surfaces could be mis-colored
<li>glAccum(GL_RETURN, s) didn't obey glColorMask() settings
<li>zero area polygons shouldn't be culled if polygon mode is point/line
<li>clipped width and height of glReadPixels was sometimes off by one
<li>blending with alpha = 0 or 1.0 wasn't always exact
<li>reading of pixels from clipped region was buggy
<li>minor tweaking of X visual management in GLX emulator
<li>glPolygonStipple now obeys pixel unpacking parameters
<li>glGetPolygonStipple now obeys pixel packing parameters
<li>interleaved vertex array texture coordinates were broken
<li>query of proxy texture internal format was broken
<li>alpha channel wasn't reliably cleared
<li>fixed divide by zero error in gluScaleImage if dest size = 1 x 1
</ul>
Conformance bug fixes:
<ul>
<li>GL_SELECTION_BUFFER_POINTER and GL_SELECTION_BUFFER_SIZE were missing
<li>GL_TEXTURE_INTERNAL_FORMAT was missing
<li>glGet*(GL_POLYGON_STIPPLE) was broken
<li>glPush/PopAttrib() didn't save/restore all texture state
<li>glBitmap in feedback mode didn't work
<li>feedback of texture coords didn't always work
<li>glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLbyte was broke
<li>glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLubyte was broke
<li>glDrawPixels w/ format=GL_STENCIL_INDEX, type=GL_BITMAP was broke
</ul>
Changes:
<ul>
<li>upgraded GLUT to version 3.7
<li>only GL and GLU library code included in MesaLib.tar.gz
<li>GLUT and all demos now in MesaDemos.tar.gz
<li>glaux and gltk libraries removed
<li>IRIX -n32 and -64 libs go in lib32/ and lib64/ directories
</ul>


<h2>3.1 beta 1  November 19, 1998</h2>
New:
<ul>
<li>GL_EXT_stencil_wrap extension
<li>GL_INGR_blend_func_separate extension
<li>GL_ARB_multitexture extension
<li>GL_NV_texgen_reflection extension
<li>newly optimized vertex transformation code
<li>updated GLUT 3.7 code
<li>better precision when using 32-bit Z buffer
<li>Allegro DJGPP driver
</ul>
Bug fixes:
<ul>
<li>glCopyPixels between front/back buffers didn't copy alpha correctly
<li>fixed out-of-bounds memory access in optimized 2-D texture code
<li>glPixelStorei didn't accept GL_PACK/UNPACK_IMAGE_HEIGHT parameter
<li>glGet*() didn't accept GL_MAX_3D_TEXTURE_SIZE parameter
<li>clipping of texture coordinates sometimes had bad R,Q values
<li>GL_CLAMP_TO_EDGE texture sampling was off by 0.5 texels
<li>glEdgeFlagPointer() now takes a GLvoid * instead of GLboolean *
<li>texture was sometimes applied twice with 3Dfx driver
<li>glPush/PopAttrib() fouled up texture object reference counts
<li>glDeleteLists(0, n) caused assertion failure
<li>bilinear texture sampling wasn't accurate enough
<li>glClear w/ glDepthMask(GL_FALSE) didn't work right on 3Dfx
<li>color components were reversed on big endian 32 bpp X visuals
</ul>
Changes:
<ul>
<li>removed GL_EXT_multitexture extension
</ul>


<h2>3.1 beta 2  May 24, 1999</h2>
New:
<ul>
<li>multi-textured points and lines (mjk@nvidia.com)
<li>optimized 24bpp X rendering (bernd.paysan@gmx.de)
<li>added allegro support (bernie-t@geocities.com)
<li>cleaned-up Windows-related stuff (Ted Jump)
<li>minor stereo changes (KendallB@scitechsoft.com)
<li>new BeOS driver which implements BGLView class
<li>new Direct3D driver (see src/D3D)
<li>more efficient filled gluCylinder() function
<li>utilities:  util/showbuffer.[ch] and util/glstate.[ch]
<li>fixed some IRIX compiler warnings
<li>added support for building Mesa in XFree86 with
	SGI's GLX (kevin@precisioninsight.com)
</ul>
Bug fixes:
<ul>
<li>a variety of Windows/Mesa bug fixes (mjk@nvidia.com)
<li>packed pixel images weren't unpacked correctly
<li>patches some win32 files in GLUT (mjk@nvidia.com)
<li>glTexImage[123]D() didn't accept internalFormat == GL_COLOR_INDEX
<li>fixed lighting bug in Keith's new shading code
<li>fixed texture segfault seen in Lament screensaver
<li>fixed miscellaneous low-memory bugs
<li>glClear(GL_COLOR_BUFFER_BIT) with RGBA or CI masking was broken
<li>GL_LINEAR sampling of 3D textures was broken
<li>fixed SVR4 'cc' compiler macro problem (dawes@xfree86.org)
<li>added GL_TEXTURE_PRIORITY fix (keithh@netcomuk.co.uk)
<li>fixed wide point and wide line conformance bugs (brianp)
</ul>
Changes:
<ul>
<li>some device driver changes (see src/dd.h)
<li>new copyright on core Mesa code
</ul>


<h2>3.1 beta 3  September 17, 1999</h2>
New:
<ul>
<li>optimized glAccum function
<li>optimized 24bpp rendering in XMesa driver
<li>GLU 1.2 polygon tessellator
</ul>
Bug Fixes:
<ul>
<li>glGetTexLevelParameter wasn't fully implemented
<li>glXUseXFont now handles multi-byte fonts
<li>glIsEnabled(GL_TEXTURE_2D / 3D) returned wrong result
<li>alpha channel of blending points, lines was sometimes incorrect
</ul>
Changes:
<ul>
<li>New library names:  "libGL" instead of "libMesaGL"
<li>New library numbering: libGL.so.1.2.310
<li>New subdirectories:  docs/ and bin/
<li>New Makefile-system (autoconf,automake,libtool)
</ul>


<h2>3.1 final  December 14, 1999</h2>
New:
<ul>
<li>added demos/gloss.c
<li>added xdemos/glxdpyinfo.c
<li>added GLX_ARB_get_proc_address extension
<li>rewritten glTexImage code paths (faster, less memory, bug fixes)
</ul>
Bug Fixes:
<ul>
<li>several vertex array bug fixes
<li>overlapping glCopyPixels with pixel zooming now works
<li>glXUseXFont() bitmaps were vertically shifted by one pixel
<li>glCopyPixels with pixel zooming now works
</ul>


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


<h2>3.2.1  July 19, 2000</h2>
Bug fixes:
<ul>
<li>gluBuild2DMipmaps() didn't accept GL_BGRA
<li>Fixed compile/makefile problems on IRIX
<li>fixed segfault in 3dfx driver when using GL selection/feedback
<li>no longer cull very, very tiny triangles
<li>blending w/ drawbuffer==GL_FRONT_BACK caused segfault (sw rendering)
<li>fixed Motif detection code in widgets-mesa/configure.in
<li>glColorMaterial and glMaterial updates to emissive and ambient
	  didn't always work right
<li>Specular highlights weren't always in the right place
<li>clipped GL_LINE mode polygons had interior lines appear
<li>blend term GL_ONE_MINUS_CONSTANT_ALPHA was broken
<li>GL_NICEST fog didn't always work with flat shading
<li>glRect commands in display lists were sometimes miscolored
<li>Line Z offset didn't always work
<li>fixed texgen normal vector problem (gloss's teapot)
<li>numerous GL conformance bugs fixed
</ul>
Changes:
<ul>
<li>glColorMask(false, false, false, false) handled better/faster
<li>reverted to old GLU polygon tessellator, GLU 1.1
<li>updated Win32 build files
</ul>


<h2>3.3  July 21, 2000</h2>
New:
<ul>
<li>antialiased triangles now implemented
<li>GL_EXT_texture_env_add texture mode extension
<li>GLX 1.3 API
<li>support for separate draw/read buffers (ie GL_SGI_make_current_read)
<li>thread-safe API dispath
<li>improved glxinfo program
<li>demos/texdown program to measure texture download performance
<li>glext.h header file
<li>demos/geartrain program
<li>GL_EXT_texture_lod_bias extension
<li>demos/lodbias program
<li>further optimized glRead/DrawPixels for 16-bit TrueColor X visuals
<li>GLX_EXT_visual_rating extension (a no-op, however)
<li>GL_HP_occlusion_test extension (for X and OS/Mesa drivers)
<li>demos/occlude program
<li>GL_SGIS_pixel_texture and GL_SGIX_pixel_texture extensions
<li>demos/pixeltex program
<li>GL_SGI_color_matrix extension
<li>GL_SGI_color_table extension
<li>GL_EXT_histogram extension
<li>GL_ARB_texture_cube_map extension
<li>added xdemos/glxheads and xdemos/manywin
<li>demos/texenv.c demo
<li>GL_EXT_texture_env_combine extension (by Holger Waechtler)
<li>Xlib driver is now thread-safe (see xdemos/glthreads)
</ul>
Bug Fixes:
<ul>
<li>various GL conformance failures fixed since 3.2.1
</ul>
Changes:
<ul>
<li>gl.h now uses #defines instead of C enums for all tokens
<li>glu.h now uses #defines instead of C enums for all tokens
<li>moved programs from 3Dfx/demos/ into demos/ directory
</ul>


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


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


<h2>3.4.2  May 17, 2001</h2>
Bug fixes:
<ul>
<li>deleting the currently bound texture could cause bad problems
<li>using fog could result in random vertex alpha values
<li>AA triangle rendering could touch pixels outside right window bound
<li>fixed byteswapping problem in clear_32bit_ximage() function
<li>fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam
<li>fixed memory leak in glXUseXFont()
<li>fragment sampling in AA triangle function was off by 1/2 pixel
<li>Windows: reading pixels from framebuffer didn't always work
<li>glConvolutionFilter2D could segfault or cause FP exception
<li>fixed segfaults in FX and X drivers when using tex unit 1 but not 0
<li>GL_NAND logicop didn't work right in RGBA mode
<li>fixed a memory corruption bug in vertex buffer reset code
<li>clearing the softwara alpha buffer with scissoring was broken
<li>fixed a few color index mode fog bugs
<li>fixed some bad assertions in color index mode
<li>fixed FX line 'stipple' bug #420091
<li>fixed stencil buffer clear width/height typo
<li>fixed GL error glitches in gl[Client]ActiveTextureARB()
<li>fixed Windows compilation problem in texutil.c
<li>fixed 1/8-pixel AA triangle sampling error
</ul>
Changes:
<ul>
<li>optimized writing mono-colored pixel spans to X pixmaps
<li>increased max viewport size to 2048 x 2048
</ul>


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


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


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


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


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


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


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


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


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


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


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


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


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


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


<h2>6.2  October 2, 2004</h2>
New:
<ul>
<li>enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle)
<li>updated Doxygen support (Jose Fonseca)
</ul>
Changes:
<ul>
<li>some GGI driver updates (Christoph Egger, bug 1025977)
</ul>
Bug fixes:
<ul>
<li>Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features
<li>fixed a few compilation issues on IRIX
<li>fixed a matrix classification bug (reported by Wes Bethel)
<li>we weren't reseting the vertex/fragment program error state
	  before parsing (Dave Reveman)
<li>adjust texcoords for sampling texture rectangles (Dave Reveman)
<li>glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented
<li>repeated calls to glDeleteTexture(t) could lead to a crash
<li>fixed potential ref count bugs in VBOs and vertex/fragment programs
<li>spriteblast demo didn't handle window size changes correctly
<li>glTexSubImage didn't handle pixels=NULL correctly for PBOs
<li>fixed color index mode glDrawPixels bug (Karl Schultz)
</ul>


<h2>6.2.1  December 9, 2004</h2>
Bug fixes:
<ul>
<li>don't apply regular fog or color sum when using a fragment program
<li>glProgramEnvParameter4fARB always generated an error on
	  GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645)
<li>glVertexAttrib3svNV and glVertexAttrib3svARB were broken
<li>fixed width/height mix-up in glSeparableFilter2D()
<li>fixed regression in glCopyPixels + convolution
<li>glReadPixels from a clipped front color buffer didn't always work
<li>glTexImage didn't accept GL_RED/GREEN/BLUE as the format
<li>Attempting queries/accesses of VBO 0 weren't detected as errors
<li>paletted textures failed if the palette had fewer than 256 entries
</ul>
Changes:
<ul>
<li>fixed a bunch of compiler warnings found with gcc 3.4
<li>bug reports should to go bugzilla.freedesktop.org
</ul>


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


<h2>6.3.1</h2>
<p>
This was an intermediate release for X.org which wasn't otherwise released.)
</p>


<h2>6.3.2  August 19, 2005</h2>
New:
<ul>
<li>The distribution now includes the DRI drivers and GLX code
</ul>
Changes:
<ul>
<li>Made the DRI "new" driver interface standard, remove old code
</ul>
Bug fixes:
<ul>
<li>GL_ARB_vertex/fragment_shader were mistakenly listed in the
	  extensions string
<li>negative relative addressing in vertex programs was broken
<li>update/fix SPARC assembly code for vertex transformation
<li>fixed memory leak when freeing GLX drawables/renderbuffers
<li>fixed display list memory leak
<li>the GL_PIXEL_MAP_I_TO_I table is now floating point, not integer
<li>wglGetProcAddress() didn't handle wgl-functions
<li>fixed glxext.h cross-compile issue (Colin Harrison)
<li>assorted DRI driver fixes
</ul>


<b>
NOTE: Changes for Mesa 6.4 and later are documented in the corresponding
<a href="relnotes.html">release notes</a> file.
</b>

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