ir_reader: Make assignment conditions optional.
[mesa.git] / docs / RELNOTES-4.1
index c0512cfc75c0a90d0db083b66be781fd97ad3c81..24e9299eb2a234a7c95d26b5ae0b418388cfd7ea 100644 (file)
@@ -1,9 +1,9 @@
 
                             Mesa 4.1 release notes
 
 
                             Mesa 4.1 release notes
 
-                            <month>, <day>, 2002
+                               October 29, 2002
 
 
-                               PLEASE READ!!!!
+                                PLEASE READ!!!!
 
 
 
 
 
 
@@ -65,11 +65,28 @@ GL_NV_point_sprite
 
     For rendering points as textured quads.  Useful for particle effects.
 
 
     For rendering points as textured quads.  Useful for particle effects.
 
-GL_NV_texture_rectangle
+GL_NV_texture_rectangle  (new in 4.0.4 actually)
 
     Allows one to use textures with sizes that are not powers of two.
     Note that mipmapping and several texture wrap modes are not allowed.
 
 
     Allows one to use textures with sizes that are not powers of two.
     Note that mipmapping and several texture wrap modes are not allowed.
 
+GL_EXT_multi_draw_arrays
+
+    Allows arrays of vertex arrays to be rendered with one call.
+
+GL_EXT_stencil_two_side
+
+   Separate stencil modes for front and back-facing polygons.
+
+GLX_SGIX_fbconfig & GLX_SGIX_pbuffer
+
+   Off-screen rendering support.
+
+GL_ATI_texture_mirror_once
+
+   Adds two new texture wrap modes: GL_MIRROR_CLAMP_ATI and
+   GL_MIRROR_CLAMP_TO_EDGE_ATI.
+
 
 
 Device Driver Status
 
 
 Device Driver Status
@@ -89,7 +106,7 @@ SVGA                 implements OpenGL 1.3
 Wind River UGL         implements OpenGL 1.3
 Windows/Win32          implements OpenGL 1.3
 DOS/DJGPP              implements OpenGL 1.3
 Wind River UGL         implements OpenGL 1.3
 Windows/Win32          implements OpenGL 1.3
 DOS/DJGPP              implements OpenGL 1.3
-GGI                    needs updating
+GGI                    implements OpenGL 1.3
 BeOS                   needs updating (underway)
 Allegro                        needs updating
 D3D                    needs updating
 BeOS                   needs updating (underway)
 Allegro                        needs updating
 D3D                    needs updating
@@ -97,41 +114,43 @@ DOS                        needs updating
 
 
 
 
 
 
-Porting Information
--------------------
+New features in GLUT
+--------------------
 
 
-When moving from Mesa 4.0.x to Mesa 4.1 there are a number of things
-you may have to update.
+1. Frames per second printing
 
 
-1. _mesa_create_context() changes.  This function now takes a pointer to
-   a __GLimports object.  The __GLimports structure contains function
-   pointers to system functions like fprintf(), malloc(), etc.
-   The _mesa_init_default_imports() function can be used to initialize
-   a __GLimports object.  Most device drivers (like the DRI drivers)
-   should use this.
+   GLUT now looks for an environment variable called "GLUT_FPS".  If it's
+   set, GLUT will print out a frames/second statistic to stderr when
+   glutSwapBuffers() is called.  By default, frames/second is computed
+   and displayed once every 5 seconds.  You can specify a different
+   interval (in milliseconds) when you set the env var.  For example
+   'export GLUT_FPS=1000' or 'setenv GLUT_FPS 1000' will set the interval
+   to one second.
 
 
-2. more to come...
+   NOTE: the demo or application must call the glutInit() function for
+   this to work.  Otherwise, the env var will be ignored.
 
 
+   Finally, this feature may not be reliable in multi-window programs.
 
 
 
 
-XXX Things To Do Yet XXXX
--------------------------
+2. glutGetProcAddress() function
 
 
-Verify x86 code for normal transformation works with new 4-element normal
-vector arrays.  Pretty sure the SSE code is wrong.
+   The new function:
 
 
-Finish up NV_vertex_program support for evaluators.  Vertex arrays seem
-to work as of 4/21/2002.
+        void *glutGetProcAddress(const char *procName)
 
 
-Allow multiple points to be rendered into one sw_span.
+   is a wrapper for glXGetProcAddressARB() and wglGetProcAddress().  It
+   lets you dynamically get the address of an OpenGL function at runtime.
+   The GLUT_API_VERSION has been bumped to 5, but I haven't bumped the
+   GLUT version number from 3.7 since that's probably Mark Kilgard's role.
 
 
-improve point/line rendering speed.
+   This function should probably also be able to return the address of
+   GLUT functions themselves, but it doesn't do that yet.
 
 
-_tnl_end() has flushing forced on.
 
 
-readpixels from stencil/z should respect ctx->ReadBuffer
 
 
-glVertexAttrib*NV(index>15) should cause an error.
+XXX Things To Do Yet XXXX
+-------------------------
 
 isosurf with vertex program exhibits some missing triangles (probably
 when recycling the vertex buffer for long prims).
 
 isosurf with vertex program exhibits some missing triangles (probably
 when recycling the vertex buffer for long prims).
