| |
| Mesa 3.3 release notes |
| |
| July 21, 2000 |
| |
| 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.2.1) designate stable releases. |
| |
| Mesa 3.3 has a undergone many internal changes since version 3.2 |
| and features a lot of new extensions. 3.3 is expected to be pretty |
| stable, but perhaps not as stable as 3.2 which has been used by |
| thousands of users over the past months. |
| |
| Everyone is encouraged to try Mesa 3.3. Bugs should be reported to |
| the Mesa bug database on www.sourceforge.net. |
| |
| |
| |
| 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. |
| |
| The new dispatch code has also optimized with x86 assembly code. |
| This optimization eliminates copying the function arguments during |
| dispatch. |
| |
| |
| |
| 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. |
| |
| The Xlib driver (XMesa) is now thread-safe as well. Be sure to |
| call XInitThreads() in your app first. See the xdemos/glthreads.c |
| demo for an example. |
| |
| |
| |
| 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_ARB_transpose_matrix |
| Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB() |
| functions. |
| |
| GL_ARB_texture_cube_map |
| For cube-based reflection mapping. |
| |
| 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. |
| |
| GL_SGI_color_matrix |
| Adds a color matrix and another set of scale and bias parameters |
| to the glDraw/CopyPixels paths. |
| |
| GL_SGI_color_table |
| Adds additional color tables to the glDraw/Read/CopyPixels paths. |
| |
| GL_EXT_histogram |
| Compute histograms for glDraw/Read/CopyPixels. |
| |
| GL_EXT_blend_func_separate |
| This is the same as GL_INGR_blend_func_separate. |
| |
| GL_ARB_texture_cube_mapping |
| 6-face cube mapping, nicer than sphere mapping |
| |
| GL_EXT_texture_env_combine |
| For advanced texture environment effects. |
| |
| |
| Documentation for all these functions can be found at |
| http://oss.sgi.com/projects/ogl-sample/registry/ |
| |
| |
| |
| 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. |
| |
| |
| |
| OpenGL Conformance |
| ------------------ |
| |
| Mesa now passes all the OpenGL 1.1 conformance tests, except for |
| antialiased lines. AA lines fail on some, but not all, the tests. |
| In order to fix the remaining failures, a new AA line algorithm will |
| be needed (which computes coverage values for end-point fragments). |
| This will be done for Mesa 3.5/3.6. |
| |
| |
| |
| OpenGL 1.2 GL_ARB_imaging subset |
| -------------------------------- |
| |
| Mesa 3.3 implements all the features of GL_ARB_imaging except for |
| image convolution. This will (hopefully) be done for Mesa 3.5/3.6. |
| |
| |
| |
| ---------------------------------------------------------------------- |