| Brian Paul | 7c0e32b | 2002-12-18 14:57:34 +0000 | [diff] [blame] | 1 |  | 
 | 2 |                             Mesa 5.1 release notes | 
 | 3 |  | 
| Brian Paul | ede655c | 2003-12-17 23:54:23 +0000 | [diff] [blame] | 4 |                               December 17, 2003 | 
| Brian Paul | 7c0e32b | 2002-12-18 14:57:34 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | dc32636 | 2003-03-07 20:21:51 +0000 | [diff] [blame] | 18 | Bug fixes | 
 | 19 | --------- | 
 | 20 | See the VERSIONS file for a list of bugs fixed in this release. | 
 | 21 |  | 
 | 22 |  | 
 | 23 |  | 
| Brian Paul | 7c0e32b | 2002-12-18 14:57:34 +0000 | [diff] [blame] | 24 | New Features in Mesa 5.1 | 
 | 25 | ------------------------ | 
 | 26 |  | 
| Brian Paul | 0dde190 | 2003-11-24 15:39:55 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | 943f0c6 | 2003-01-21 15:49:06 +0000 | [diff] [blame] | 31 | GL_ATI_texture_env_combine3 extension | 
 | 32 |    This adds a few new texture combine modes. | 
 | 33 |    Contributed by Ian Romanick. | 
| Brian Paul | 7c0e32b | 2002-12-18 14:57:34 +0000 | [diff] [blame] | 34 |  | 
| Brian Paul | ccec647 | 2003-01-21 21:48:29 +0000 | [diff] [blame] | 35 | GL_SGI_texture_color_table | 
| Brian Paul | a89cc0e | 2003-02-13 16:01:33 +0000 | [diff] [blame] | 36 |    Adds a color table lookup to the RGBA texture path.  There's a separate | 
 | 37 |    color table for each texture unit. | 
| Brian Paul | ccec647 | 2003-01-21 21:48:29 +0000 | [diff] [blame] | 38 |    Contributed by Eric Plante. | 
| Brian Paul | 7c0e32b | 2002-12-18 14:57:34 +0000 | [diff] [blame] | 39 |  | 
| Brian Paul | 4e50ab5 | 2003-03-01 01:50:13 +0000 | [diff] [blame] | 40 | GL_NV_fragment_program | 
 | 41 |    NVIDIA's fragment-level programming feature. | 
| Brian Paul | c0e1189 | 2003-06-01 16:27:37 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | 5e04bcf | 2003-06-10 15:01:45 +0000 | [diff] [blame] | 55 | GL_EXT_texture_rectangle | 
 | 56 |    Identical to GL_NV_texture_rectangle | 
 | 57 |  | 
| Brian Paul | b17a722 | 2003-06-13 02:37:27 +0000 | [diff] [blame] | 58 | GL_ARB_occlusion_query | 
 | 59 |    Useful for visibility-based culling. | 
 | 60 |  | 
| Brian Paul | 235c150 | 2003-07-03 03:07:12 +0000 | [diff] [blame] | 61 | GL_ARB_texture_non_power_of_two | 
 | 62 |    Removes the restriction that texture dimensions must be powers of two. | 
| Brian Paul | c0e1189 | 2003-06-01 16:27:37 +0000 | [diff] [blame] | 63 |  | 
| Brian Paul | 83f57e3 | 2003-09-17 21:22:54 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | d2d3052 | 2003-08-24 14:56:20 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | 80e89c5 | 2003-12-01 22:43:31 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | d2d3052 | 2003-08-24 14:56:20 +0000 | [diff] [blame] | 96 |  | 
| Brian Paul | 83f57e3 | 2003-09-17 21:22:54 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | c0e1189 | 2003-06-01 16:27:37 +0000 | [diff] [blame] | 103 |  | 
| Brian Paul | 9b101c3 | 2003-09-23 15:40:57 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | c0e1189 | 2003-06-01 16:27:37 +0000 | [diff] [blame] | 139 | Build System Changes | 
 | 140 | -------------------- | 
 | 141 |  | 
