summaryrefslogtreecommitdiffstats
path: root/docs/RELNOTES-4.1
blob: 3a2178f4a47c9e8d37c8f314963e5c05f29179fe (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

                            Mesa 4.1 release notes

                            <month>, <day>, 2002

                               PLEASE READ!!!!



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

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


New Features in Mesa 4.1
------------------------

New extensions.  Docs at http://oss.sgi.com/projects/ogl-sample/registry/

GL_NV_vertex_program

    NVIDIA's vertex programming extension

GL_NV_vertex_program1_1

    A few features built on top of GL_NV_vertex_program

GL_ARB_window_pos

    This is the ARB-approved version of GL_MESA_window_pos

GL_ARB_depth_texture

    This is the ARB-approved version of GL_SGIX_depth_texture.
    It allows depth (Z buffer) data to be stored in textures.
    This is used by GL_ARB_shadow

GL_ARB_shadow

    Shadow mapping with depth textures.
    This is the ARB-approved version of GL_SGIX_shadow.

GL_ARB_shadow_ambient

    Allows one to specify the luminance of shadowed pixels.
    This is the ARB-approved version of GL_SGIX_shadow_ambient.

GL_EXT_shadow_funcs

    Extends the set of GL_ARB_shadow texture comparision functions to
    include all eight of standard OpenGL dept-test functions.

GL_ARB_point_parameters

    This is basically the same as GL_EXT_point_parameters.

GL_ARB_texture_env_crossbar

    Allows any texture combine stage to reference any texture source unit.

GL_NV_point_sprite

    For rendering points as textured quads.  Useful for particle effects.

GL_NV_texture_rectangle

    Allows one to use textures with sizes that are not powers of two.
    Note that mipmapping and several texture wrap modes are not allowed.

GL_EXT_multi_draw_arrays

    Allows arrays of vertex arrays to be rendered with one call.



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.3
OSMesa (off-screen)	implements OpenGL 1.3
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.3
DOS/DJGPP		implements OpenGL 1.3
GGI			implements OpenGL 1.3
BeOS			needs updating (underway)
Allegro			needs updating
D3D			needs updating
DOS			needs updating



Porting Information
-------------------

When moving from Mesa 4.0.x to Mesa 4.1 there are a number of things
you may have to update.

1. _mesa_create_context() changes.  This function now takes a pointer to
   a __GLimports object.  The __GLimports structure contains function
   pointers to system functions like fprintf(), malloc(), etc.
   The _mesa_init_default_imports() function can be used to initialize
   a __GLimports object.  Most device drivers (like the DRI drivers)
   should use this.

2. more to come...



XXX Things To Do Yet XXXX
-------------------------

Verify x86 code for normal transformation works with new 4-element normal
vector arrays.  Pretty sure the SSE code is wrong.

Finish up NV_vertex_program support for evaluators.  Vertex arrays seem
to work as of 4/21/2002.

Allow multiple points to be rendered into one sw_span.

improve point/line rendering speed.

_tnl_end() has flushing forced on.

readpixels from stencil/z should respect ctx->ReadBuffer

glVertexAttrib*NV(index>15) should cause an error.

isosurf with vertex program exhibits some missing triangles (probably
when recycling the vertex buffer for long prims).



Porting Info
------------

If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here
are some things to change:

1. ctx->Texture._ReallyEnabled is obsolete.

   Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that
   left room for only 6 units (6*5 < 32) in this field.
   This field is being replaced by ctx->Texture._EnabledUnits which has one
   bit per texture unit.  If the bit k of _EnabledUnits is set, that means
   ctx->Texture.Unit[k]._ReallyEnabled is non-zero.  You'll have to look at
   ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or
   rect texture is enabled for unit k.

   This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are
   obsolete.

   The tokens TEXTURE0_* have been replaced as well (since there's no
   significance to the "0" part:

   old token           new token
   TEXTURE0_1D         TEXTURE_1D_BIT
   TEXTURE0_2D         TEXTURE_2D_BIT
   TEXTURE0_3D         TEXTURE_3D_BIT
   TEXTURE0_CUBE       TEXTURE_CUBE_BIT
   <none>              TEXTURE_RECT_BIT

   These tokens are only used for the ctx->Texture.Unit[i].Enabled and
   ctx->Texture.Unit[i]._ReallyEnabled fields.  Exactly 0 or 1 bit will
   be set in _ReallyEnabled at any time!

   Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?"
   A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any
      texure unit all at once (an unusual thing to do).
      OpenGL defines priorities that basically say GL_TEXTURE_2D has
      higher priority than GL_TEXTURE_1D, etc.  Also, just because a
      texture target is enabled by the user doesn't mean we'll actually
      use that texture!  If a texture object is incomplete (missing mip-
      map levels, etc) it's as if texturing is disabled for that target.
      The _ReallyEnabled field will have a bit set ONLY if the texture
      target is enabled and complete.  This spares the driver writer from
      examining a _lot_ of GL state to determine which texture target is
      to be used.


2. Tnl tokens changes

   During the implementation of GL_NV_vertex_program some of the vertex
   buffer code was changed.  Specifically, the VERT_* bits defined in
   tnl/t_context.h have been renamed to better match the conventions of
   GL_NV_vertex_program.  The old names are still present but obsolete.
   Drivers should use the newer names.

   For example:  VERT_RGBA is now VERT_BIT_COLOR0 and
   VERT_SPEC_RGB is now VERT_BIT_COLOR1.



----------------------------------------------------------------------
$Id: RELNOTES-4.1,v 1.12 2002/06/30 15:49:03 brianp Exp $