r600g: Why all this fiddling with tgsi_helper_copy?
[mesa.git] / docs / RELNOTES-4.1
index 8a92f1576dbf4cb48eba96e702b0c26e990e6ec3..24e9299eb2a234a7c95d26b5ae0b418388cfd7ea 100644 (file)
@@ -1,9 +1,9 @@
 
                             Mesa 4.1 release notes
 
-                            <month>, <day>, 2002
+                               October 29, 2002
 
-                               PLEASE READ!!!!
+                                PLEASE READ!!!!
 
 
 
@@ -57,10 +57,37 @@ GL_ARB_point_parameters
 
     This is basically the same as GL_EXT_point_parameters.
 
+GL_ARB_texture_env_crossbar
+
+    Allows any texture combine stage to reference any texture source unit.
+
 GL_NV_point_sprite
 
     For rendering points as textured quads.  Useful for particle effects.
 
+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.
+
+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
 --------------------
@@ -79,40 +106,202 @@ SVGA                      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
-BeOS                   needs updating
+GGI                    implements OpenGL 1.3
+BeOS                   needs updating (underway)
 Allegro                        needs updating
 D3D                    needs updating
 DOS                    needs updating
 
 
 
+New features in GLUT
+--------------------
+
+1. Frames per second printing
+
+   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.
+
+   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.
+
+
+2. glutGetProcAddress() function
+
+   The new function:
+
+        void *glutGetProcAddress(const char *procName)
+
+   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.
+
+   This function should probably also be able to return the address of
+   GLUT functions themselves, but it doesn't do that yet.
+
+
 
 XXX Things To Do Yet XXXX
 -------------------------
 
-Verify x86 code for normal transformation works with new 4-element normal
-vector arrays.  Pretty sure the SSE code is wrong.
+isosurf with vertex program exhibits some missing triangles (probably
+when recycling the vertex buffer for long prims).
+
+
+
+Porting Info
+------------
+
+If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here
+are some things to change:
+
+1. ctx->Texture._ReallyEnabled is obsolete.
+
+   Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that
+   left room for only 6 units (6*5 < 32) in this field.
+   This field is being replaced by ctx->Texture._EnabledUnits which has one
+   bit per texture unit.  If the bit k of _EnabledUnits is set, that means
+   ctx->Texture.Unit[k]._ReallyEnabled is non-zero.  You'll have to look at
+   ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or
+   rect texture is enabled for unit k.
+
+   This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are
+   obsolete.
+
+   The tokens TEXTURE0_* have been replaced as well (since there's no
+   significance to the "0" part:
+
+   old token           new token
+   TEXTURE0_1D         TEXTURE_1D_BIT
+   TEXTURE0_2D         TEXTURE_2D_BIT
+   TEXTURE0_3D         TEXTURE_3D_BIT
+   TEXTURE0_CUBE       TEXTURE_CUBE_BIT
+   <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 bits will
+   be set in _ReallyEnabled at any time!
+
+   Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?"
+   A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any
+      texure unit all at once (an unusual thing to do).
+      OpenGL defines priorities that basically say GL_TEXTURE_2D has
+      higher priority than GL_TEXTURE_1D, etc.  Also, just because a
+      texture target is enabled by the user doesn't mean we'll actually
+      use that texture!  If a texture object is incomplete (missing mip-
+      map levels, etc) it's as if texturing is disabled for that target.
+      The _ReallyEnabled field will have a bit set ONLY if the texture
+      target is enabled and complete.  This spares the driver writer from
+      examining a _lot_ of GL state to determine which texture target is
+      to be used.
+
+
+2. Tnl tokens changes
+
+   During the implementation of GL_NV_vertex_program some of the vertex
+   buffer code was changed.  Specifically, the VERT_* bits defined in
+   tnl/t_context.h have been renamed to better match the conventions of
+   GL_NV_vertex_program.  The old names are still present but obsolete.
+   Drivers should use the newer names.
+
+   For example:  VERT_RGBA is now VERT_BIT_COLOR0 and
+   VERT_SPEC_RGB is now VERT_BIT_COLOR1.
+
+
+
+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].
 
-Finish up NV_vertex_program support for evaluators.  Vertex arrays seem
-to work as of 4/21/2002.
+   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.
 
-Move sw_span struct into swrast context instead of allocating it on
-the stack.  Allow multiple points to be rendered into one sw_span.
 
-Investigate the normal transformation bug when using non-uniform
-scale matrices.
+9. GLboolean ctx->Tranform.ClipEnabled[MAX_CLIP_PLANES] has been replaced
+   by GLuint ctx->Transform.ClipPlanesEnabled.  The later is a bitfield.
 
-_tnl_end() has flushing forced on.
 
-improve point/line rendering speed.
+10. There's a new matrix_stack type in mtypes.h used for the Modelview,
+   Projection, Color and Texcoord matrix stacks.
 
-readpixels from stencil/z should respect ctx->ReadBuffer
 
-glVertexAttrib*NV(index>15) should cause an error.
+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.
 
-GL_ARB_texture_env_crossbar: Allows any texture combine stage to reference
-any texture source unit
 
 ----------------------------------------------------------------------
-$Id: RELNOTES-4.1,v 1.8 2002/05/27 17:05:51 brianp Exp $