Mesa 3.5 release notes Month ??, 2001 PLEASE READ!!!! Introduction ------------ Mesa uses an even/odd version number scheme like the Linux kernel. Odd numbered versions (such as 3.3) designate new developmental releases. Even numbered versions (such as 3.4) designate stable releases. The internal structure of Mesa 3.5 is (will be) changed so that it is more modular. The motivation is better support of 3D hardware such as T&L hardware in which much of core Mesa isn't needed. Details to come... GLU 1.3 ------- Mesa 3.5 includes the SGI Sample Implementation (SI) GLU library. This version of GLU supports the GLU 1.3 specification. The old Mesa GLU library implemented the 1.1 specification. The SI GLU library should work much better. You'll need a C++ compiler to compile the SI GLU library. This may be a problem on some systems. New Extensions -------------- GL_EXT_convolution Adds image convolution to glRead/Copy/DrawPixels/TexImage. GL_ARB_imaging This is the optional imaging subset of OpenGL 1.2. It's the GL_EXT_convolution, GL_HP_convolution_border_modes, GL_EXT_histogram, GL_EXT_color_table, GL_EXT_color_subtable GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract and GL_SGI_color_matrix extensions all rolled together. This is supported in all software renderers but not in all hardware drivers (3dfx for example). GL_ARB_texture_compression This is supported in Mesa but only used by the 3dfx DRI drivers for Voodoo4 and later. GL_ARB_texture_env_add This is identical to GL_EXT_texture_env_add. GL_NV_blend_square Adds extra blend source and dest factors which allow squaring of color values. GL_EXT_fog_coord Allows specification of a per-vertex fog coordinate instead of having fog always computed from the eye distance. GL_EXT_secondary_color Allows specifying the secondary (specular) color for each vertex instead of getting it only from lighting in GL_SEPARATE_SPECULAR_COLOR mode. GL_ARB_texture_env_combine Basically the same as GL_EXT_texture_env_combine GL_ARB_texture_env_add extension Texture addition mode. GL_ARB_texture_env_dot3 extension Dot product texture environment. GL_ARB_texture_border_clamp Adds GL_CLAMP_TO_BORDER_ARB texture wrap mode GL_SGIX_depth_texture, GL_SGIX_shadow and GL_SGIX_shadow_ambient Implements a shadow casting algorithm based on depth map textures libOSMesa.so ------------ libOSMesa.so is a new library which contains the OSMesa interface for off-screen rendering. Apps which need the OSMesa interface should link with both -lOSMesa and -lGL. This change was made so that stand-alone Mesa works the same way as XFree86/DRI's libGL. Device Driver Changes / Core Mesa Changes ----------------------------------------- The ctx->Driver.LogicOp() function has been removed. It used to be called during state update in order to determine if the driver could do glLogicOp() operations, and if not, set the SWLogicOpEnabled flag. Drivers should instead examine the LogicOp state themselves and choose specialized point, line, and triangle functions appropriately, or fall back to software rendering. The Xlib driver was the only driver to use this function. And since the Xlib driver no longer draws points, lines or triangles using Xlib, the LogicOp function isn't needed. The ctx->Driver.Dither() function has been removed. Drivers should detect dither enable/disable via ctx->Driver.Enable() instead. The ctx->Driver.IndexMask() and ctx->Driver.ColorMask() functions are now just called from glIndexMask and glColorMask like the other GL state-changing functions. They are no longer called from inside gl_update_state(). Also, they now return void. The change was made mostly for sake of uniformity. The NEW_DRVSTATE[0123] flags have been removed. They weren't being used and are obsolete w.r.t. the way state updates are done in DRI drivers. Removed obsolete gl_create_visual() and gl_destroy_visual(). Renamed functions (new namespace): old new gl_create_framebuffer _mesa_create_framebuffer gl_destroy_framebuffer _mesa_destroy_framebuffer gl_create_context _mesa_create_context gl_destroy_context _mesa_destroy_context gl_context_initialize _mesa_context_initialize gl_copy_context _mesa_copy_context gl_make_current _mesa_make_current gl_make_current2 _mesa_make_current2 gl_get_current_context _mesa_get_current_context gl_flush_vb _mesa_flush_vb gl_warning _mesa_warning gl_compile_error _mesa_compile_error All the drivers have been updated, but not all of them have been tested since I can't test some platforms (DOS, Windows, Allegro, etc). X/Mesa Driver ------------- The source files for the X/Mesa driver in src/X have been renamed. The xmesa[1234].c files are gone. The new files are xm_api.c, xm_dd.c, xm_line.c, xm_span.c and xm_tri.c. Multitexture ------------ Three texture units are now supported by default. We'll allow more than three texture units when we fix some bitfield issues. In at least one place we have a 32-bit bitfield which is fully allocated, leaving no space for texture unit #3 or higher. The TEXTURE1_1D, TEXTURE1_2D, etc constants may go away in the future. Currently, they're only used in the ctx->Texture.ReallyEnabled field. This bitfield is just a conglomerate of ctx->Texture.Unit[i].ReallyEnabled for all texture units. ctx->Texture.ReallyEnabled may become a GLboolean. Then, drivers will have to loop over the texture units to examine ctx->Texture.Unit[i].ReallyEnabled. OpenGL SI related changes ------------------------- In an effort to make Mesa's internal interfaces more like the OpenGL SI interfaces, a number of changes have been made: 1. Importing the SI's glcore.h file which defines a number of interface structures like __GLimports and __GLexports. 2. Renamed "struct gl_context" to "struct __GLcontextRec". 3. Added __glCoreCreateContext() and __glCoreNopDispatch() functions. 4. The GLcontext member Visual is no longer a pointer. 5. New file: imports.c to setup default import functions for Mesa. Internal color values --------------------- Previously, Mesa treated color channel values as GLubytes in [0,255]. Mesa 3.5 uses the GLchan datatype for color channel values. In the future it will be possible to define GLchan to be larger than a byte in order to support high-precision colors. Many, many occurances of GLubyte have been replaced with GLchan and many occurances of the number 255 have been replaced with CHAN_MAX. Support for CHAN_BITS > 8 is not ready yet but will be eventually. ---------------------------------------------------------------------- $Id: RELNOTES-3.5,v 1.11 2001/04/20 02:34:12 brianp Exp $