@@ -168,7 +187,7 @@ are some things to change:
    <none>              TEXTURE_RECT_BIT
 
    These tokens are only used for the ctx->Texture.Unit[i].Enabled and
    <none>              TEXTURE_RECT_BIT
 
    These tokens are only used for the ctx->Texture.Unit[i].Enabled and
-   ctx->Texture.Unit[i]._ReallyEnabled fields.  Exactly 0 or 1 bit will
+   ctx->Texture.Unit[i]._ReallyEnabled fields.  Exactly 0 or 1 bits will
    be set in _ReallyEnabled at any time!
 
    Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?"
    be set in _ReallyEnabled at any time!
 
    Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?"
@@ -198,5 +217,91 @@ are some things to change:
 
 
 
 
 
 
+3. Read/Draw Buffer changes
+
+   The business of setting the current read/draw buffers in Mesa 4.0.x
+   was complicated.  It's much simpler now in Mesa 4.1.
+
+   Here are the changes:
+
+   - Renamed ctx->Color.DrawDestMask to ctx->Color._DrawDestMask
+   - Removed ctx->Color.DriverDrawBuffer
+   - Removed ctx->Pixel.DriverReadBuffer
+   - Removed ctx->Color.MultiDrawBuffer
+   - Removed ctx->Driver.SetDrawBuffer()
+   - Removed swrast->Driver.SetReadBuffer().
+   - Added ctx->Color._DrawDestMask - a bitmask of FRONT/BACK_LEFT/RIGHT_BIT
+     values to indicate the current draw buffers.
+   - Added ctx->Pixel._ReadSrcMask to indicate the source for pixel reading.
+     The value is _one_ of the FRONT/BACK_LEFT/RIGHT_BIT values.
+   - Added ctx->Driver.DrawBuffer() and ctx->Driver.ReadBuffer().
+     These functions exactly correspond to glDrawBuffer and glReadBuffer calls.
+     Many drivers will set ctx->Driver.DrawBuffer = _swrast_DrawBuffer and
+     leave ctx->Draw.ReadBuffer NULL.
+     DRI drivers should implement their own function for ctx->Driver.DrawBuffer
+     and use it to set the current hardware drawing buffer.  You'll probably
+     also want to check for GL_FRONT_AND_BACK mode and fall back to software.
+     Call _swrast_DrawBuffer() too, to update the swrast state.
+   - Added swrast->Driver.SetBuffer().
+     This function should be implemented by all device drivers that use swrast.
+     Mesa will call it to specify the buffer to use for span reading AND
+     writing and point/line/triangle rendering.
+     There should be no confusion between current read or draw buffer anymore.
+   - Added swrast->CurrentBuffer to indicate which color buffer to read/draw.
+     Will be FRONT_LEFT_BIT, BACK_LEFT_BIT, FRONT_RIGHT_BIT or BACK_RIGHT_BIT.
+     This value is usually passed to swrast->Driver.SetBuffer().
+
+
+4. _mesa_create_context() changes.  This function now takes a pointer to
+   a __GLimports object.  The __GLimports structure contains function
+   pointers to system functions like fprintf(), malloc(), etc.
+   The _mesa_init_default_imports() function can be used to initialize
+   a __GLimports object.  Most device drivers (like the DRI drivers)
+   should use this.
+
+
+5. In tnl's struct vertex_buffer, the field "ProjectedClipCoords"
+   has been replaced by "NdcPtr" to better match the OpenGL spec's
+   terminology.
+
+
+6. Since GL_EXT_stencil_two_side has been implemented, many of the
+   ctx->Stencil fields are now 2-element arrays.  For example,
+   "GLenum Ref" is now "GLenum Ref[2]"  The [0] elements are the front-face
+   values and the [1] elements are the back-face values.
+   ctx->Stencil.ActiveFace is 0 or 1 to indicate the current face for
+   the glStencilOp/Func/Mask() functions.
+   ctx->Stencil.TestTwoSide controls whether or not 1 or 2-sided stenciling
+   is enabled.
+
+
+7. Removed ctx->Polygon._OffsetAny.  Removed ctx->Polygon.OffsetMRD.
+
+
+8. GLfloat / GLchan changes:
+
+   - Changed ctx->Driver.ClearColor() to take GLfloat[4] instead of GLchan[4].
+     ctx->Color.ClearColor is now GLfloat[4] too.
+   - Changed ctx->Driver.AlphaRef() to take GLfloat instead of GLchan.
+   - ctx->Color.AlphaRef is now GLfloat.
+   - texObj->BorderColor is now GLfloat[4].  texObj->_BorderChan is GLchan[4].
+
+   This is part of an effort to remove all GLchan types from core Mesa so
+   that someday we can support 8, 16 and 32-bit color channels dynamically
+   at runtime, instead of at compile-time.
+
+
+9. GLboolean ctx->Tranform.ClipEnabled[MAX_CLIP_PLANES] has been replaced
+   by GLuint ctx->Transform.ClipPlanesEnabled.  The later is a bitfield.
+
+
+10. There's a new matrix_stack type in mtypes.h used for the Modelview,
+   Projection, Color and Texcoord matrix stacks.
+
+
+11. The ctx->Current.* fields have changed a lot.  Now, there's a
+   ctx->Current.Attrib[] array for all vertex attributes which matches
+   the NV vertex program conventions.
+
+
 ----------------------------------------------------------------------
 ----------------------------------------------------------------------
-$Id: RELNOTES-4.1,v 1.10 2002/06/15 03:03:58 brianp Exp $