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 | ---------------------------------------------------------------------- |