1 2 Mesa 3.3 release notes 3 4 July 21, 2000 5 6 PLEASE READ!!!! 7 8 9 10Introduction 11------------ 12 13Mesa uses an even/odd version number scheme like the Linux kernel. 14Odd numbered versions (such as 3.3) designate new developmental releases. 15Even numbered versions (such as 3.2.1) designate stable releases. 16 17Mesa 3.3 has a undergone many internal changes since version 3.2 18and features a lot of new extensions. 3.3 is expected to be pretty 19stable, but perhaps not as stable as 3.2 which has been used by 20thousands of users over the past months. 21 22Everyone is encouraged to try Mesa 3.3. Bugs should be reported to 23the Mesa bug database on www.sourceforge.net. 24 25 26 27Header file / GLenum changes 28---------------------------- 29 30The gl.h and glu.h headers now use #defines to define all GL_* tokens 31instead of C-language enums. This change improves Mesa/OpenGL 32interoperability. 33 34 35 36New API dispatch code 37--------------------- 38 39The core Mesa gl* functions are now implemented with a new dispatch 40(jump table) which will allow simultaneous direct/indirect rendering. 41 42The code is found in the glapi*.[ch] files. 43 44Of interest: the actual "glFooBar" functions are generated with 45templatized code defined in glapitemp.h and included by glapi.c 46The glapitemp.h template should be reusable for all sorts of OpenGL 47projects. 48 49The new dispatch code has also optimized with x86 assembly code. 50This optimization eliminates copying the function arguments during 51dispatch. 52 53 54 55New thread support 56------------------ 57 58Thread support in Mesa has been rewritten. The glthread.[ch] files 59replace mthreads.[ch]. Thread safety is always enabled (on platforms 60which support threads, that is). There is virtually no performance 61penalty for typical single-thread applications. See the glapi.c 62file for details. 63 64The Xlib driver (XMesa) is now thread-safe as well. Be sure to 65call XInitThreads() in your app first. See the xdemos/glthreads.c 66demo for an example. 67 68 69 70Make configuration changes 71-------------------------- 72 73If you use the old-style (non GNU automake) method to build Mesa note 74that several of the configuration names have changed: 75 76 Old name New name 77 ------------- ---------------- 78 linux-elf linux 79 linux linux-static 80 linux-386-elf linux-386 81 linux-386 linux-386-static 82 etc. 83 84 85 86New extensions 87-------------- 88 89GL_ARB_transpose_matrix 90 Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB() 91 functions. 92 93GL_ARB_texture_cube_map 94 For cube-based reflection mapping. 95 96GL_EXT_texture_add_env 97 Adds GL_ADD texture environment mode. 98 See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt 99 100GL_EXT_texture_lod_bias 101 Allows mipmapped texture blurring and sharpening. 102 103GLX_EXT_visual_rating extension 104 This extension has no effect in stand-alone Mesa (used for DRI). 105 106GL_HP_occlusion_test 107 Used for bounding box occlusion testing (see demos/occlude.c). 108 109GL_SGIX_pixel_texture / GL_SGIS_pixel_texture 110 Lets glDraw/CopyPixels draw a texture coordinate image. 111 112GL_SGI_color_matrix 113 Adds a color matrix and another set of scale and bias parameters 114 to the glDraw/CopyPixels paths. 115 116GL_SGI_color_table 117 Adds additional color tables to the glDraw/Read/CopyPixels paths. 118 119GL_EXT_histogram 120 Compute histograms for glDraw/Read/CopyPixels. 121 122GL_EXT_blend_func_separate 123 This is the same as GL_INGR_blend_func_separate. 124 125GL_ARB_texture_cube_mapping 126 6-face cube mapping, nicer than sphere mapping 127 128GL_EXT_texture_env_combine 129 For advanced texture environment effects. 130 131 132Documentation for all these functions can be found at 133http://oss.sgi.com/projects/ogl-sample/registry/ 134 135 136 137GLX_SGI_make_current_read functionality 138--------------------------------------- 139 140The functionality of this extension is needed for GLX 1.3 (and required 141for the Linux/OpenGL standards base). 142 143Implementing this function required a **DEVICE DRIVER CHANGE**. 144The old SetBuffer() function has been replaced by SetReadBuffer() and 145SetDrawBuffer(). All device drivers will have to be updated because 146of this change. 147 148The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa. 149The xdemos/wincopy.c program demonstrates it. 150 151 152 153Image-related code changes 154-------------------------- 155 156The imaging path code used by glDrawPixels, glTexImage[123]D, 157glTexSubImage[123], etc has been rewritten. It's now faster, 158uses less memory and has several bug fixes. This work was 159actually started in Mesa 3.1 with the glTexImage paths but has now 160been carried over to glDrawPixels as well. 161 162 163 164Device driver interface changes 165------------------------------- 166 167Added new functions for hardware stencil buffer support: 168 WriteStencilSpan 169 ReadStencilSpan 170 WriteStencilPixels 171 ReadStencilPixels 172 173 174Removed old depth buffer functions: 175 AllocDepthBuffer 176 DepthTestSpan 177 DepthTestPixels 178 ReadDepthSpanFloat 179 ReadDepthSpanInt 180 181 182Added new depth buffer functions: 183 WriteDepthSpan 184 ReadDepthSpan 185 WriteDepthPixels 186 ReadDepthPixels 187 188 These functions always read/write 32-bit GLuints. This will allow 189 drivers to have anywhere from 0 to 32-bit Z buffers without 190 recompiling for 16 vs 32 bits as was previously needed. 191 192 193New texture image functions 194 The entire interface for texture image specification has been updated. 195 With the new functions, it's optional for Mesa to keep an internal copy 196 of all textures. Texture download should be a lot faster when the extra 197 copy isn't made. 198 199Misc changes 200 TexEnv now takes a target argument 201 Removed UseGlobalTexturePalette (use Enable function instead) 202 203 204Also added 205 ReadPixels 206 CopyPixels 207 208 209The SetBufffer function has been replaced by SetDrawBuffer and 210SetReadBuffer functions. This lets core Mesa independently 211specify which buffer is to be used for reading and which for 212drawing. 213 214The Clear function's mask parameter has changed. Instead of 215mask being the flags specified by the user to glClear, the 216mask is now a bitmask of the DD_*_BIT flags in dd.h. Now 217multiple color buffers can be specified for clearing (ala 218glDrawBuffers). The driver's Clear function must also 219check the glColorMask glIndexMask, and glStencilMask settings 220and do the right thing. See the X/Mesa, OS/Mesa, or FX/Mesa 221drivers for examples. 222 223 224The depth buffer changes shouldn't be hard to make for existing 225drivers. In fact, it should simply the code. Be careful with 226the depthBits value passed to gl_create_context(). 1 is a bad 227value! It should normally be 0, 16, 24, or 32. 228 229 230gl_create_framebuffer() takes new arguments which explicitly tell 231core Mesa which ancillary buffers (depth, stencil, accum, alpha) 232should be implemented in software. Mesa hardware drivers should 233carefully set these flags depending on which buffers are in the 234graphics card. 235 236 237 238Internal constants 239------------------ 240 241Point and line size range and granularity limits are now stored 242in the gl_constants struct, which is the Const member of GLcontext. 243The limits are initialized from values in config.h but may be 244overridden by device drivers to reflect the limits of that driver's 245hardware. 246 247Also added constants for NumAuxBuffers and SubPixelBits. 248 249 250 251OpenGL Conformance 252------------------ 253 254Mesa now passes all the OpenGL 1.1 conformance tests, except for 255antialiased lines. AA lines fail on some, but not all, the tests. 256In order to fix the remaining failures, a new AA line algorithm will 257be needed (which computes coverage values for end-point fragments). 258This will be done for Mesa 3.5/3.6. 259 260 261 262OpenGL 1.2 GL_ARB_imaging subset 263-------------------------------- 264 265Mesa 3.3 implements all the features of GL_ARB_imaging except for 266image convolution. This will (hopefully) be done for Mesa 3.5/3.6. 267 268 269 270---------------------------------------------------------------------- 271