| Brian Paul | 65f6058 | 2003-09-17 21:36:08 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | c0e1189 | 2003-06-01 16:27:37 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | d2d3052 | 2003-08-24 14:56:20 +0000 | [diff] [blame] | 157 |  | 
 | 158 |  | 
| Brian Paul | 4e50ab5 | 2003-03-01 01:50:13 +0000 | [diff] [blame] | 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: | 
| Brian Paul | 65f6058 | 2003-09-17 21:36:08 +0000 | [diff] [blame] | 171 | 	program.[ch]              - generic ARB/NV program code | 
 | 172 | 	arbprogram.[ch]           - ARB program API functions | 
| Brian Paul | 76f51ca | 2003-11-24 17:13:10 +0000 | [diff] [blame] | 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 | 
| Brian Paul | 65f6058 | 2003-09-17 21:36:08 +0000 | [diff] [blame] | 177 | 	nvprogram.[ch]            - NV program API functions | 
| Brian Paul | 4e50ab5 | 2003-03-01 01:50:13 +0000 | [diff] [blame] | 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 | 
| Brian Paul | 4e50ab5 | 2003-03-01 01:50:13 +0000 | [diff] [blame] | 182 | 	nvvertexec.[ch]           - NV vertex program execution | 
 | 183 | 	swrast/s_nvfragprog.[ch]  - NV fragment program execution | 
 | 184 |  | 
| Brian Paul | 76f51ca | 2003-11-24 17:13:10 +0000 | [diff] [blame] | 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 | 
| Brian Paul | 4e50ab5 | 2003-03-01 01:50:13 +0000 | [diff] [blame] | 203 |  | 
| Brian Paul | 76f51ca | 2003-11-24 17:13:10 +0000 | [diff] [blame] | 204 | Other new files: | 
| Brian Paul | 7f223f2 | 2003-03-30 16:17:54 +0000 | [diff] [blame] | 205 | 	bufferobj.[ch]		- GL_ARB_vertex_buffer_object functions | 
| Brian Paul | c0e1189 | 2003-06-01 16:27:37 +0000 | [diff] [blame] | 206 | 	version.h		- defines the Mesa version info | 
 | 207 |  | 
| Brian Paul | 76f51ca | 2003-11-24 17:13:10 +0000 | [diff] [blame] | 208 | Other removed files: | 
 | 209 | 	swrast/s_histogram.[ch]   - moved into src/histogram.c | 
 | 210 |  | 
 | 211 |  | 
| Brian Paul | c0e1189 | 2003-06-01 16:27:37 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | effa9af | 2003-09-18 23:42:08 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | 0dde190 | 2003-11-24 15:39:55 +0000 | [diff] [blame] | 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 |  | 
| Brian Paul | c0e1189 | 2003-06-01 16:27:37 +0000 | [diff] [blame] | 244 |  | 
 | 245 |  | 
 | 246 | To Do | 
 | 247 | ----- | 
 | 248 | Add screen-awareness to fakeglx.c | 
 | 249 |  | 
| Brian Paul | 7f223f2 | 2003-03-30 16:17:54 +0000 | [diff] [blame] | 250 |  | 
| Brian Paul | 4e50ab5 | 2003-03-01 01:50:13 +0000 | [diff] [blame] | 251 |  | 
| Brian Paul | 7c0e32b | 2002-12-18 14:57:34 +0000 | [diff] [blame] | 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 | 
| Brian Paul | 971e4d6 | 2003-03-11 15:34:42 +0000 | [diff] [blame] | 269 | DJGPP			implements OpenGL 1.4 | 
| Brian Paul | 7c0e32b | 2002-12-18 14:57:34 +0000 | [diff] [blame] | 270 | GGI			implements OpenGL 1.3 | 
| Brian Paul | 7f223f2 | 2003-03-30 16:17:54 +0000 | [diff] [blame] | 271 | BeOS			implements OpenGL 1.4 | 
| Brian Paul | 7c0e32b | 2002-12-18 14:57:34 +0000 | [diff] [blame] | 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 | ---------------------------------------------------------------------- |