Home | History | Annotate | Download | only in docs
      1 
      2                          Mesa 3.3 release notes
      3 
      4                              July 21, 2000
      5 
      6                              PLEASE READ!!!!
      7 
      8 
      9 
     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 
     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 
     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 
     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 
     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 
     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 
     89 GL_ARB_transpose_matrix
     90 	Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB()
     91         functions.
     92 
     93 GL_ARB_texture_cube_map
     94 	For cube-based reflection mapping.
     95 
     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
    110 	Lets glDraw/CopyPixels draw a texture coordinate image.
    111 
    112 GL_SGI_color_matrix
    113 	Adds a color matrix and another set of scale and bias parameters
    114 	to the glDraw/CopyPixels paths.
    115 
    116 GL_SGI_color_table
    117 	Adds additional color tables to the glDraw/Read/CopyPixels paths.
    118 
    119 GL_EXT_histogram
    120 	Compute histograms for glDraw/Read/CopyPixels.
    121 
    122 GL_EXT_blend_func_separate
    123 	This is the same as GL_INGR_blend_func_separate.
    124 
    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 
    132 Documentation for all these functions can be found at
    133 http://oss.sgi.com/projects/ogl-sample/registry/
    134 
    135 
    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 
    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 
    269 
    270 ----------------------------------------------------------------------
    271