123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
-
- Mesa 4.1 release notes
-
- <month>, <day>, 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
-
- 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.
-
-
-
- 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
- -------------------------
-
- Verify x86 code for normal transformation works with new 4-element normal
- vector arrays. Pretty sure the SSE code is wrong.
-
- Allow multiple points to be rendered into one sw_span.
-
- improve point/line rendering speed.
-
- glVertexAttrib*NV(index>15) should cause an error.
-
- 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:
-
- - Rename ctx->Color.DrawDestMask to ctx->Color._DrawDestMask
- - Rename ctx->Color.DriverDrawBuffer to ctx->Color._DriverDrawBuffer
- - Rename ctx->Pixel.DriverReadBuffer to ctx->Pixel._DriverReadBuffer
- - Removed ctx->Color.MultiDrawBuffer
- - Removed ctx->Driver.SetDrawBuffer
- - 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.
- - Removed swrast->Driver.SetReadBuffer
- - Added swrast->Driver.SetBuffer. This function should be implemented by
- _all_ device drivers. 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.
-
-
- 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.
-
-
-
- ----------------------------------------------------------------------
- $Id: RELNOTES-4.1,v 1.15 2002/08/17 00:23:19 brianp Exp $
|