
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
