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