Home | History | Annotate | Download | only in docs
      1 
      2                             Mesa 5.1 release notes
      3 
      4                               December 17, 2003
      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 Even-numbered versions (such as 5.0) designate stable releases.
     15 Odd-numbered versions (such as 5.1) designate new developmental releases.
     16 
     17 
     18 Bug fixes
     19 ---------
     20 See the VERSIONS file for a list of bugs fixed in this release.
     21 
     22 
     23 
     24 New Features in Mesa 5.1
     25 ------------------------
     26 
     27 GL_ARB_vertex_program / GL_ARB_fragment_program
     28    Michal Krol and Karl Rasche implemented these extensions.  Thanks!
     29    Be aware that there may be some rough edges and lurking bugs.
     30 
     31 GL_ATI_texture_env_combine3 extension
     32    This adds a few new texture combine modes.
     33    Contributed by Ian Romanick.
     34 
     35 GL_SGI_texture_color_table
     36    Adds a color table lookup to the RGBA texture path.  There's a separate
     37    color table for each texture unit.
     38    Contributed by Eric Plante.
     39 
     40 GL_NV_fragment_program
     41    NVIDIA's fragment-level programming feature.
     42    Possible lurking bugs:
     43      - the DDX and DDY commands aren't fully tested
     44      - there may be bugs in the parser
     45      - the TEX and TXP instructions both do perspective correction
     46      - the pack/unpack instructions may not be correct
     47 
     48 GL_EXT_depth_bounds_test
     49    This extension adds a scissor-like test for the Z axis.  It's used to
     50    optimize stencil-volume shadow algorithms.
     51 
     52 GL_NV_light_max_exponent
     53    Lifts the 128 limit for max light exponent.
     54 
     55 GL_EXT_texture_rectangle
     56    Identical to GL_NV_texture_rectangle
     57 
     58 GL_ARB_occlusion_query
     59    Useful for visibility-based culling.
     60 
     61 GL_ARB_texture_non_power_of_two
     62    Removes the restriction that texture dimensions must be powers of two.
     63 
     64 GL_ARB_vertex_buffer_object
     65    Allows server-side vertex arrays, optimized host/card data transfers, etc.
     66 
     67 GL_ARB_point_sprite
     68    ARB-approved version of GL_NV_point_sprite.  Basically allows textures
     69    to be applied to points.
     70 
     71 GL_IBM_multimode_draw_arrays
     72    Allows multiple vertex arrays to be drawn with one call, including arrays
     73    of different types of primitives.
     74 
     75 GL_SUN_multi_draw_arrays
     76    An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4.
     77 
     78 Faster glDrawPixels / glCopyPixels in X11 driver
     79    If your X screen is 32bpp, glDrawPixels to the front color buffer will
     80    be accelerated (via XPutImage()) if the image format is GL_BGRA and the
     81    type is GL_UNSIGNED_BYTE.  No raster operations, such as depth test,
     82    blend, fog, etc. can be enabled.
     83 
     84    If your X screen is 16bpp, glDrawPixels to the front color buffer will
     85    be accelerated (via XPutImage()) if the image format is GL_RGB and the
     86    type is GL_UNSIGNED_SHORT_5_6_5.  No raster operations, such as depth
     87    test, blend, fog, etc. can be enabled.
     88 
     89    glCopyPixels() calls for the front color buffer will be accelerated
     90    (via XCopyArea()) if no raster operations, such as depth test, blend,
     91    fog, pixel zoom, etc. are enabled.
     92 
     93    The speed-up over typical software rendering is a factor of 10 for
     94    glDrawPixels and 100 for glCopyPixels.
     95 
     96 
     97 With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
     98 GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
     99 all the new features of OpenGL 1.5.  Mesa 6.0 (the next stable release)
    100 will advertise GL_VERSION = "1.5".
    101  
    102 
    103 
    104 Vertex/Fragment program debugger
    105 --------------------------------
    106 
    107 GL_MESA_program_debug is an experimental extension to support
    108 interactive debugging of vertex and fragment programs.  See the
    109 docs/MESA_program_debug.spec file for details.
    110 
    111 The bulk of the vertex/fragment program debugger is implemented
    112 outside of Mesa.  The GL_MESA_program_debug extension just has minimal
    113 hooks for stopping running programs and inspecting programs.
    114 
    115 The progs/tests/debugger.c (only in CVS) program is an example of how
    116 the extension can be used.  Presently, the debugger code and demo code
    117 is in the same file.  Eventually the debugger code should be moved
    118 into a reusable module.
    119 
    120 As it is now, the demo lets you set breakpoings in vertex/fragment
    121 programs, single step, and print intermediate register values.  It's
    122 basically just a proof of concept.
    123 
    124 
    125 
    126 Directory tree reorganization
    127 -----------------------------
    128 
    129 The directory structure for Mesa has been overhauled to improve its layout.
    130 All source code for Mesa, GLU, GLUT, etc is now under the src/ directory
    131 in appropriate subdirectories.
    132 
    133 The Mesa source code and drivers has been reorganized under src/mesa/.
    134 
    135 All demonstration programs and tests are now in subdirectories under progs/.
    136 
    137 
    138 
    139 Build System Changes
    140 --------------------
    141 
    142 The GNU automake/autoconf support has been removed.  As it was, it seldom
    143 worked on anything but Linux.  The Mesa developers aren't big fans of
    144 automake/autoconf/libtool and didn't have the time to maintain it.
    145 If someone wants to contribute new automake/autoconf support (and is
    146 willing to maintain it), it may be re-incorporated into Mesa, subject
    147 to some requirements.
    148 
    149 The "old style" makefile system has been updated:
    150    1. Make-config has been trimmed down to fewer, modern configurations.
    151    2. Most of the bin/mklib.* scripts have been rolled into a new "mklib"
    152       script that works on all sorts of systems.  There are probably some
    153       bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5.
    154       Improvements/contributes are greatly appreciated.
    155    3. The Makefile.X11 files have been cleaned up in various ways
    156 
    157 
    158 
    159 Source File Changes
    160 -------------------
    161 
    162 The mmath.[ch] files are obsolete.  Their contents have been moved
    163 into the imports.[ch] and macros.[ch] files.
    164 
    165 The files related to vertex and fragment programming have changed.
    166 Old files:
    167 	vpexec.[ch]
    168 	vpparse.[ch]
    169 	vpstate.[ch]
    170 New files:
    171 	program.[ch]              - generic ARB/NV program code
    172 	arbprogram.[ch]           - ARB program API functions
    173 	arbfragparse.[ch]         - ARB fragment program parsing
    174 	arbvertparse.[ch]         - ARB vertex program parsing
    175 	arbparse.[ch]             - ARB vertex/fragment parsing
    176 	arbparse_syn.h            - vertex/fragment program syntax
    177 	nvprogram.[ch]            - NV program API functions
    178 	nvvertprog.h              - NV vertex program definitions
    179 	nvfragprog.h              - NV fragment program definitions
    180 	nvvertparse.[ch]          - NV vertex program parser
    181 	nvfragparse.[ch]          - NV fragment program parser
    182 	nvvertexec.[ch]           - NV vertex program execution
    183 	swrast/s_nvfragprog.[ch]  - NV fragment program execution
    184 
    185 The files related to per-vertex handling have changed.
    186 Old files:
    187 	tnl/t_eval_api.c          - old per-vertex code
    188 	tnl/t_imm_alloc.c         - old per-vertex code
    189 	tnl/t_imm_api.c           - old per-vertex code
    190 	tnl/t_imm_debug.c         - old per-vertex code
    191 	tnl/t_imm_dlist.c         - old per-vertex code
    192 	tnl/t_imm_elt.c           - old per-vertex code
    193 	tnl/t_imm_eval.c          - old per-vertex code
    194 	tnl/t_imm_exec.c          - old per-vertex code
    195 	tnl/t_imm_fixup.c         - old per-vertex code
    196 	tnl/t_vtx_sse.c           - old per-vertex code
    197 	tnl/t_vtx_x86.c           - old per-vertex code
    198 New files:
    199 	tnl/t_save_api.c          - new per-vertex code
    200 	tnl/t_save_loopback.c     - new per-vertex code
    201 	tnl/t_save_playback.c     - new per-vertex code
    202 	tnl/t_vtx_eval.c          - old per-vertex code
    203 
    204 Other new files:
    205 	bufferobj.[ch]		- GL_ARB_vertex_buffer_object functions
    206 	version.h		- defines the Mesa version info
    207 
    208 Other removed files:
    209 	swrast/s_histogram.[ch]   - moved into src/histogram.c
    210 
    211 
    212 
    213 Other Changes
    214 -------------
    215 
    216 The ctx->Driver.CreateTexture function has been removed - it wasn't used.
    217 
    218 New device driver hook functions:
    219    NewTextureObject   - used to allocate struct gl_texture_objects
    220    NewTextureImage    - used to allocate struct gl_texture_images
    221 
    222 New ctx->Texture._EnabledCoordUnits field:
    223    With the addition of GL_NV_fragment_program we may need to interpolate
    224    various sets of texture coordinates even when the corresponding texture
    225    unit is not enabled.  That is, glEnable(GL_TEXTURE_xD) may never get
    226    called but we still may have to interpolate texture coordinates across
    227    triangles so that the fragment program will get them.
    228    This new field indicates which sets of texture coordinates are needed.
    229    If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the
    230    same bit MUST be set in ctx->Texture._EnabledCoordUnits.
    231 
    232 The ctx->_TriangleCaps field is deprecated.
    233    Instead of testing the DD_* bits in _TriangleCaps, you should instead
    234    directly test the relevant state variables, or use one of the helper
    235    functions like NEED_SECONDARY_COLOR() at the bottom of context.h
    236    While testing _TriangleCaps bits was fast, it was kludgey, and setting
    237    the bits in the first place could be error prone.
    238 
    239 New vertex processing code.
    240    The code behind glBegin, glEnd, glVertex, glNormal, etc. has been
    241    totally rewritten.  It's a cleaner implementation now and should use
    242    less memory. (Keith)
    243 
    244 
    245 
    246 To Do
    247 -----
    248 Add screen-awareness to fakeglx.c
    249 
    250 
    251 
    252 
    253 Device Driver Status
    254 --------------------
    255 
    256 A number of Mesa's software drivers haven't been actively maintained for
    257 some time.  We rely on volunteers to maintain many of these drivers.
    258 Here's the current status of all included drivers:
    259 
    260 
    261 Driver			Status
    262 ----------------------	---------------------
    263 XMesa (Xlib)		implements OpenGL 1.4
    264 OSMesa (off-screen)	implements OpenGL 1.4
    265 FX (3dfx Voodoo1/2)	implements OpenGL 1.3
    266 SVGA			implements OpenGL 1.3
    267 Wind River UGL		implements OpenGL 1.3
    268 Windows/Win32		implements OpenGL 1.4
    269 DJGPP			implements OpenGL 1.4
    270 GGI			implements OpenGL 1.3
    271 BeOS			implements OpenGL 1.4
    272 Allegro			needs updating
    273 D3D			needs updating
    274 
    275 Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
    276 driver call the _mesa_enable_1_4_extensions() function.
    277 
    278 
    279 ----------------------------------------------------------------------
    280