0,0 → 1,279 |
|
Mesa 5.1 release notes |
|
December 17, 2003 |
|
PLEASE READ!!!! |
|
|
|
Introduction |
------------ |
|
Mesa uses an even/odd version number scheme like the Linux kernel. |
Even-numbered versions (such as 5.0) designate stable releases. |
Odd-numbered versions (such as 5.1) designate new developmental releases. |
|
|
Bug fixes |
--------- |
See the VERSIONS file for a list of bugs fixed in this release. |
|
|
|
New Features in Mesa 5.1 |
------------------------ |
|
GL_ARB_vertex_program / GL_ARB_fragment_program |
Michal Krol and Karl Rasche implemented these extensions. Thanks! |
Be aware that there may be some rough edges and lurking bugs. |
|
GL_ATI_texture_env_combine3 extension |
This adds a few new texture combine modes. |
Contributed by Ian Romanick. |
|
GL_SGI_texture_color_table |
Adds a color table lookup to the RGBA texture path. There's a separate |
color table for each texture unit. |
Contributed by Eric Plante. |
|
GL_NV_fragment_program |
NVIDIA's fragment-level programming feature. |
Possible lurking bugs: |
- the DDX and DDY commands aren't fully tested |
- there may be bugs in the parser |
- the TEX and TXP instructions both do perspective correction |
- the pack/unpack instructions may not be correct |
|
GL_EXT_depth_bounds_test |
This extension adds a scissor-like test for the Z axis. It's used to |
optimize stencil-volume shadow algorithms. |
|
GL_NV_light_max_exponent |
Lifts the 128 limit for max light exponent. |
|
GL_EXT_texture_rectangle |
Identical to GL_NV_texture_rectangle |
|
GL_ARB_occlusion_query |
Useful for visibility-based culling. |
|
GL_ARB_texture_non_power_of_two |
Removes the restriction that texture dimensions must be powers of two. |
|
GL_ARB_vertex_buffer_object |
Allows server-side vertex arrays, optimized host/card data transfers, etc. |
|
GL_ARB_point_sprite |
ARB-approved version of GL_NV_point_sprite. Basically allows textures |
to be applied to points. |
|
GL_IBM_multimode_draw_arrays |
Allows multiple vertex arrays to be drawn with one call, including arrays |
of different types of primitives. |
|
GL_SUN_multi_draw_arrays |
An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4. |
|
Faster glDrawPixels / glCopyPixels in X11 driver |
If your X screen is 32bpp, glDrawPixels to the front color buffer will |
be accelerated (via XPutImage()) if the image format is GL_BGRA and the |
type is GL_UNSIGNED_BYTE. No raster operations, such as depth test, |
blend, fog, etc. can be enabled. |
|
If your X screen is 16bpp, glDrawPixels to the front color buffer will |
be accelerated (via XPutImage()) if the image format is GL_RGB and the |
type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth |
test, blend, fog, etc. can be enabled. |
|
glCopyPixels() calls for the front color buffer will be accelerated |
(via XCopyArea()) if no raster operations, such as depth test, blend, |
fog, pixel zoom, etc. are enabled. |
|
The speed-up over typical software rendering is a factor of 10 for |
glDrawPixels and 100 for glCopyPixels. |
|
|
With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object, |
GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports |
all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release) |
will advertise GL_VERSION = "1.5". |
|
|
|
Vertex/Fragment program debugger |
-------------------------------- |
|
GL_MESA_program_debug is an experimental extension to support |
interactive debugging of vertex and fragment programs. See the |
docs/specs/OLD/MESA_program_debug.spec file for details. |
|
The bulk of the vertex/fragment program debugger is implemented |
outside of Mesa. The GL_MESA_program_debug extension just has minimal |
hooks for stopping running programs and inspecting programs. |
|
The progs/tests/debugger.c (only in CVS) program is an example of how |
the extension can be used. Presently, the debugger code and demo code |
is in the same file. Eventually the debugger code should be moved |
into a reusable module. |
|
As it is now, the demo lets you set breakpoings in vertex/fragment |
programs, single step, and print intermediate register values. It's |
basically just a proof of concept. |
|
|
|
Directory tree reorganization |
----------------------------- |
|
The directory structure for Mesa has been overhauled to improve its layout. |
All source code for Mesa, GLU, GLUT, etc is now under the src/ directory |
in appropriate subdirectories. |
|
The Mesa source code and drivers has been reorganized under src/mesa/. |
|
All demonstration programs and tests are now in subdirectories under progs/. |
|
|
|
Build System Changes |
-------------------- |
|
The GNU automake/autoconf support has been removed. As it was, it seldom |
worked on anything but Linux. The Mesa developers aren't big fans of |
automake/autoconf/libtool and didn't have the time to maintain it. |
If someone wants to contribute new automake/autoconf support (and is |
willing to maintain it), it may be re-incorporated into Mesa, subject |
to some requirements. |
|
The "old style" makefile system has been updated: |
1. Make-config has been trimmed down to fewer, modern configurations. |
2. Most of the bin/mklib.* scripts have been rolled into a new "mklib" |
script that works on all sorts of systems. There are probably some |
bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5. |
Improvements/contributes are greatly appreciated. |
3. The Makefile.X11 files have been cleaned up in various ways |
|
|
|
Source File Changes |
------------------- |
|
The mmath.[ch] files are obsolete. Their contents have been moved |
into the imports.[ch] and macros.[ch] files. |
|
The files related to vertex and fragment programming have changed. |
Old files: |
vpexec.[ch] |
vpparse.[ch] |
vpstate.[ch] |
New files: |
program.[ch] - generic ARB/NV program code |
arbprogram.[ch] - ARB program API functions |
arbfragparse.[ch] - ARB fragment program parsing |
arbvertparse.[ch] - ARB vertex program parsing |
arbparse.[ch] - ARB vertex/fragment parsing |
arbparse_syn.h - vertex/fragment program syntax |
nvprogram.[ch] - NV program API functions |
nvvertprog.h - NV vertex program definitions |
nvfragprog.h - NV fragment program definitions |
nvvertparse.[ch] - NV vertex program parser |
nvfragparse.[ch] - NV fragment program parser |
nvvertexec.[ch] - NV vertex program execution |
swrast/s_nvfragprog.[ch] - NV fragment program execution |
|
The files related to per-vertex handling have changed. |
Old files: |
tnl/t_eval_api.c - old per-vertex code |
tnl/t_imm_alloc.c - old per-vertex code |
tnl/t_imm_api.c - old per-vertex code |
tnl/t_imm_debug.c - old per-vertex code |
tnl/t_imm_dlist.c - old per-vertex code |
tnl/t_imm_elt.c - old per-vertex code |
tnl/t_imm_eval.c - old per-vertex code |
tnl/t_imm_exec.c - old per-vertex code |
tnl/t_imm_fixup.c - old per-vertex code |
tnl/t_vtx_sse.c - old per-vertex code |
tnl/t_vtx_x86.c - old per-vertex code |
New files: |
tnl/t_save_api.c - new per-vertex code |
tnl/t_save_loopback.c - new per-vertex code |
tnl/t_save_playback.c - new per-vertex code |
tnl/t_vtx_eval.c - old per-vertex code |
|
Other new files: |
bufferobj.[ch] - GL_ARB_vertex_buffer_object functions |
version.h - defines the Mesa version info |
|
Other removed files: |
swrast/s_histogram.[ch] - moved into src/histogram.c |
|
|
|
Other Changes |
------------- |
|
The ctx->Driver.CreateTexture function has been removed - it wasn't used. |
|
New device driver hook functions: |
NewTextureObject - used to allocate struct gl_texture_objects |
NewTextureImage - used to allocate struct gl_texture_images |
|
New ctx->Texture._EnabledCoordUnits field: |
With the addition of GL_NV_fragment_program we may need to interpolate |
various sets of texture coordinates even when the corresponding texture |
unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get |
called but we still may have to interpolate texture coordinates across |
triangles so that the fragment program will get them. |
This new field indicates which sets of texture coordinates are needed. |
If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the |
same bit MUST be set in ctx->Texture._EnabledCoordUnits. |
|
The ctx->_TriangleCaps field is deprecated. |
Instead of testing the DD_* bits in _TriangleCaps, you should instead |
directly test the relevant state variables, or use one of the helper |
functions like NEED_SECONDARY_COLOR() at the bottom of context.h |
While testing _TriangleCaps bits was fast, it was kludgey, and setting |
the bits in the first place could be error prone. |
|
New vertex processing code. |
The code behind glBegin, glEnd, glVertex, glNormal, etc. has been |
totally rewritten. It's a cleaner implementation now and should use |
less memory. (Keith) |
|
|
|
To Do |
----- |
Add screen-awareness to fakeglx.c |
|
|
|
|
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.4 |
OSMesa (off-screen) implements OpenGL 1.4 |
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.4 |
DJGPP implements OpenGL 1.4 |
GGI implements OpenGL 1.3 |
BeOS implements OpenGL 1.4 |
Allegro needs updating |
D3D needs updating |
|
Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the |
driver call the _mesa_enable_1_4_extensions() function. |
|
|
---------------------------------------------------------------------- |