<!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 accommodate 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 accommodate 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>
