271 lines
7.6 KiB
Groff
271 lines
7.6 KiB
Groff
|
|
||
|
Mesa 3.3 release notes
|
||
|
|
||
|
July 21, 2000
|
||
|
|
||
|
PLEASE READ!!!!
|
||
|
|
||
|
|
||
|
|
||
|
Introduction
|
||
|
------------
|
||
|
|
||
|
Mesa uses an even/odd version number scheme like the Linux kernel.
|
||
|
Odd numbered versions (such as 3.3) designate new developmental releases.
|
||
|
Even numbered versions (such as 3.2.1) designate stable releases.
|
||
|
|
||
|
Mesa 3.3 has a undergone many internal changes since version 3.2
|
||
|
and features a lot of new extensions. 3.3 is expected to be pretty
|
||
|
stable, but perhaps not as stable as 3.2 which has been used by
|
||
|
thousands of users over the past months.
|
||
|
|
||
|
Everyone is encouraged to try Mesa 3.3. Bugs should be reported to
|
||
|
the Mesa bug database on www.sourceforge.net.
|
||
|
|
||
|
|
||
|
|
||
|
Header file / GLenum changes
|
||
|
----------------------------
|
||
|
|
||
|
The gl.h and glu.h headers now use #defines to define all GL_* tokens
|
||
|
instead of C-language enums. This change improves Mesa/OpenGL
|
||
|
interoperability.
|
||
|
|
||
|
|
||
|
|
||
|
New API dispatch code
|
||
|
---------------------
|
||
|
|
||
|
The core Mesa gl* functions are now implemented with a new dispatch
|
||
|
(jump table) which will allow simultaneous direct/indirect rendering.
|
||
|
|
||
|
The code is found in the glapi*.[ch] files.
|
||
|
|
||
|
Of interest: the actual "glFooBar" functions are generated with
|
||
|
templatized code defined in glapitemp.h and included by glapi.c
|
||
|
The glapitemp.h template should be reusable for all sorts of OpenGL
|
||
|
projects.
|
||
|
|
||
|
The new dispatch code has also optimized with x86 assembly code.
|
||
|
This optimization eliminates copying the function arguments during
|
||
|
dispatch.
|
||
|
|
||
|
|
||
|
|
||
|
New thread support
|
||
|
------------------
|
||
|
|
||
|
Thread support in Mesa has been rewritten. The glthread.[ch] files
|
||
|
replace mthreads.[ch]. Thread safety is always enabled (on platforms
|
||
|
which support threads, that is). There is virtually no performance
|
||
|
penalty for typical single-thread applications. See the glapi.c
|
||
|
file for details.
|
||
|
|
||
|
The Xlib driver (XMesa) is now thread-safe as well. Be sure to
|
||
|
call XInitThreads() in your app first. See the xdemos/glthreads.c
|
||
|
demo for an example.
|
||
|
|
||
|
|
||
|
|
||
|
Make configuration changes
|
||
|
--------------------------
|
||
|
|
||
|
If you use the old-style (non GNU automake) method to build Mesa note
|
||
|
that several of the configuration names have changed:
|
||
|
|
||
|
Old name New name
|
||
|
------------- ----------------
|
||
|
linux-elf linux
|
||
|
linux linux-static
|
||
|
linux-386-elf linux-386
|
||
|
linux-386 linux-386-static
|
||
|
etc.
|
||
|
|
||
|
|
||
|
|
||
|
New extensions
|
||
|
--------------
|
||
|
|
||
|
GL_ARB_transpose_matrix
|
||
|
Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB()
|
||
|
functions.
|
||
|
|
||
|
GL_ARB_texture_cube_map
|
||
|
For cube-based reflection mapping.
|
||
|
|
||
|
GL_EXT_texture_add_env
|
||
|
Adds GL_ADD texture environment mode.
|
||
|
See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt
|
||
|
|
||
|
GL_EXT_texture_lod_bias
|
||
|
Allows mipmapped texture blurring and sharpening.
|
||
|
|
||
|
GLX_EXT_visual_rating extension
|
||
|
This extension has no effect in stand-alone Mesa (used for DRI).
|
||
|
|
||
|
GL_HP_occlusion_test
|
||
|
Used for bounding box occlusion testing (see demos/occlude.c).
|
||
|
|
||
|
GL_SGIX_pixel_texture / GL_SGIS_pixel_texture
|
||
|
Lets glDraw/CopyPixels draw a texture coordinate image.
|
||
|
|
||
|
GL_SGI_color_matrix
|
||
|
Adds a color matrix and another set of scale and bias parameters
|
||
|
to the glDraw/CopyPixels paths.
|
||
|
|
||
|
GL_SGI_color_table
|
||
|
Adds additional color tables to the glDraw/Read/CopyPixels paths.
|
||
|
|
||
|
GL_EXT_histogram
|
||
|
Compute histograms for glDraw/Read/CopyPixels.
|
||
|
|
||
|
GL_EXT_blend_func_separate
|
||
|
This is the same as GL_INGR_blend_func_separate.
|
||
|
|
||
|
GL_ARB_texture_cube_mapping
|
||
|
6-face cube mapping, nicer than sphere mapping
|
||
|
|
||
|
GL_EXT_texture_env_combine
|
||
|
For advanced texture environment effects.
|
||
|
|
||
|
|
||
|
Documentation for all these functions can be found at
|
||
|
http://oss.sgi.com/projects/ogl-sample/registry/
|
||
|
|
||
|
|
||
|
|
||
|
GLX_SGI_make_current_read functionality
|
||
|
---------------------------------------
|
||
|
|
||
|
The functionality of this extension is needed for GLX 1.3 (and required
|
||
|
for the Linux/OpenGL standards base).
|
||
|
|
||
|
Implementing this function required a **DEVICE DRIVER CHANGE**.
|
||
|
The old SetBuffer() function has been replaced by SetReadBuffer() and
|
||
|
SetDrawBuffer(). All device drivers will have to be updated because
|
||
|
of this change.
|
||
|
|
||
|
The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa.
|
||
|
The xdemos/wincopy.c program demonstrates it.
|
||
|
|
||
|
|
||
|
|
||
|
Image-related code changes
|
||
|
--------------------------
|
||
|
|
||
|
The imaging path code used by glDrawPixels, glTexImage[123]D,
|
||
|
glTexSubImage[123], etc has been rewritten. It's now faster,
|
||
|
uses less memory and has several bug fixes. This work was
|
||
|
actually started in Mesa 3.1 with the glTexImage paths but has now
|
||
|
been carried over to glDrawPixels as well.
|
||
|
|
||
|
|
||
|
|
||
|
Device driver interface changes
|
||
|
-------------------------------
|
||
|
|
||
|
Added new functions for hardware stencil buffer support:
|
||
|
WriteStencilSpan
|
||
|
ReadStencilSpan
|
||
|
WriteStencilPixels
|
||
|
ReadStencilPixels
|
||
|
|
||
|
|
||
|
Removed old depth buffer functions:
|
||
|
AllocDepthBuffer
|
||
|
DepthTestSpan
|
||
|
DepthTestPixels
|
||
|
ReadDepthSpanFloat
|
||
|
ReadDepthSpanInt
|
||
|
|
||
|
|
||
|
Added new depth buffer functions:
|
||
|
WriteDepthSpan
|
||
|
ReadDepthSpan
|
||
|
WriteDepthPixels
|
||
|
ReadDepthPixels
|
||
|
|
||
|
These functions always read/write 32-bit GLuints. This will allow
|
||
|
drivers to have anywhere from 0 to 32-bit Z buffers without
|
||
|
recompiling for 16 vs 32 bits as was previously needed.
|
||
|
|
||
|
|
||
|
New texture image functions
|
||
|
The entire interface for texture image specification has been updated.
|
||
|
With the new functions, it's optional for Mesa to keep an internal copy
|
||
|
of all textures. Texture download should be a lot faster when the extra
|
||
|
copy isn't made.
|
||
|
|
||
|
Misc changes
|
||
|
TexEnv now takes a target argument
|
||
|
Removed UseGlobalTexturePalette (use Enable function instead)
|
||
|
|
||
|
|
||
|
Also added
|
||
|
ReadPixels
|
||
|
CopyPixels
|
||
|
|
||
|
|
||
|
The SetBufffer function has been replaced by SetDrawBuffer and
|
||
|
SetReadBuffer functions. This lets core Mesa independently
|
||
|
specify which buffer is to be used for reading and which for
|
||
|
drawing.
|
||
|
|
||
|
The Clear function's mask parameter has changed. Instead of
|
||
|
mask being the flags specified by the user to glClear, the
|
||
|
mask is now a bitmask of the DD_*_BIT flags in dd.h. Now
|
||
|
multiple color buffers can be specified for clearing (ala
|
||
|
glDrawBuffers). The driver's Clear function must also
|
||
|
check the glColorMask glIndexMask, and glStencilMask settings
|
||
|
and do the right thing. See the X/Mesa, OS/Mesa, or FX/Mesa
|
||
|
drivers for examples.
|
||
|
|
||
|
|
||
|
The depth buffer changes shouldn't be hard to make for existing
|
||
|
drivers. In fact, it should simply the code. Be careful with
|
||
|
the depthBits value passed to gl_create_context(). 1 is a bad
|
||
|
value! It should normally be 0, 16, 24, or 32.
|
||
|
|
||
|
|
||
|
gl_create_framebuffer() takes new arguments which explicitly tell
|
||
|
core Mesa which ancillary buffers (depth, stencil, accum, alpha)
|
||
|
should be implemented in software. Mesa hardware drivers should
|
||
|
carefully set these flags depending on which buffers are in the
|
||
|
graphics card.
|
||
|
|
||
|
|
||
|
|
||
|
Internal constants
|
||
|
------------------
|
||
|
|
||
|
Point and line size range and granularity limits are now stored
|
||
|
in the gl_constants struct, which is the Const member of GLcontext.
|
||
|
The limits are initialized from values in config.h but may be
|
||
|
overridden by device drivers to reflect the limits of that driver's
|
||
|
hardware.
|
||
|
|
||
|
Also added constants for NumAuxBuffers and SubPixelBits.
|
||
|
|
||
|
|
||
|
|
||
|
OpenGL Conformance
|
||
|
------------------
|
||
|
|
||
|
Mesa now passes all the OpenGL 1.1 conformance tests, except for
|
||
|
antialiased lines. AA lines fail on some, but not all, the tests.
|
||
|
In order to fix the remaining failures, a new AA line algorithm will
|
||
|
be needed (which computes coverage values for end-point fragments).
|
||
|
This will be done for Mesa 3.5/3.6.
|
||
|
|
||
|
|
||
|
|
||
|
OpenGL 1.2 GL_ARB_imaging subset
|
||
|
--------------------------------
|
||
|
|
||
|
Mesa 3.3 implements all the features of GL_ARB_imaging except for
|
||
|
image convolution. This will (hopefully) be done for Mesa 3.5/3.6.
|
||
|
|
||
|
|
||
|
|
||
|
----------------------------------------------------------------------
|