diff --git a/docs/VERSIONS b/docs/VERSIONS
new file mode 100644
index 0000000..bff7224
--- /dev/null
+++ b/docs/VERSIONS
@@ -0,0 +1,653 @@
+$Id: VERSIONS,v 1.9 1999/07/20 00:28:57 brianp Exp $
+
+
+Mesa Version History
+====================
+
+1.0 beta   February 1995
+    Initial release
+
+1.1 beta   March 4, 1995
+    Changes:
+	faster point and line drawing (2x faster)
+	more systems supported, better Makefiles
+	Renamed lib*.a files to avoid collisions
+	many small bug fixes
+    New:
+	pseudo-GLX functions added
+	new implementation of evaluators (eval2.c)
+	GLUT support
+
+1.1.1 beta   March 7, 1995
+    Changes:
+	Reverted from eval2.c to eval.c due to FPE on Linux
+	more speed improvements
+	more Makefile changes
+
+1.1.2 beta   March 14, 1995
+    New:
+	implementation of SGI's blending extensions
+	glXUseXFont implemented
+	added MESA_DEBUG environment variable support
+    Changes:
+	Using eval2.c again
+	more FPE-prevention checks (0-length normals are OK)
+	a few small bug fixes
+	much faster pixel logic ops!
+	faster transformation arithmetic
+
+1.1.3 beta   March 31, 1995
+    New:
+	gluScaleImage() and gluBuild2DMipMaps() implemented
+	Mesa widgets for Xt/Motif
+	blendEXT demos
+	added environment variables for selecting visuals
+    Changes:
+	almost all GLUT demos work correctly now
+	faster X device driver functions
+	more bug fixes
+
+1.1.4 beta   April 20, 1995
+    Bug fixes:
+	- missing #define SEEK_SET in src-tk/image.c
+	- compile glShadeModel into display lists
+	- fixed pow() domain error in src/light.c
+	- fixed "flickering bitmaps" in double buffer mode
+	- fixed tk.h and aux.h for C++
+	- state of LIGHT_MODEL_LOCAL_VIEWER was inverted
+    New features:
+	- MUCH, MUCH nicer dithering in 8-bit RGB mode
+	- updated widgets and widget demos
+	- Implemented GLXPixmap functions
+	- Added GLU 1.1 and GLX 1.1 functions
+	- Changed the X/Mesa interface API, more versatile
+	- Implemented gluPartialDisk()
+
+1.2   May 22, 1995
+    Bug fixes:
+	- IRIX 4.x makefile problem
+	- modified tk to share root colormap as needed
+	- gluLookAt normalization problem
+	- suppress Expose, NoExpose events in swapbuffers
+	- glBitmap() and glDrawPixels() clipping
+    New features:
+	- GL_BLEND, GL_MODULATE, GL_DECAL, and GL_REPLACE_EXT texture
+	      modes implemented
+	- texture maps stored more efficiently
+	- texture maps can be compiled into display lists
+	- Bogdan Sikorski's GLU polygon tesselation code
+	- Linas Vepstas's sweep and extrusion library
+	- glXCreateContext()'s shareList parameter works as it's supposed to.
+	      XMesaCreateContext() updated to accept a shareList parameter too.
+	- Mesa can be compiled with real OpenGL .h files
+	- MESA_BACK_BUFFER environment variable
+	- better GLX error checking
+
+1.2.1   June 22, 1995
+    Bug fixes:
+	- X/Mesa double buffer window resize crash
+	- widgets now pass PointerMotion events
+	- X/Mesa incorrect default clear color and drawing color
+	- more robust X MIT-SHM support in X/Mesa
+	- glTexImage( format=GL_LUMINANCE ) didn't work
+	- GL_LINE mode polygons with line width > 1.0 could cause a crash
+	- numerous feedback bugs
+	- glReadPixels() from depth buffer was wrong
+	- error prone depth and stencil buffer allocation
+    New features:
+	- Preliminary Microsoft Windows driver
+	- Implemented a number of missing functions: glEvalCoord[12][df]v(),
+	    glGet...(), etc.
+	- Added a few missing symbols to gl.h and glu.h
+	- Faster rendering of smooth-shaded, RGBA, depth-buffered polygons.
+	- Faster rendering of lines when width=2.0
+	- Stencil-related functions now work in display lists
+    Changes:
+	- renamed aux.h as glaux.h (MS-DOS names can't start with aux)
+	- most filenames are in 8.3 format to accomodate MS-DOS
+	- use GLubytes to store arrays of colors instead of GLints
+
+1.2.2   August 2, 1995
+    New features:
+	- texture mapped points and lines
+	- NURBS! (but not 100% complete)
+	- viewports may safely extend beyond window boundaries
+	- MESA_PRIVATE_CMAP environment variable
+	- Grayscale X display support
+	- two new demos:  demos/gears.c and demos/shadow.c
+	- MachTen for Macintosh configuration
+    Bug fixes:
+	- glGet*(GL_DEPTH_BITS) returned bytes, not bits
+	- point, line, and bitmap rasterization suffered from roundoff errors
+	- fixed a division by zero error in line clippping
+	- occasional wrong default background color really fixed!
+	- glDepthFunc(GL_ALWAYS) with glDepthMask(GL_FALSE) didn't work
+	- gluBuild2DMipmaps malloc problem fixed
+	- view volume clipping of smooth shaded lines resulted in bad colors
+    Changes:
+	- new visual selection method in glXChooseVisual()
+	- improved GLU quadric functions
+	- call XSync for glFinish and XFlush for glFlush
+	- glVertex() calls now use a function pointer to avoid conditionals
+	- removed contrib directory from Mesa tar file (available on ftp site)
+	- AIX shared library support
+	- Removed GLUenum type as it's not in OpenGL
+
+1.2.3   September 26, 1995
+    New features:
+	- Mesa header files now equivalent to SGI OpenGL headers
+	- Support for HP's Color Recovery dithering displays
+	- Faster vertex transformation
+	- Faster raster operations into X windows under certain conditions
+	- New configurations:  HP w/ shared libs, Ultrix w/ GCC, Data General
+	- 4-bit visuals now supported
+    Bug fixes:
+	- glScissor bug fixed
+	- round-off errors in clipping lines against clip planes fixed
+	- byte swapping between hosts and display servers implemented
+	- glGetError() can be called without a current rendering context
+	- problem with accidentally culled polygons is fixed
+	- fixed some widget compilation problems
+
+1.2.4   November 17, 1995
+    New features:
+	- More speed improvements (lighting, fogging, polygon drawing)
+	- Window system and OS-independent off-screen rendering
+	- Preliminary Fortran bindings
+	- glPolygonOffsetEXT implemented
+	- glColorMask and glIndexMask now fully implemented
+	- glPixelZoom implemented
+	- display lists fully implemented
+	- gamma correction
+	- dithering in 8-bit TrueColor/DirectColor visuals
+    Changes:
+	- Improved device driver interface
+	- tk.h renamed to gltk.h to avoid conflicts with Tcl's Tk
+	- Dithering support moved from core into device driver
+    Bug fixes:
+	- glEnable/Disable( GL_LIGHTING ) didn't always take effect
+	- glReadPixels byte swapping was broken
+	- glMaterial with pname==GL_AMBIENT_AND_DIFFUSE was broken
+	- duplicate glColor4b() prototype in GL/gl.h removed
+	- stripes in wave -ci demo fixed
+	- GL_LINEAR_MIPMAP_NEAREST had wrong value
+	- bugs in HP Color Recovery support fixed
+	- fixed bug when blending lines, points, bitmaps outside of window
+
+1.2.5   November 30, 1995
+    New Features:
+	- updated MS Windows driver
+	- new implementation of StaticGray/GrayScale visual support
+    Bug fixes:
+	- pixelzooming with gamma correction or blending didn't work
+	- HP color recovery visual wasn't being picked by glXChooseVisual
+	- glClear didn't always observe glColorMask changes
+	- olympic and offset demos didn't compile on some Suns
+	- texcoord clamping wasn't correct
+	- a polygon optimization introduced an occasional sampling problem
+
+1.2.6   January 26, 1996
+    New Features:
+	- faster line and polygon rendering under certain conditions.  See
+	  Performance Tips 9 and 10 in README
+	- profiling
+	- lighting is a bit faster
+	- better perspective corrected texture mapping
+	- Amiga AmiWin (X11) support
+	- preliminary Linux SVGA driver
+    Changes:
+	- now using a 16-bit depth buffer, faster, smaller
+	- GL_NORMALIZE is disabled by default
+    Bug fixes:
+	- projective texture mapping
+	- fixed a memory leak in the context destroy function
+	- GL_POLYGON with less than 3 vertices caused a crash
+	- glGet*() returned wrong result for GL_INDEX_MODE
+	- reading pixels from an unmapped X window caused a BadMatch error
+
+1.2.7   March 5, 1996
+    New:
+	- faster lighting
+	- faster 16-bit TrueColor rendering on Linux
+	- faster 32-bit TrueColor rendering on Linux, HP, IBM
+	- non-depth-buffered XImage polygons are faster
+	- vertex array extension
+	- software alpha planes
+	- updated Macintosh driver
+	- new NeXT driver
+	- GLU quadric functions generate texture coordinates
+	- reflect.c demo - reflective, textured surface demo
+    Changes:
+	- gamma correction code moved into the X driver for better performance
+    Bug fixes:
+	- multiple glClipPlane()'s didn't work reliably
+	- glPolygonMode() didn't always work
+	- glCullFace( GL_FRONT_AND_BACK ) didn't work
+	- texture mapping with gamma correction was buggy
+	- floating point exceptions in texture coordinate interpolation
+	- XImage byte swapping didn't always work
+	- polygon edge flags weren't always used correctly
+
+1.2.8   May 22, 1996
+    New:
+	- overlay planes on X servers with the SERVER_OVERLAY_VISUALS property
+	- better monochrome output
+	- more IRIX 6.x configurations
+	- more robust RGB mode color allocation
+	- added MESA_XSYNC environment variable
+	- GLX_MESA_pixmap_colormap and GLX_EXT_visual_info extensions
+	- GL_MESA_window_pos extension
+	- faster glReadPixels/glDrawPixels for GL_DEPTH and GL_UNSIGNED_SHORT
+	  and GL_UNSIGNED_INT
+        - driver for prototype Cirrus Mondello 3-D board
+	- updated AmigaDOS driver
+        - a few small speed optimizations in polygon rendering
+    Changes:
+	- internal device driver interface modified to simplify device
+	  driver implementations and to support hardware Z buffers
+	- several changes to the X/Mesa interface (xmesa.h)
+    Bug fixes:
+	- fixed pow(0,0) domain error triggered on some systems
+	- glStencilClear() in a display list caused an infinite loop
+	- glRasterPos*() was sometimes off by +/-0.5 in X and Y
+	- color masking and blending were performed in wrong order
+	- auxSolidCylinder() sometimes drew a wire-frame cylinder
+	- fixed file writing bug in osdemo.c
+	- pixel mapping didn't always work
+	- the GL_GEQUAL stencil func didn't work
+	- the GL_INVERT stencil op didn't work
+	- the stencil write mask didn't work
+	- glPush/PopAttrib() didn't do enough error checking
+	- glIsList() didn't always work correctly
+
+2.0  October 10, 1996
+    New:
+	- Implements OpenGL 1.1 API functions
+	- all texture filtering modes supported (mipmapping)
+	- faster texture mapping, see Performance Tip 11 in README
+	- antialiased RGB points
+	- X support for line and polygon stippling
+	- glDrawBuffer( GL_FRONT_AND_BACK ) works
+	- util/ directory of useful stuff
+	- demos/texobj demo of texture objects
+    Changes:
+	- major internal changes for thread-safeness
+	- new device driver interface
+	- MESA_ALPHA env variable removed
+	- triangle rasterizer replaces polygon rasterizer
+    Bug fixes:
+	- glPopAttrib() bug
+	- glDrawBuffer(GL_NONE) works now
+
+2.1  December 14, 1996
+    New:
+	- VMS support
+	- MS-DOS driver
+	- OpenStep support
+	- updated, combined Windows 95/NT driver
+	- implemented glGetLighti() and glGetTexGen*()
+	- GLX does garbage collection of ancillary buffers
+    Bug fixes:
+	- removed unused _EXT constants from gl.h
+	- fixed polygon offset bugs
+	- Z coordinates of clipped lines were incorrect
+	- glEdgeFlag() in display lists didn't always work
+	- glLight*() in display lists didn't work
+	- fixed X line stipple bugs (Michael Pichler)
+	- glXUseXfonts XFreeFont/XFreeFontInfo bug fixed
+	- fixed a feedback bug
+	- glTexGen*() now transforms GL_EYE_PLANE by inverse modelview matrix
+	- polygons were sometimes culled instead of clipped
+	- triangle rasterizer suffered from float/int overflow exceptions
+	- fixed FP underflow exception in lighting (specular exponent)
+	- glEnable/glDisable of GL_EXT_vertex_array enums didn't work
+	- fixed free(NULL) in GLU tesselator code
+	- using 24-bit color on some X servers resulted in garbage rendering
+	- 32-bit per pixel mode for XFree86 now works
+	- glRotate(a,0,0,0) gave unpredictable results
+	- GL_LINE_STRIP with > 480 vertices had occasional clipping problems
+	- 8-bit TrueColor GLXPixmap rendering incorrectly required a colormap
+	- glMaterial() wasn't ignored when GL_COLOR_MATERIAL was enabled
+	- glEnable(GL_COLOR_MATERIAL) followed by glColor() didn't work right
+	- accumulation buffer was limited to positive values
+	- projective textures didn't work
+	- selection buffer overflows weren't handled correctly
+    Changes:
+	- restored the GL_EXT_polygon_offset extension
+	- slightly faster RGB dithering
+	- the SVGA driver works again
+	- Amiga driver now distributed separately
+	- NeXT driver updated for Mesa 2.x
+
+2.2  March 14, 1997
+    New:
+	- better color selection when dithering
+	- added GL_EXT_texture_object extension
+	- updated MS-DOS driver for DJGPP
+	- added openbsd make configuration
+	- faster dithered flat-shaded triangles
+	- various compilation problems with Motif widgets fixed
+	- gl.h, glx.h and glu.h name mangling option
+	- BeOS driver
+	- 3D texture mapping extension
+	- GL_MESA_resize_buffers extension
+	- morph3d, stex3d and spectex demos
+	- 3Dfx support
+    Bug fixes:
+	- glColorMaterial should finally work right in all respects
+	- linear interpolation of mipmap levels was incorrectly weighted
+	- readpix.c didn't compile on Macintosh
+	- GL_INVERT and related logic ops didn't work right
+	- glTexImage[12]D() didn't check its parameters consistantly
+	- fixed a memory leak in glTexImage[12]D()
+	- kludged around a SunOS 5.x/GCC compiler bug in the feedback code
+	- glReadPixels aborted instead of normally catching some errors
+	- a few 1.1 constants were missing or misnamed in gl.h
+	- glBegin(p); glBegin(q); didn't generate an error
+	- fixed a memory leak in GLX code
+	- clipping of concave polygons could cause a core dump
+	- 1-component alpha texture maps didn't work
+	- fixed a GLU polygon tesselator bug
+	- polygons with colinear vertices were sometimes culled
+	- feedback triangle colors were wrong when using smooth shading
+	- textures with borders didn't work correctly
+	- colors returned in feedback mode were wrong when using lighting
+	- spotlights didn't effect ambient lighting correctly
+	- gluPartialDisk() had a few bugs
+    Changes:
+	- device driver interface expanded to support texture mapping
+	- faster matrix inversion subroutine
+	- commented out #include "wmesa_extend.h" from src/wmesa.c
+	- fixed many compiler warnings in the demo programs
+
+2.3  June 30, 1997
+    New:
+	- Mesa distribution divided into two pieces:  library code and demos
+	- faster vertex transformation, clip testing, lighting
+	- faster line drawing
+	- TrueColor visuals how have dithering (for depths < 24 bits)
+	- added MESA_NO_DITHER environment variable
+	- new device driver function: NearFar(), RenderVB(), RasterSetup()
+	- added LynxOS configuration
+	- added cygnus Win32 configuration
+	- added texcyl.c GLUT demo
+	- added XMesaDitherColor() to X/Mesa interface
+	- new NURBS code from Bogdan Sikorski
+	- added demos/shape.c (non-rectangular X window!)
+    Bug fixes:
+	- glEnable/DisableClientState() were missing from GL/gl.h
+	- GL_SPHERE_MAP texcoord generation didn't work correctly
+	- glXGetConfig() returned wrong number of depth, stencil, accum bits
+	- glDrawPixels feedback/selection didn't examine RasterPos valid bit
+	- black and white were reversed on some monochrome displays
+	- fixed potential image memory leak (wasn't setting reference counter)
+	- glDrawPixels sometimes didn't recognize some GL state changes
+	- gluProject/UnProject() didn't check for divide by zero
+	- stex3d demo called random() and srandom(), not portable
+	- fixed memory leaks in context.c and drawpix.c
+	- fixed NULL dereferencing problem in gl_update_texture_state()
+	- glReadPixels between glBegin/glEnd didn't generate an error.
+	- fixed memory leak in polygon tesselator (Randy Frank)
+	- fixed seg fault bug drawing flat-shaded, depth-tested lines
+	- clipped GL_TRIANGLE_STRIPs sometimes had wrong color when flat-shaded
+	- glBindTexture sometimes didn't work
+	- fixed a bug deep in glXReleaseBuffersMESA()
+	- fog was mistakenly applied to alpha
+	- glPopMatrix didn't set "dirty matrix" flag
+	- glPolygonStipple pattern was sometimes wrong
+	- glClear wasn't disabled during feedback and selection
+	- fixed memory leak in glTexSubImage[123]D
+    Changes:
+	- many library source files reorganized
+	- faster X color allocation, colors also freed when finished with them
+	- new texture sampling function pointer in texture objects
+	- incorporated 3Dfx VooDoo driver v0.16 into main source tree
+	- many 3Dfx driver updates
+	- cygnus Makefiles now included
+	- updated DOS driver
+	- made a few changes to dosmesa.c and wmesa.c (VB->Unclipped)
+	- internally, colors now stored in GLubytes, not GLfixed
+	- optimized changing of GL_SHININESS parameter
+
+2.4  September 18, 1997
+    New:
+	- updated 3Dfx Glide driver
+	- hacks for 3Dfx rendering into an X window or fullscreen
+	- added depth buffer access functions to X/Mesa and OS/Mesa interfaces
+    Bug fixes:
+	- pixel buffer could overflow with long, wide lines
+	- fixed FP underflow problems in lighting
+	- glTexSubImage1D() had an unitialized variable
+	- incomplete texture objects could cause a segfault
+	- glDrawPixels with GL_COMPILE_AND_EXECUTE caused infinite loop
+	- flat-shaded quads in a strip were miscolored if clipped
+	- mipmapped triangle lod computation now works correctly
+	- fixed a few under/overflow bugs in triangle rasterizer
+	- glArrayElement() assigned bad normal if normal array disabled
+	- changed argument to glXReleaseBuffersMESA()
+	- fixed small triangle underflow bugs in tritemp.h (hopefully)
+	- glBindTexture(target, 0) caused a crash
+	- glTexImage[123]D() with NULL image pointer caused crash
+	- glPixelStore parameters are now ignored during display list execution
+	- fixed a two-sided lighting w/ clipping bug (black vertices)
+	- textures with width!=height were sometimes mis-rendered
+	- "weird" projection matrices could cause div by 0, other fp errors
+    Changes:
+	- changed precompiled header symbol from PCH to PC_HEADER
+	- split api.c into api1.c and api2.c
+	- added hash.c source file (but not used yet)
+	- a few Sun and HP configuration file changes
+	- MESA_GLX_FX env var replaces MESA_FX_WINDOW and MESA_FX_FULLSCREEN
+	- fixed a few cygnus build problems (src/Makefile.cygnus, src/wmesa.c)
+
+2.5  November 20, 1997
+    New:
+	- updated 3Dfx driver (v20) for GLQuake
+	- added GL_EXT_paletted_texture extension
+	- added GL_EXT_shared_texture_palette extension
+	- added GL_EXT_point_parameters extension
+	- now including Mark Kilgard's GLUT library v3.6
+	- new GLUT-based demos in gdemos/
+	- added a few more Unix config targets
+	- added Intel X86 assembly language vertex transformation code
+	- 3Dfx/Glide driver for Mesa now recognizes SST_SCREENREFRESH env var
+	- Windows 95 S3 Virge driver
+    Bug fixes:
+	- glCopyTexImage?D would crash due to uninitialized variable
+	- glColor w/ glColorMaterial in a display list caused a bug
+	- fixed several glDrawPixels() and ReadPixels() bugs in 3Dfx driver
+	- glVertex4*() vertices weren't always projected correctly
+	- trying to use mipmapped textured points or lines caused crash
+	- glColor[34][fd]() values now clamped to [0,1] before int conversion
+    Changes:
+	- new device driver functions for texture mapping
+	- hash tables used for display list and texture object lookup
+	- fixed GLX visual handling code to avoid saving redundant visuals
+	- 3Dfx Glide libraries automatically linked to libMesaGL.so
+	- dropped the Cirrus Logic Mondello code since it's obsolete
+	- updated Cygnus Makefiles (Stephane Rehel)
+	- updated Windows MSVC++ Makefiles (Oleg Letsinsky)
+	- procedure for making library files has changed: scripts now take
+	  a major and minor version arguments.  Make-config changed a lot.
+	- new implementation of glTexSubImage2D()
+	- updated widgets-mesa directory to create libMesaGLwM.a (Motif widget)
+	- separate linux-glide and linux-386-glide configurations
+
+2.6  February 12, 1998
+    New:
+	- Windows WGL functions
+	- updated VMS, DOS, Windows, Cygnus, BeOS, Amiga compilation support
+	- v0.22 of 3Dfx Glide driver
+	- more X86 assembly language optimizations
+	- faster blending for some modes
+	- XMesaSetFXmode() to switch between 3Dfx window and full-screen mode 
+	- added preliminary thread support
+	- added GLX_MESA_copy_sub_buffer extension
+	- some clipping optimizations
+    Bug fixes:
+	- fixed shading/material bug when drawing long primitive strips
+	- fixed clipping problem in long primitive strips
+	- fixed clipping bug when using 3Dfx driver
+	- fixed a problem when trying to use X fonts w/ 3Dfx driver
+	- fixed a texture filter bug in 3Dfx/Glide driver
+	- fixed bug in 3Dfx/Glide driver involving depth mask & clearing
+	- glLoadMatrix to set projection matrix confused the 3Dfx driver
+	- non-identity texture matrices didn't work with linux-386 configs
+	- glGenTextures() didn't reserve the returned texture IDs
+	- NULL proxy image sent to glTexImageXD() caused crash
+	- added texture state validation optimization (Henk Kok)
+	- fixed colormap reuse problem when using both RGB and CI windows
+	- 32bpp True/DirectColor X visuals weren't recognized
+	- fixed potential problem in evaluators memory allocation
+	- fixed assorted demo compilation bugs
+    Changes:
+	- replaced old Mesa/windows/ directory with Mesa/WIN32/ directory
+	- converted a few old glaux/gltk demos to GLUT
+	- renamed directories:  demos -> xdemos,  gdemos -> demos
+
+
+3.0  September 17, 1998
+    New:
+	- OpenGL 1.2 API
+	- GL_EXT_abgr pixel format extension
+	- GL_SGIS_texture_edge_clamp extension
+	- GL_SGIS_multitexture extension (to be replaced by GL_ARB_multitex)
+	- GL_EXT_multitexture extension (to be replaced by GL_ARB_multitex)
+	- GL_EXT_rescale_normal extension and renormal.c demo
+	- GLX_SGI_video_sync extension (a no-op)
+	- antialiased lines
+	- glGetTexImage() now implemented
+	- glDraw/Copy/ReadPixels() optimizations
+	- optimized textured triangle code (Marten Stromberg)
+	- more optimization of dithered TrueColor triangles in X driver
+	- Linux GGI driver
+	- updated MGL driver
+    Bug fixes:
+	- lots of assorted compilation fixes
+	- glInitNames didn't write initial hit record
+	- glBitmap didn't always check for invalid raster position
+	- switching between GLX and OSMesa contexts caused a crash
+	- fixed uninitialized variable in Mesa widget code
+	- fixed typo in texture code which caused book/texgen to crash
+	- fixed texture sampling bug when filter=GL_LINEAR and wrap=GL_CLAMP
+	- gluDisk() in POINT or LINE mode sometimes failed
+	- fixed texture + fog bug
+	- GL_COMPILE_AND_EXECUTE mode didn't work reliably
+	- glMultMatrix in projection matrix mode w/ 3Dfx driver could fail
+	- glDrawPixels(color index pixels) weren't converted to RGBA
+	- fixed possible getenv() buffer overflow security bug
+	- glBitmap in feedback mode was offset by xOrig, yOrig params
+	- device driver's DrawPixels hook was never used
+	- glDrawPixels with zoomY!=1 and top/bottom clipping didn't work
+	- glDrawPixels optimized for GL_LUMINANCE, GL_LUMINANCE_ALPHA, GLubyte
+	- fixed MakeCurrent bug in GLwRedrawObjects() in MesaWorkstation.c
+	- glCopyTexSubImage2D() didn't work with 3Dfx driver
+	- lines with width = 2 could cause crash
+	- glClear with scissor rect sometimes cleared whole buffer
+	- glTexSubImage2D( .. GL_COLOR_INDEX .. ) didn't work
+	- glTexImageXD( .. GL_ABGR_EXT .. ) didn't work
+	- computation of inverse modelview matrix sometimes failed
+	- fixed GL_CLAMP mode texture sampling bug
+	- textured line interpolation was somewhat broken
+	- textured triangle interpolation was also somewhat broken
+	- glGet(MODELVIEW/PROJECTION/TEXTURE_MATRIX_STACK_DEPTH) off by one
+	- evaluator state wasn't fully initialized
+	- texture coordinate clipping was buggy
+	- evaluator surfaces could be mis-colored
+	- glAccum(GL_RETURN, s) didn't obey glColorMask() settings
+	- zero area polygons shouldn't be culled if polygon mode is point/line
+	- clipped width and height of glReadPixels was sometimes off by one
+	- blending with alpha = 0 or 1.0 wasn't always exact
+	- reading of pixels from clipped region was buggy
+	- minor tweaking of X visual management in GLX emulator
+	- glPolygonStipple now obeys pixel unpacking parameters
+	- glGetPolygonStipple now obeys pixel packing parameters
+	- interleaved vertex array texture coordinates were broken
+	- query of proxy texture internal format was broken
+	- alpha channel wasn't reliably cleared
+	- fixed divide by zero error in gluScaleImage if dest size = 1 x 1
+    Conformance bug fixes:
+	- GL_SELECTION_BUFFER_POINTER and GL_SELECTION_BUFFER_SIZE were missing
+	- GL_TEXTURE_INTERNAL_FORMAT was missing
+	- glGet*(GL_POLYGON_STIPPLE) was broken
+	- glPush/PopAttrib() didn't save/restore all texture state
+	- glBitmap in feedback mode didn't work
+	- feedback of texture coords didn't always work
+	- glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLbyte was broke
+	- glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLubyte was broke
+	- glDrawPixels w/ format=GL_STENCIL_INDEX, type=GL_BITMAP was broke
+    Changes:
+	- upgraded GLUT to version 3.7
+	- only GL and GLU library code included in MesaLib.tar.gz
+	- GLUT and all demos now in MesaDemos.tar.gz
+	- glaux and gltk libraries removed
+	- IRIX -n32 and -64 libs go in lib32/ and lib64/ directories
+
+
+3.1 beta 1  November 19, 1998
+    New:
+	- GL_EXT_stencil_wrap extension
+	- GL_INGR_blend_func_separate extension
+	- GL_ARB_multitexture extension
+	- GL_NV_texgen_reflection extension
+	- newly optimized vertex transformation code
+	- updated GLUT 3.7 code
+	- better precision when using 32-bit Z buffer
+	- Allegro DJGPP driver
+    Bug fixes:
+	- glCopyPixels between front/back buffers didn't copy alpha correctly
+	- fixed out-of-bounds memory access in optimized 2-D texture code
+	- glPixelStorei didn't accept GL_PACK/UNPACK_IMAGE_HEIGHT parameter
+	- glGet*() didn't accept GL_MAX_3D_TEXTURE_SIZE parameter
+	- clipping of texture coordinates sometimes had bad R,Q values
+	- GL_CLAMP_TO_EDGE texture sampling was off by 0.5 texels
+	- glEdgeFlagPointer() now takes a GLvoid * instead of GLboolean *
+	- texture was sometimes applied twice with 3Dfx driver
+	- glPush/PopAttrib() fouled up texture object reference counts
+	- glDeleteLists(0, n) caused assertion failure
+	- bilinear texture sampling wasn't accurate enough
+	- glClear w/ glDepthMask(GL_FALSE) didn't work right on 3Dfx
+	- color components were reversed on big endian 32 bpp X visuals
+    Changes:
+	- removed GL_EXT_multitexture extension
+
+
+3.1 beta 2  May 24, 1999
+    New:
+	- multi-textured points and lines (mjk@nvidia.com)
+	- optimized 24bpp X rendering (bernd.paysan@gmx.de)
+	- added allegro support (bernie-t@geocities.com)
+	- cleaned-up Windows-related stuff (Ted Jump)
+	- minor stereo changes (KendallB@scitechsoft.com)
+	- new BeOS driver which implements BGLView class
+	- new Direct3D driver (see src/D3D)
+	- more efficient filled gluCylinder() function
+	- utilities:  util/showbuffer.[ch] and util/glstate.[ch]
+	- fixed some IRIX compiler warnings
+	- added support for building Mesa in XFree86 with
+	    SGI's GLX (kevin@precisioninsight.com)
+    Bug fixes:
+	- a variety of Windows/Mesa bug fixes (mjk@nvidia.com)
+	- packed pixel images weren't unpacked correctly
+	- patches some win32 files in GLUT (mjk@nvidia.com)
+	- glTexImage[123]D() didn't accept internalFormat == GL_COLOR_INDEX
+	- fixed lighting bug in Keith's new shading code
+	- fixed texture segfault seen in Lament screensaver
+	- fixed miscellaneous low-memory bugs
+	- glClear(GL_COLOR_BUFFER_BIT) with RGBA or CI masking was broken
+	- GL_LINEAR sampling of 3D textures was broken
+	- fixed SVR4 'cc' compiler macro problem (dawes@xfree86.org)
+	- added GL_TEXTURE_PRIORITY fix (keithh@netcomuk.co.uk)
+	- fixed wide point and wide line conformance bugs (brianp)
+    Changes:
+	- some device driver changes (see src/dd.h)
+	- new copyright on core Mesa code
+
+
+3.1 beta 3  July ??, 1999
+    Bug Fixes:
+	- glGetTexLevelParameter wasn't fully implemented
+	- glXUseXFont now handles multi-byte fonts
+    Changes:
+	- New library names:  libGL.so and libGLU.so
+	- New subdirectories:  docs/ and bin/
