Mesa 3.3 release notes PLEASE READ!!!! Header file / GLenum changes ---------------------------- The gl.h and glu.h headers now use #defines to define all GL_* tokens instead of C-language enums. This change improves Mesa/OpenGL interoperability. New API dispatch code --------------------- The core Mesa gl* functions are now implemented with a new dispatch (jump table) which will allow simultaneous direct/indirect rendering. The code is found in the glapi*.[ch] files. Of interest: the actual "glFooBar" functions are generated with templatized code defined in glapitemp.h and included by glapi.c The glapitemp.h template should be reusable for all sorts of OpenGL projects. New thread support ------------------ Thread support in Mesa has been rewritten. The glthread.[ch] files replace mthreads.[ch]. Thread safety is always enabled (on platforms which support threads, that is). There is virtually no performance penalty for typical single-thread applications. See the glapi.c file for details. Make configuration changes -------------------------- If you use the old-style (non GNU automake) method to build Mesa note that several of the configuration names have changed: Old name New name ------------- ---------------- linux-elf linux linux linux-static linux-386-elf linux-386 linux-386 linux-386-static etc. New extensions -------------- GL_EXT_transpose_matrix Adds glLoadTransposeMatrix() and glMultTransposeMatrix() functions. See http://reality.sgi.com/opengl/arb/extensions/ext_text/GL_EXT_transpose_matrix.txt GL_EXT_texture_add_env Adds GL_ADD texture environment mode. See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt GL_EXT_texture_lod_bias Allows mipmapped texture blurring and sharpening. GLX_EXT_visual_rating extension This extension has no effect in stand-alone Mesa (used for DRI). GL_HP_occlusion_test Used for bounding box occlusion testing (see demos/occlude.c). GL_SGIX_pixel_texture / GL_SGIS_pixel_texture Lets glDraw/CopyPixels draw a texture coordinate image GLX_SGI_make_current_read functionality --------------------------------------- The functionality of this extension is needed for GLX 1.3 (and required for the Linux/OpenGL standards base). Implementing this function required a **DEVICE DRIVER CHANGE**. The old SetBuffer() function has been replaced by SetReadBuffer() and SetDrawBuffer(). All device drivers will have to be updated because of this change. The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa. The xdemos/wincopy.c program demonstrates it. Image-related code changes -------------------------- The imaging path code used by glDrawPixels, glTexImage[123]D, glTexSubImage[123], etc has been rewritten. It's now faster, uses less memory and has several bug fixes. This work was actually started in Mesa 3.1 with the glTexImage paths but has now been carried over to glDrawPixels as well. Device driver interface changes ------------------------------- Added new functions for hardware stencil buffer support: WriteStencilSpan ReadStencilSpan WriteStencilPixels ReadStencilPixels Removed old depth buffer functions: AllocDepthBuffer DepthTestSpan DepthTestPixels ReadDepthSpanFloat ReadDepthSpanInt Added new depth buffer functions: WriteDepthSpan ReadDepthSpan WriteDepthPixels ReadDepthPixels These functions always read/write 32-bit GLuints. This will allow drivers to have anywhere from 0 to 32-bit Z buffers without recompiling for 16 vs 32 bits as was previously needed. New texture image functions The entire interface for texture image specification has been updated. With the new functions, it's optional for Mesa to keep an internal copy of all textures. Texture download should be a lot faster when the extra copy isn't made. Misc changes TexEnv now takes a target argument Removed UseGlobalTexturePalette (use Enable function instead) Also added ReadPixels CopyPixels The SetBufffer function has been replaced by SetDrawBuffer and SetReadBuffer functions. This lets core Mesa independently specify which buffer is to be used for reading and which for drawing. The Clear function's mask parameter has changed. Instead of mask being the flags specified by the user to glClear, the mask is now a bitmask of the DD_*_BIT flags in dd.h. Now multiple color buffers can be specified for clearing (ala glDrawBuffers). The driver's Clear function must also check the glColorMask glIndexMask, and glStencilMask settings and do the right thing. See the X/Mesa, OS/Mesa, or FX/Mesa drivers for examples. The depth buffer changes shouldn't be hard to make for existing drivers. In fact, it should simply the code. Be careful with the depthBits value passed to gl_create_context(). 1 is a bad value! It should normally be 0, 16, 24, or 32. gl_create_framebuffer() takes new arguments which explicitly tell core Mesa which ancillary buffers (depth, stencil, accum, alpha) should be implemented in software. Mesa hardware drivers should carefully set these flags depending on which buffers are in the graphics card. Internal constants ------------------ Point and line size range and granularity limits are now stored in the gl_constants struct, which is the Const member of GLcontext. The limits are initialized from values in config.h but may be overridden by device drivers to reflect the limits of that driver's hardware. Also added constants for NumAuxBuffers and SubPixelBits. ---------------------------------------------------------------------- $Id: RELNOTES-3.3,v 1.1 2000/04/07 17:07:32 brianp Exp $