| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 | 
							- 
 -                             Mesa 4.1 release notes
 - 
 -                                October 29, 2002
 - 
 -                                 PLEASE READ!!!!
 - 
 - 
 - 
 - Introduction
 - ------------
 - 
 - Mesa uses an even/odd version number scheme like the Linux kernel.
 - Even numbered versions (such as 4.0) designate stable releases.
 - Odd numbered versions (such as 4.1) designate new developmental releases.
 - 
 - 
 - New Features in Mesa 4.1
 - ------------------------
 - 
 - New extensions.  Docs at http://oss.sgi.com/projects/ogl-sample/registry/
 - 
 - GL_NV_vertex_program
 - 
 -     NVIDIA's vertex programming extension
 - 
 - GL_NV_vertex_program1_1
 - 
 -     A few features built on top of GL_NV_vertex_program
 - 
 - GL_ARB_window_pos
 - 
 -     This is the ARB-approved version of GL_MESA_window_pos
 - 
 - GL_ARB_depth_texture
 - 
 -     This is the ARB-approved version of GL_SGIX_depth_texture.
 -     It allows depth (Z buffer) data to be stored in textures.
 -     This is used by GL_ARB_shadow
 - 
 - GL_ARB_shadow
 - 
 -     Shadow mapping with depth textures.
 -     This is the ARB-approved version of GL_SGIX_shadow.
 - 
 - GL_ARB_shadow_ambient
 - 
 -     Allows one to specify the luminance of shadowed pixels.
 -     This is the ARB-approved version of GL_SGIX_shadow_ambient.
 - 
 - GL_EXT_shadow_funcs
 - 
 -     Extends the set of GL_ARB_shadow texture comparision functions to
 -     include all eight of standard OpenGL dept-test functions.
 - 
 - 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
 - --------------------
 - 
 - A number of Mesa's software drivers haven't been actively maintained for
 - some time.  We rely on volunteers to maintain many of these drivers.
 - Here's the current status of all included drivers:
 - 
 - 
 - Driver			Status
 - ----------------------	---------------------
 - XMesa (Xlib)		implements OpenGL 1.3
 - OSMesa (off-screen)	implements OpenGL 1.3
 - FX (3dfx Voodoo1/2)	implements OpenGL 1.3
 - 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			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
 - -------------------------
 - 
 - 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].
 - 
 -    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.22 2002/10/29 15:06:37 brianp Exp $
 
 
  |