misc updates
[mesa.git] / docs / RELNOTES-4.1
1
2 Mesa 4.1 release notes
3
4 <month>, <day>, 2002
5
6 PLEASE READ!!!!
7
8
9
10 Introduction
11 ------------
12
13 Mesa uses an even/odd version number scheme like the Linux kernel.
14 Even numbered versions (such as 4.0) designate stable releases.
15 Odd numbered versions (such as 4.1) designate new developmental releases.
16
17
18 New Features in Mesa 4.1
19 ------------------------
20
21 New extensions. Docs at http://oss.sgi.com/projects/ogl-sample/registry/
22
23 GL_NV_vertex_program
24
25 NVIDIA's vertex programming extension
26
27 GL_NV_vertex_program1_1
28
29 A few features built on top of GL_NV_vertex_program
30
31 GL_ARB_window_pos
32
33 This is the ARB-approved version of GL_MESA_window_pos
34
35 GL_ARB_depth_texture
36
37 This is the ARB-approved version of GL_SGIX_depth_texture.
38 It allows depth (Z buffer) data to be stored in textures.
39 This is used by GL_ARB_shadow
40
41 GL_ARB_shadow
42
43 Shadow mapping with depth textures.
44 This is the ARB-approved version of GL_SGIX_shadow.
45
46 GL_ARB_shadow_ambient
47
48 Allows one to specify the luminance of shadowed pixels.
49 This is the ARB-approved version of GL_SGIX_shadow_ambient.
50
51 GL_EXT_shadow_funcs
52
53 Extends the set of GL_ARB_shadow texture comparision functions to
54 include all eight of standard OpenGL dept-test functions.
55
56 GL_ARB_point_parameters
57
58 This is basically the same as GL_EXT_point_parameters.
59
60 GL_ARB_texture_env_crossbar
61
62 Allows any texture combine stage to reference any texture source unit.
63
64 GL_NV_point_sprite
65
66 For rendering points as textured quads. Useful for particle effects.
67
68 GL_NV_texture_rectangle
69
70 Allows one to use textures with sizes that are not powers of two.
71 Note that mipmapping and several texture wrap modes are not allowed.
72
73 GL_EXT_multi_draw_arrays
74
75 Allows arrays of vertex arrays to be rendered with one call.
76
77
78
79 Device Driver Status
80 --------------------
81
82 A number of Mesa's software drivers haven't been actively maintained for
83 some time. We rely on volunteers to maintain many of these drivers.
84 Here's the current status of all included drivers:
85
86
87 Driver Status
88 ---------------------- ---------------------
89 XMesa (Xlib) implements OpenGL 1.3
90 OSMesa (off-screen) implements OpenGL 1.3
91 FX (3dfx Voodoo1/2) implements OpenGL 1.3
92 SVGA implements OpenGL 1.3
93 Wind River UGL implements OpenGL 1.3
94 Windows/Win32 implements OpenGL 1.3
95 DOS/DJGPP implements OpenGL 1.3
96 GGI implements OpenGL 1.3
97 BeOS needs updating (underway)
98 Allegro needs updating
99 D3D needs updating
100 DOS needs updating
101
102
103
104 XXX Things To Do Yet XXXX
105 -------------------------
106
107 Verify x86 code for normal transformation works with new 4-element normal
108 vector arrays. Pretty sure the SSE code is wrong.
109
110 Allow multiple points to be rendered into one sw_span.
111
112 improve point/line rendering speed.
113
114 glVertexAttrib*NV(index>15) should cause an error.
115
116 isosurf with vertex program exhibits some missing triangles (probably
117 when recycling the vertex buffer for long prims).
118
119
120
121 Porting Info
122 ------------
123
124 If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here
125 are some things to change:
126
127 1. ctx->Texture._ReallyEnabled is obsolete.
128
129 Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that
130 left room for only 6 units (6*5 < 32) in this field.
131 This field is being replaced by ctx->Texture._EnabledUnits which has one
132 bit per texture unit. If the bit k of _EnabledUnits is set, that means
133 ctx->Texture.Unit[k]._ReallyEnabled is non-zero. You'll have to look at
134 ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or
135 rect texture is enabled for unit k.
136
137 This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are
138 obsolete.
139
140 The tokens TEXTURE0_* have been replaced as well (since there's no
141 significance to the "0" part:
142
143 old token new token
144 TEXTURE0_1D TEXTURE_1D_BIT
145 TEXTURE0_2D TEXTURE_2D_BIT
146 TEXTURE0_3D TEXTURE_3D_BIT
147 TEXTURE0_CUBE TEXTURE_CUBE_BIT
148 <none> TEXTURE_RECT_BIT
149
150 These tokens are only used for the ctx->Texture.Unit[i].Enabled and
151 ctx->Texture.Unit[i]._ReallyEnabled fields. Exactly 0 or 1 bits will
152 be set in _ReallyEnabled at any time!
153
154 Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?"
155 A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any
156 texure unit all at once (an unusual thing to do).
157 OpenGL defines priorities that basically say GL_TEXTURE_2D has
158 higher priority than GL_TEXTURE_1D, etc. Also, just because a
159 texture target is enabled by the user doesn't mean we'll actually
160 use that texture! If a texture object is incomplete (missing mip-
161 map levels, etc) it's as if texturing is disabled for that target.
162 The _ReallyEnabled field will have a bit set ONLY if the texture
163 target is enabled and complete. This spares the driver writer from
164 examining a _lot_ of GL state to determine which texture target is
165 to be used.
166
167
168 2. Tnl tokens changes
169
170 During the implementation of GL_NV_vertex_program some of the vertex
171 buffer code was changed. Specifically, the VERT_* bits defined in
172 tnl/t_context.h have been renamed to better match the conventions of
173 GL_NV_vertex_program. The old names are still present but obsolete.
174 Drivers should use the newer names.
175
176 For example: VERT_RGBA is now VERT_BIT_COLOR0 and
177 VERT_SPEC_RGB is now VERT_BIT_COLOR1.
178
179
180
181 3. Read/Draw Buffer changes
182
183 The business of setting the current read/draw buffers in Mesa 4.0.x
184 was complicated. It's much simpler now in Mesa 4.1.
185
186 Here are the changes:
187
188 - Rename ctx->Color.DrawDestMask to ctx->Color._DrawDestMask
189 - Rename ctx->Color.DriverDrawBuffer to ctx->Color._DriverDrawBuffer
190 - Rename ctx->Pixel.DriverReadBuffer to ctx->Pixel._DriverReadBuffer
191 - Removed ctx->Color.MultiDrawBuffer
192 - Removed ctx->Driver.SetDrawBuffer
193 - Added ctx->Driver.DrawBuffer and ctx->Driver.ReadBuffer. These functions
194 exactly correspond to glDrawBuffer and glReadBuffer calls.
195 Many drivers will set ctx->Driver.DrawBuffer = _swrast_DrawBuffer and
196 leave ctx->Draw.ReadBuffer NULL.
197 DRI drivers should implement their own function for ctx->Driver.DrawBuffer
198 and use it to set the current hardware drawing buffer. You'll probably
199 also want to check for GL_FRONT_AND_BACK mode and fall back to software.
200 Call _swrast_DrawBuffer() too, to update the swrast state.
201 - Removed swrast->Driver.SetReadBuffer
202 - Added swrast->Driver.SetBuffer. This function should be implemented by
203 _all_ device drivers. Mesa will call it to specify the buffer to use
204 for span reading AND writing and point/line/triangle rendering. There
205 should be no confusion between current read or draw buffer anymore.
206
207
208 4. _mesa_create_context() changes. This function now takes a pointer to
209 a __GLimports object. The __GLimports structure contains function
210 pointers to system functions like fprintf(), malloc(), etc.
211 The _mesa_init_default_imports() function can be used to initialize
212 a __GLimports object. Most device drivers (like the DRI drivers)
213 should use this.
214
215
216
217 ----------------------------------------------------------------------
218 $Id: RELNOTES-4.1,v 1.14 2002/08/01 15:16:46 brianp Exp $