summaryrefslogtreecommitdiff
path: root/docs/relnotes/3.5
blob: b2aa1b852ead2331cae680f521e2aaa0d65608cd (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
217
218
219
220
221
222
223
224
225
226
227

                         Mesa 3.5 release notes

                             June 21, 2001

                             PLEASE READ!!!!



Introduction
------------

Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.5) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.

The biggest change in Mesa 3.5 is a complete overhaul of the source
code in order to make it more modular.  This was driven by the DRI
hardware drivers.  It simplifies the DRI drivers and opens the door
to hardware transform/clip/lighting (TCL).  Keith Whitwell can take
the credit for that.



Driver Support
--------------

The device driver interface in Mesa 3.5 has changed a lot since Mesa 3.4
Not all of the older Mesa drivers have been updated.  Here's the status:

Driver			Status
----------------------	-----------
XMesa (Xlib)		updated
OSMesa (off-screen)	updated
FX (3dfx Voodoo1/2)	updated
SVGA			updated
GGI			not updated
Windows/Win32		not updated
DOS/DJGPP		not updated
BeOS			not updated
Allegro			not updated
D3D			not updated
DOS			not updated

We're looking for volunteers to update the remaining drivers.  Please
post to the Mesa3d-dev mailing list if you can help.



GLU 1.3
-------

Mesa 3.5 includes the SGI Sample Implementation (SI) GLU library.
This version of GLU supports the GLU 1.3 specification.  The old
Mesa GLU library implemented the 1.1 specification.  The SI GLU
library should work much better.

You'll need a C++ compiler to compile the SI GLU library.  This may
be a problem on some systems.



New Extensions
--------------

GL_EXT_convolution
	Adds image convolution to glRead/Copy/DrawPixels/TexImage.

GL_ARB_imaging
	This is the optional imaging subset of OpenGL 1.2.
	It's the GL_EXT_convolution, GL_HP_convolution_border_modes,
	GL_EXT_histogram, GL_EXT_color_table, GL_EXT_color_subtable
	GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract
	and GL_SGI_color_matrix extensions all rolled together.
	This is supported in all software renderers but not in all
	hardware drivers (3dfx for example).

GL_ARB_texture_compression
	This is supported in Mesa but only used by the 3dfx DRI drivers
	for Voodoo4 and later.

GL_ARB_texture_env_add
	This is identical to GL_EXT_texture_env_add.

GL_NV_blend_square
	Adds extra blend source and dest factors which allow squaring
	of color values.

GL_EXT_fog_coord
	Allows specification of a per-vertex fog coordinate instead of
	having fog always computed from the eye distance.

GL_EXT_secondary_color
	Allows specifying the secondary (specular) color for each vertex
	instead of getting it only from lighting in GL_SEPARATE_SPECULAR_COLOR
	mode.

GL_ARB_texture_env_combine
	Basically the same as GL_EXT_texture_env_combine

GL_ARB_texture_env_add extension
	Texture addition mode.

GL_ARB_texture_env_dot3 extension
	Dot product texture environment.

GL_ARB_texture_border_clamp
	Adds GL_CLAMP_TO_BORDER_ARB texture wrap mode

GL_SGIX_depth_texture, GL_SGIX_shadow and GL_SGIX_shadow_ambient
	Implements a shadow casting algorithm based on depth map textures

GL_SGIS_generate_mipmap
	Automatically generate lower mipmap images whenever the base mipmap
	image is changed with glTexImage, glCopyTexImage, etc.



libOSMesa.so
------------

libOSMesa.so is a new library which contains the OSMesa interface for
off-screen rendering.  Apps which need the OSMesa interface should link
with both -lOSMesa and -lGL.  This change was made so that stand-alone
Mesa works the same way as XFree86/DRI's libGL.



Device Driver Changes / Core Mesa Changes
-----------------------------------------

The ctx->Driver.LogicOp() function has been removed.  It used to
be called during state update in order to determine if the driver
could do glLogicOp() operations, and if not, set the SWLogicOpEnabled
flag.  Drivers should instead examine the LogicOp state themselves
and choose specialized point, line, and triangle functions appropriately,
or fall back to software rendering.  The Xlib driver was the only driver
to use this function.  And since the Xlib driver no longer draws
points, lines or triangles using Xlib, the LogicOp function isn't needed.

The ctx->Driver.Dither() function has been removed.  Drivers should
detect dither enable/disable via ctx->Driver.Enable() instead.

The ctx->Driver.IndexMask() and ctx->Driver.ColorMask() functions
are now just called from glIndexMask and glColorMask like the other
GL state-changing functions.  They are no longer called from inside
gl_update_state().  Also, they now return void.  The change was made
mostly for sake of uniformity.

The NEW_DRVSTATE[0123] flags have been removed.  They weren't being used
and are obsolete w.r.t. the way state updates are done in DRI drivers.


Removed obsolete gl_create_visual() and gl_destroy_visual().

Renamed functions (new namespace):

old				new
gl_create_framebuffer		_mesa_create_framebuffer
gl_destroy_framebuffer		_mesa_destroy_framebuffer
gl_create_context		_mesa_create_context
gl_destroy_context		_mesa_destroy_context
gl_context_initialize		_mesa_context_initialize
gl_copy_context			_mesa_copy_context
gl_make_current			_mesa_make_current
gl_make_current2		_mesa_make_current2
gl_get_current_context		_mesa_get_current_context
gl_flush_vb			_mesa_flush_vb
gl_warning			_mesa_warning
gl_compile_error		_mesa_compile_error


All the drivers have been updated, but not all of them have been
tested since I can't test some platforms (DOS, Windows, Allegro, etc).


X/Mesa Driver
-------------

The source files for the X/Mesa driver in src/X have been renamed.
The xmesa[1234].c files are gone.  The new files are xm_api.c,
xm_dd.c, xm_line.c, xm_span.c and xm_tri.c.



Multitexture
------------

Eight texture units are now supported by default.



OpenGL SI related changes
-------------------------

In an effort to make Mesa's internal interfaces more like the OpenGL
SI interfaces, a number of changes have been made:

1. Importing the SI's glcore.h file which defines a number of
interface structures like __GLimports and __GLexports.

2. Renamed "struct gl_context" to "struct __GLcontextRec".

3. Added __glCoreCreateContext() and __glCoreNopDispatch() functions.

4. The GLcontext member Visual is no longer a pointer.

5. New file: imports.c to setup default import functions for Mesa.




16-bit color channels
---------------------

There's experimental support for 16-bit color channels (64-bit pixels)
in Mesa 3.5.  Only the OSMesa interface can be used for 16-bit rendering.
Type "make linux-osmesa16" in the top-level directory to build the
special libOSMesa16.so library.

This hasn't been tested very thoroughly yet so please file bug reports
if you have trouble.

In the future I hope to implement support for 32-bit, floating point
color channels.

----------------------------------------------------------------------