summaryrefslogtreecommitdiff
path: root/docs/RELNOTES-3.3
blob: d93031d5685aba3488e45b57829f9e898b3d26e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216

                         Mesa 3.3 release notes

                             PLEASE READ!!!!




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.


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.



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_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.

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.




----------------------------------------------------------------------
$Id: RELNOTES-3.3,v 1.5 2000/05/22 18:47:29 brianp Exp $