RELNOTES-4.1 revision f58826db573ac3d837c0cc6368c52657594a6973
1 2 Mesa 4.1 release notes 3 4 October, <day>, 2002 5 6 PLEASE READ!!!! 7 8 9 10Introduction 11------------ 12 13Mesa uses an even/odd version number scheme like the Linux kernel. 14Even numbered versions (such as 4.0) designate stable releases. 15Odd numbered versions (such as 4.1) designate new developmental releases. 16 17 18New Features in Mesa 4.1 19------------------------ 20 21New extensions. Docs at http://oss.sgi.com/projects/ogl-sample/registry/ 22 23GL_NV_vertex_program 24 25 NVIDIA's vertex programming extension 26 27GL_NV_vertex_program1_1 28 29 A few features built on top of GL_NV_vertex_program 30 31GL_ARB_window_pos 32 33 This is the ARB-approved version of GL_MESA_window_pos 34 35GL_ARB_depth_texture 36 37 This is the ARB-approved version of GL_SGIX_depth_texture. 38 It allows depth (Z buffer) data to be stored in textures. 39 This is used by GL_ARB_shadow 40 41GL_ARB_shadow 42 43 Shadow mapping with depth textures. 44 This is the ARB-approved version of GL_SGIX_shadow. 45 46GL_ARB_shadow_ambient 47 48 Allows one to specify the luminance of shadowed pixels. 49 This is the ARB-approved version of GL_SGIX_shadow_ambient. 50 51GL_EXT_shadow_funcs 52 53 Extends the set of GL_ARB_shadow texture comparision functions to 54 include all eight of standard OpenGL dept-test functions. 55 56GL_ARB_point_parameters 57 58 This is basically the same as GL_EXT_point_parameters. 59 60GL_ARB_texture_env_crossbar 61 62 Allows any texture combine stage to reference any texture source unit. 63 64GL_NV_point_sprite 65 66 For rendering points as textured quads. Useful for particle effects. 67 68GL_NV_texture_rectangle (new in 4.0.4 actually) 69 70 Allows one to use textures with sizes that are not powers of two. 71 Note that mipmapping and several texture wrap modes are not allowed. 72 73GL_EXT_multi_draw_arrays 74 75 Allows arrays of vertex arrays to be rendered with one call. 76 77GL_EXT_stencil_two_side 78 79 Separate stencil modes for front and back-facing polygons. 80 81GLX_SGIX_fbconfig & GLX_SGIX_pbuffer 82 83 Off-screen rendering support. 84 85 86 87Device Driver Status 88-------------------- 89 90A number of Mesa's software drivers haven't been actively maintained for 91some time. We rely on volunteers to maintain many of these drivers. 92Here's the current status of all included drivers: 93 94 95Driver Status 96---------------------- --------------------- 97XMesa (Xlib) implements OpenGL 1.3 98OSMesa (off-screen) implements OpenGL 1.3 99FX (3dfx Voodoo1/2) implements OpenGL 1.3 100SVGA implements OpenGL 1.3 101Wind River UGL implements OpenGL 1.3 102Windows/Win32 implements OpenGL 1.3 103DOS/DJGPP implements OpenGL 1.3 104GGI implements OpenGL 1.3 105BeOS needs updating (underway) 106Allegro needs updating 107D3D needs updating 108DOS needs updating 109 110 111 112New features in GLUT 113-------------------- 114 1151. Frames per second printing 116 117 GLUT now looks for an environment variable called "GLUT_FPS". If it's 118 set, GLUT will print out a frames/second statistic to stderr when 119 glutSwapBuffers() is called. By default, frames/second is computed 120 and displayed once every 5 seconds. You can specify a different 121 interval (in milliseconds) when you set the env var. For example 122 'export GLUT_FPS=1000' or 'setenv GLUT_FPS 1000' will set the interval 123 to one second. 124 125 NOTE: the demo or application must call the glutInit() function for 126 this to work. Otherwise, the env var will be ignored. 127 128 Finally, this feature may not be reliable in multi-window programs. 129 130 1312. glutGetProcAddress() function 132 133 The new function: 134 135 void *glutGetProcAddress(const char *procName) 136 137 is a wrapper for glXGetProcAddressARB() and wglGetProcAddress(). It 138 lets you dynamically get the address of an OpenGL function at runtime. 139 The GLUT_API_VERSION has been bumped to 5, but I haven't bumped the 140 GLUT version number from 3.7 since that's probably Mark Kilgard's role. 141 142 This function should probably also be able to return the address of 143 GLUT functions themselves, but it doesn't do that yet. 144 145 146 147XXX Things To Do Yet XXXX 148------------------------- 149 150isosurf with vertex program exhibits some missing triangles (probably 151when recycling the vertex buffer for long prims). 152 153 154 155Porting Info 156------------ 157 158If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here 159are some things to change: 160 1611. ctx->Texture._ReallyEnabled is obsolete. 162 163 Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that 164 left room for only 6 units (6*5 < 32) in this field. 165 This field is being replaced by ctx->Texture._EnabledUnits which has one 166 bit per texture unit. If the bit k of _EnabledUnits is set, that means 167 ctx->Texture.Unit[k]._ReallyEnabled is non-zero. You'll have to look at 168 ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or 169 rect texture is enabled for unit k. 170 171 This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are 172 obsolete. 173 174 The tokens TEXTURE0_* have been replaced as well (since there's no 175 significance to the "0" part: 176 177 old token new token 178 TEXTURE0_1D TEXTURE_1D_BIT 179 TEXTURE0_2D TEXTURE_2D_BIT 180 TEXTURE0_3D TEXTURE_3D_BIT 181 TEXTURE0_CUBE TEXTURE_CUBE_BIT 182 <none> TEXTURE_RECT_BIT 183 184 These tokens are only used for the ctx->Texture.Unit[i].Enabled and 185 ctx->Texture.Unit[i]._ReallyEnabled fields. Exactly 0 or 1 bits will 186 be set in _ReallyEnabled at any time! 187 188 Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?" 189 A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any 190 texure unit all at once (an unusual thing to do). 191 OpenGL defines priorities that basically say GL_TEXTURE_2D has 192 higher priority than GL_TEXTURE_1D, etc. Also, just because a 193 texture target is enabled by the user doesn't mean we'll actually 194 use that texture! If a texture object is incomplete (missing mip- 195 map levels, etc) it's as if texturing is disabled for that target. 196 The _ReallyEnabled field will have a bit set ONLY if the texture 197 target is enabled and complete. This spares the driver writer from 198 examining a _lot_ of GL state to determine which texture target is 199 to be used. 200 201 2022. Tnl tokens changes 203 204 During the implementation of GL_NV_vertex_program some of the vertex 205 buffer code was changed. Specifically, the VERT_* bits defined in 206 tnl/t_context.h have been renamed to better match the conventions of 207 GL_NV_vertex_program. The old names are still present but obsolete. 208 Drivers should use the newer names. 209 210 For example: VERT_RGBA is now VERT_BIT_COLOR0 and 211 VERT_SPEC_RGB is now VERT_BIT_COLOR1. 212 213 214 2153. Read/Draw Buffer changes 216 217 The business of setting the current read/draw buffers in Mesa 4.0.x 218 was complicated. It's much simpler now in Mesa 4.1. 219 220 Here are the changes: 221 222 - Renamed ctx->Color.DrawDestMask to ctx->Color._DrawDestMask 223 - Removed ctx->Color.DriverDrawBuffer 224 - Removed ctx->Pixel.DriverReadBuffer 225 - Removed ctx->Color.MultiDrawBuffer 226 - Removed ctx->Driver.SetDrawBuffer() 227 - Removed swrast->Driver.SetReadBuffer(). 228 - Added ctx->Color._DrawDestMask - a bitmask of FRONT/BACK_LEFT/RIGHT_BIT 229 values to indicate the current draw buffers. 230 - Added ctx->Pixel._ReadSrcMask to indicate the source for pixel reading. 231 The value is _one_ of the FRONT/BACK_LEFT/RIGHT_BIT values. 232 - Added ctx->Driver.DrawBuffer() and ctx->Driver.ReadBuffer(). 233 These functions exactly correspond to glDrawBuffer and glReadBuffer calls. 234 Many drivers will set ctx->Driver.DrawBuffer = _swrast_DrawBuffer and 235 leave ctx->Draw.ReadBuffer NULL. 236 DRI drivers should implement their own function for ctx->Driver.DrawBuffer 237 and use it to set the current hardware drawing buffer. You'll probably 238 also want to check for GL_FRONT_AND_BACK mode and fall back to software. 239 Call _swrast_DrawBuffer() too, to update the swrast state. 240 - Added swrast->Driver.SetBuffer(). 241 This function should be implemented by all device drivers that use swrast. 242 Mesa will call it to specify the buffer to use for span reading AND 243 writing and point/line/triangle rendering. 244 There should be no confusion between current read or draw buffer anymore. 245 - Added swrast->CurrentBuffer to indicate which color buffer to read/draw. 246 Will be FRONT_LEFT_BIT, BACK_LEFT_BIT, FRONT_RIGHT_BIT or BACK_RIGHT_BIT. 247 This value is usually passed to swrast->Driver.SetBuffer(). 248 249 2504. _mesa_create_context() changes. This function now takes a pointer to 251 a __GLimports object. The __GLimports structure contains function 252 pointers to system functions like fprintf(), malloc(), etc. 253 The _mesa_init_default_imports() function can be used to initialize 254 a __GLimports object. Most device drivers (like the DRI drivers) 255 should use this. 256 257 2585. In tnl's struct vertex_buffer, the field "ProjectedClipCoords" 259 has been replaced by "NdcPtr" to better match the OpenGL spec's 260 terminology. 261 262 2636. Since GL_EXT_stencil_two_side has been implemented, many of the 264 ctx->Stencil fields are now 2-element arrays. For example, 265 "GLenum Ref" is now "GLenum Ref[2]" The [0] elements are the front-face 266 values and the [1] elements are the back-face values. 267 ctx->Stencil.ActiveFace is 0 or 1 to indicate the current face for 268 the glStencilOp/Func/Mask() functions. 269 ctx->Stencil.TestTwoSide controls whether or not 1 or 2-sided stenciling 270 is enabled. 271 272 2737. Removed ctx->Polygon._OffsetAny. Removed ctx->Polygon.OffsetMRD. 274 275 2768. GLfloat / GLchan changes: 277 278 - Changed ctx->Driver.ClearColor() to take GLfloat[4] instead of GLchan[4]. 279 ctx->Color.ClearColor is now GLfloat[4] too. 280 - Changed ctx->Driver.AlphaRef() to take GLfloat instead of GLchan. 281 - ctx->Color.AlphaRef is now GLfloat. 282 - texObj->BorderColor is now GLfloat[4]. texObj->_BorderChan is GLchan[4]. 283 284 This is part of an effort to remove all GLchan types from core Mesa so 285 that someday we can support 8, 16 and 32-bit color channels dynamically 286 at runtime, instead of at compile-time. 287 288 2899. GLboolean ctx->Tranform.ClipEnabled[MAX_CLIP_PLANES] has been replaced 290 by GLuint ctx->Transform.ClipPlanesEnabled. The later is a bitfield. 291 292 29310. There's a new matrix_stack type in mtypes.h used for the Modelview, 294 Projection, Color and Texcoord matrix stacks. 295 296 29711. The ctx->Current.* fields have changed a lot. Now, there's a 298 ctx->Current.Attrib[] array for all vertex attributes which matches 299 the NV vertex program conventions. 300 301 302---------------------------------------------------------------------- 303$Id: RELNOTES-4.1,v 1.20 2002/10/11 17:42:48 brianp Exp $ 304