summaryrefslogtreecommitdiff
path: root/src/mesa/main/eval.c
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>1999-10-19 18:37:02 +0000
committerKeith Whitwell <keith@tungstengraphics.com>1999-10-19 18:37:02 +0000
commitd471473b5842154c0b44b7bec149401f6dab43cc (patch)
tree5a6e53fde0662dcd2eb4b3455eaaf0a470126c1d /src/mesa/main/eval.c
parent52880f85b5270fb156c1b75effabc9c2c8b61511 (diff)
Changes to reduce the memory footprint of display lists
Diffstat (limited to 'src/mesa/main/eval.c')
-rw-r--r--src/mesa/main/eval.c186
1 files changed, 112 insertions, 74 deletions
diff --git a/src/mesa/main/eval.c b/src/mesa/main/eval.c
index 18676e73ad..eee7a84509 100644
--- a/src/mesa/main/eval.c
+++ b/src/mesa/main/eval.c
@@ -1,4 +1,4 @@
-/* $Id: eval.c,v 1.4 1999/10/13 18:42:50 brianp Exp $ */
+/* $Id: eval.c,v 1.5 1999/10/19 18:37:03 keithw Exp $ */
/*
* Mesa 3-D graphics library
@@ -1990,12 +1990,13 @@ void gl_GetMapiv( GLcontext* ctx, GLenum target, GLenum query, GLint *v )
static void eval_points1( GLfloat outcoord[][4],
- GLfloat coord[][4],
- const GLuint *flags,
- GLfloat du, GLfloat u1 )
+ GLfloat coord[][4],
+ const GLuint *flags,
+ GLuint start,
+ GLfloat du, GLfloat u1 )
{
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & VERT_EVAL_P1)
outcoord[i][0] = coord[i][0] * du + u1;
else if (flags[i] & VERT_EVAL_ANY) {
@@ -2005,13 +2006,14 @@ static void eval_points1( GLfloat outcoord[][4],
}
static void eval_points2( GLfloat outcoord[][4],
- GLfloat coord[][4],
- const GLuint *flags,
- GLfloat du, GLfloat u1,
- GLfloat dv, GLfloat v1 )
+ GLfloat coord[][4],
+ const GLuint *flags,
+ GLuint start,
+ GLfloat du, GLfloat u1,
+ GLfloat dv, GLfloat v1 )
{
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & VERT_EVAL_P2) {
outcoord[i][0] = coord[i][0] * du + u1;
outcoord[i][1] = coord[i][1] * dv + v1;
@@ -2033,7 +2035,8 @@ static const GLubyte dirty_flags[5] = {
static GLvector4f *eval1_4f( GLvector4f *dest,
GLfloat coord[][4],
- const GLuint *flags,
+ const GLuint *flags,
+ GLuint start,
GLuint dimension,
struct gl_1d_map *map )
{
@@ -2042,7 +2045,7 @@ static GLvector4f *eval1_4f( GLvector4f *dest,
GLfloat (*to)[4] = dest->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C1|VERT_EVAL_P1)) {
GLfloat u = (coord[i][0] - u1) * du;
ASSIGN_4V(to[i], 0,0,0,1);
@@ -2050,6 +2053,7 @@ static GLvector4f *eval1_4f( GLvector4f *dest,
}
dest->count = i;
+ dest->start = VEC_ELT(dest, GLfloat, start);
dest->size = MAX2(dest->size, dimension);
dest->flags |= dirty_flags[dimension];
return dest;
@@ -2058,7 +2062,8 @@ static GLvector4f *eval1_4f( GLvector4f *dest,
static GLvector1ui *eval1_1ui( GLvector1ui *dest,
GLfloat coord[][4],
- const GLuint *flags,
+ const GLuint *flags,
+ GLuint start,
struct gl_1d_map *map )
{
const GLfloat u1 = map->u1;
@@ -2066,7 +2071,7 @@ static GLvector1ui *eval1_1ui( GLvector1ui *dest,
GLuint *to = dest->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C1|VERT_EVAL_P1)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat tmp;
@@ -2074,42 +2079,46 @@ static GLvector1ui *eval1_1ui( GLvector1ui *dest,
to[i] = (GLuint) (GLint) tmp;
}
+ dest->start = VEC_ELT(dest, GLuint, start);
dest->count = i;
return dest;
}
static GLvector3f *eval1_norm( GLvector3f *dest,
- GLfloat coord[][4],
- GLuint *flags, /* not const */
- struct gl_1d_map *map )
+ GLfloat coord[][4],
+ GLuint *flags, /* not const */
+ GLuint start,
+ struct gl_1d_map *map )
{
const GLfloat u1 = map->u1;
const GLfloat du = map->du;
GLfloat (*to)[3] = dest->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C1|VERT_EVAL_P1)) {
GLfloat u = (coord[i][0] - u1) * du;
horner_bezier_curve(map->Points, to[i], u, 3, map->Order);
flags[i+1] |= VERT_NORM; /* reset */
}
+ dest->start = VEC_ELT(dest, GLfloat, start);
dest->count = i;
return dest;
}
static GLvector4ub *eval1_color( GLvector4ub *dest,
- GLfloat coord[][4],
- GLuint *flags, /* not const */
- struct gl_1d_map *map )
+ GLfloat coord[][4],
+ GLuint *flags, /* not const */
+ GLuint start,
+ struct gl_1d_map *map )
{
const GLfloat u1 = map->u1;
const GLfloat du = map->du;
GLubyte (*to)[4] = dest->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C1|VERT_EVAL_P1)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat fcolor[4];
@@ -2118,6 +2127,7 @@ static GLvector4ub *eval1_color( GLvector4ub *dest,
flags[i+1] |= VERT_RGBA; /* reset */
}
+ dest->start = VEC_ELT(dest, GLubyte, start);
dest->count = i;
return dest;
}
@@ -2129,6 +2139,7 @@ static GLvector4f *eval2_obj_norm( GLvector4f *obj_ptr,
GLvector3f *norm_ptr,
GLfloat coord[][4],
GLuint *flags,
+ GLuint start,
GLuint dimension,
struct gl_2d_map *map )
{
@@ -2140,7 +2151,7 @@ static GLvector4f *eval2_obj_norm( GLvector4f *obj_ptr,
GLfloat (*normal)[3] = norm_ptr->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
@@ -2155,6 +2166,7 @@ static GLvector4f *eval2_obj_norm( GLvector4f *obj_ptr,
flags[i+1] |= VERT_NORM;
}
+ obj_ptr->start = VEC_ELT(obj_ptr, GLfloat, start);
obj_ptr->count = i;
obj_ptr->size = MAX2(obj_ptr->size, dimension);
obj_ptr->flags |= dirty_flags[dimension];
@@ -2164,7 +2176,8 @@ static GLvector4f *eval2_obj_norm( GLvector4f *obj_ptr,
static GLvector4f *eval2_4f( GLvector4f *dest,
GLfloat coord[][4],
- const GLuint *flags,
+ const GLuint *flags,
+ GLuint start,
GLuint dimension,
struct gl_2d_map *map )
{
@@ -2175,7 +2188,7 @@ static GLvector4f *eval2_4f( GLvector4f *dest,
GLfloat (*to)[4] = dest->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
@@ -2183,6 +2196,7 @@ static GLvector4f *eval2_4f( GLvector4f *dest,
map->Uorder, map->Vorder);
}
+ dest->start = VEC_ELT(dest, GLfloat, start);
dest->count = i;
dest->size = MAX2(dest->size, dimension);
dest->flags |= dirty_flags[dimension];
@@ -2193,6 +2207,7 @@ static GLvector4f *eval2_4f( GLvector4f *dest,
static GLvector3f *eval2_norm( GLvector3f *dest,
GLfloat coord[][4],
GLuint *flags,
+ GLuint start,
struct gl_2d_map *map )
{
const GLfloat u1 = map->u1;
@@ -2202,7 +2217,7 @@ static GLvector3f *eval2_norm( GLvector3f *dest,
GLfloat (*to)[3] = dest->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
@@ -2211,6 +2226,7 @@ static GLvector3f *eval2_norm( GLvector3f *dest,
flags[i+1] |= VERT_NORM; /* reset */
}
+ dest->start = VEC_ELT(dest, GLfloat, start);
dest->count = i;
return dest;
}
@@ -2218,7 +2234,8 @@ static GLvector3f *eval2_norm( GLvector3f *dest,
static GLvector1ui *eval2_1ui( GLvector1ui *dest,
GLfloat coord[][4],
- const GLuint *flags,
+ const GLuint *flags,
+ GLuint start,
struct gl_2d_map *map )
{
const GLfloat u1 = map->u1;
@@ -2228,7 +2245,7 @@ static GLvector1ui *eval2_1ui( GLvector1ui *dest,
GLuint *to = dest->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
@@ -2239,6 +2256,7 @@ static GLvector1ui *eval2_1ui( GLvector1ui *dest,
to[i] = (GLuint) (GLint) tmp;
}
+ dest->start = VEC_ELT(dest, GLuint, start);
dest->count = i;
return dest;
}
@@ -2248,6 +2266,7 @@ static GLvector1ui *eval2_1ui( GLvector1ui *dest,
static GLvector4ub *eval2_color( GLvector4ub *dest,
GLfloat coord[][4],
GLuint *flags,
+ GLuint start,
struct gl_2d_map *map )
{
const GLfloat u1 = map->u1;
@@ -2257,7 +2276,7 @@ static GLvector4ub *eval2_color( GLvector4ub *dest,
GLubyte (*to)[4] = dest->data;
GLuint i;
- for (i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for (i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
@@ -2268,64 +2287,75 @@ static GLvector4ub *eval2_color( GLvector4ub *dest,
flags[i+1] |= VERT_RGBA; /* reset */
}
+ dest->start = VEC_ELT(dest, GLubyte, start);
dest->count = i;
return dest;
}
static GLvector4f *copy_4f( GLvector4f *out, CONST GLvector4f *in,
- const GLuint *flags)
+ const GLuint *flags,
+ GLuint start )
{
GLfloat (*to)[4] = out->data;
GLfloat (*from)[4] = in->data;
GLuint i;
- for ( i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for ( i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (!(flags[i] & VERT_EVAL_ANY))
COPY_4FV( to[i], from[i] );
+ out->start = VEC_ELT(out, GLfloat, start);
return out;
}
static GLvector3f *copy_3f( GLvector3f *out, CONST GLvector3f *in,
- const GLuint *flags)
+ const GLuint *flags,
+ GLuint start )
{
GLfloat (*to)[3] = out->data;
GLfloat (*from)[3] = in->data;
GLuint i;
- for ( i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for ( i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (!(flags[i] & VERT_EVAL_ANY))
COPY_3V( to[i], from[i] );
+ out->start = VEC_ELT(out, GLfloat, start);
return out;
}
-static GLvector4ub *copy_4ub( GLvector4ub *out, CONST GLvector4ub *in,
- const GLuint *flags )
+static GLvector4ub *copy_4ub( GLvector4ub *out,
+ CONST GLvector4ub *in,
+ const GLuint *flags,
+ GLuint start )
{
GLubyte (*to)[4] = out->data;
GLubyte (*from)[4] = in->data;
GLuint i;
- for ( i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for ( i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (!(flags[i] & VERT_EVAL_ANY))
COPY_4UBV( to[i], from[i] );
+ out->start = VEC_ELT(out, GLubyte, start);
return out;
}
-static GLvector1ui *copy_1ui( GLvector1ui *out, CONST GLvector1ui *in,
- const GLuint *flags )
+static GLvector1ui *copy_1ui( GLvector1ui *out,
+ CONST GLvector1ui *in,
+ const GLuint *flags,
+ GLuint start )
{
GLuint *to = out->data;
CONST GLuint *from = in->data;
GLuint i;
- for ( i = VB_START ; !(flags[i] & VERT_END_VB) ; i++)
+ for ( i = start ; !(flags[i] & VERT_END_VB) ; i++)
if (!(flags[i] & VERT_EVAL_ANY))
to[i] = from[i];
+ out->start = VEC_ELT(out, GLuint, start);
return out;
}
@@ -2354,7 +2384,7 @@ void gl_eval_vb( struct vertex_buffer *VB )
GLuint any_eval1 = VB->OrFlag & (VERT_EVAL_C1|VERT_EVAL_P1);
GLuint any_eval2 = VB->OrFlag & (VERT_EVAL_C2|VERT_EVAL_P2);
- GLuint all_eval = VB->AndFlag & VERT_EVAL_ANY;
+ GLuint all_eval = IM->AndFlag & VERT_EVAL_ANY;
/* Handle the degenerate cases.
*/
@@ -2379,7 +2409,7 @@ void gl_eval_vb( struct vertex_buffer *VB )
* work on useful changes.
*/
if (VB->PurgeFlags) {
- if (!any_eval1 && !any_eval2 && all_eval) VB->Count = VB_START;
+ if (!any_eval1 && !any_eval2 && all_eval) VB->Count = VB->Start;
gl_purge_vertices( VB );
if (!any_eval1 && !any_eval2) return;
} else
@@ -2389,7 +2419,7 @@ void gl_eval_vb( struct vertex_buffer *VB )
*/
if (any_eval1 && (VB->OrFlag & VERT_EVAL_P1))
{
- eval_points1( IM->Obj, coord, flags,
+ eval_points1( IM->Obj, coord, flags, IM->Start,
ctx->Eval.MapGrid1du,
ctx->Eval.MapGrid1u1);
@@ -2398,7 +2428,7 @@ void gl_eval_vb( struct vertex_buffer *VB )
if (any_eval2 && (VB->OrFlag & VERT_EVAL_P2))
{
- eval_points2( IM->Obj, coord, flags,
+ eval_points2( IM->Obj, coord, flags, IM->Start,
ctx->Eval.MapGrid2du,
ctx->Eval.MapGrid2u1,
ctx->Eval.MapGrid2dv,
@@ -2415,17 +2445,17 @@ void gl_eval_vb( struct vertex_buffer *VB )
GLvector1ui *out_index = &IM->v.Index;
if (ctx->Eval.Map1Index && any_eval1)
- VB->IndexPtr = eval1_1ui( out_index, coord, flags,
+ VB->IndexPtr = eval1_1ui( out_index, coord, flags, IM->Start,
&ctx->EvalMap.Map1Index );
if (ctx->Eval.Map2Index && any_eval2)
- VB->IndexPtr = eval2_1ui( out_index, coord, flags,
+ VB->IndexPtr = eval2_1ui( out_index, coord, flags, IM->Start,
&ctx->EvalMap.Map2Index );
if (VB->IndexPtr != in_index) {
new_flags |= VERT_INDEX;
if (!all_eval)
- VB->IndexPtr = copy_1ui( out_index, in_index, flags );
+ VB->IndexPtr = copy_1ui( out_index, in_index, flags, IM->Start );
}
}
@@ -2435,17 +2465,17 @@ void gl_eval_vb( struct vertex_buffer *VB )
GLvector4ub *out_color = &IM->v.Color;
if (ctx->Eval.Map1Color4 && any_eval1)
- VB->ColorPtr = eval1_color( out_color, coord, flags,
+ VB->ColorPtr = eval1_color( out_color, coord, flags, IM->Start,
&ctx->EvalMap.Map1Color4 );
if (ctx->Eval.Map2Color4 && any_eval2)
- VB->ColorPtr = eval2_color( out_color, coord, flags,
+ VB->ColorPtr = eval2_color( out_color, coord, flags, IM->Start,
&ctx->EvalMap.Map2Color4 );
if (VB->ColorPtr != in_color) {
new_flags |= VERT_RGBA;
if (!all_eval)
- VB->ColorPtr = copy_4ub( out_color, in_color, flags );
+ VB->ColorPtr = copy_4ub( out_color, in_color, flags, IM->Start );
}
VB->Color[0] = VB->Color[1] = VB->ColorPtr;
@@ -2458,17 +2488,17 @@ void gl_eval_vb( struct vertex_buffer *VB )
GLvector3f *out_normal = &IM->v.Normal;
if (ctx->Eval.Map1Normal && any_eval1)
- VB->NormalPtr = eval1_norm( out_normal, coord, flags,
+ VB->NormalPtr = eval1_norm( out_normal, coord, flags, IM->Start,
&ctx->EvalMap.Map1Normal );
if (ctx->Eval.Map2Normal && any_eval2)
- VB->NormalPtr = eval2_norm( out_normal, coord, flags,
+ VB->NormalPtr = eval2_norm( out_normal, coord, flags, IM->Start,
&ctx->EvalMap.Map2Normal );
if (VB->NormalPtr != in_normal) {
new_flags |= VERT_NORM;
if (!all_eval)
- VB->NormalPtr = copy_3f( out_normal, in_normal, flags );
+ VB->NormalPtr = copy_3f( out_normal, in_normal, flags, IM->Start );
}
}
@@ -2481,30 +2511,38 @@ void gl_eval_vb( struct vertex_buffer *VB )
if (any_eval1) {
if (ctx->Eval.Map1TextureCoord4)
- tc = eval1_4f( out, coord, flags, 4, &ctx->EvalMap.Map1Texture4);
+ tc = eval1_4f( out, coord, flags, IM->Start,
+ 4, &ctx->EvalMap.Map1Texture4);
else if (ctx->Eval.Map1TextureCoord3)
- tc = eval1_4f( out, coord, flags, 3, &ctx->EvalMap.Map1Texture3);
+ tc = eval1_4f( out, coord, flags, IM->Start, 3,
+ &ctx->EvalMap.Map1Texture3);
else if (ctx->Eval.Map1TextureCoord2)
- tc = eval1_4f( out, coord, flags, 2, &ctx->EvalMap.Map1Texture2);
+ tc = eval1_4f( out, coord, flags, IM->Start, 2,
+ &ctx->EvalMap.Map1Texture2);
else if (ctx->Eval.Map1TextureCoord1)
- tc = eval1_4f( out, coord, flags, 1, &ctx->EvalMap.Map1Texture1);
+ tc = eval1_4f( out, coord, flags, IM->Start, 1,
+ &ctx->EvalMap.Map1Texture1);
}
if (any_eval2) {
if (ctx->Eval.Map2TextureCoord4)
- tc = eval2_4f( out, coord, flags, 4, &ctx->EvalMap.Map2Texture4);
+ tc = eval2_4f( out, coord, flags, IM->Start,
+ 4, &ctx->EvalMap.Map2Texture4);
else if (ctx->Eval.Map2TextureCoord3)
- tc = eval2_4f( out, coord, flags, 3, &ctx->EvalMap.Map2Texture3);
+ tc = eval2_4f( out, coord, flags, IM->Start,
+ 3, &ctx->EvalMap.Map2Texture3);
else if (ctx->Eval.Map2TextureCoord2)
- tc = eval2_4f( out, coord, flags, 2, &ctx->EvalMap.Map2Texture2);
+ tc = eval2_4f( out, coord, flags, IM->Start,
+ 2, &ctx->EvalMap.Map2Texture2);
else if (ctx->Eval.Map2TextureCoord1)
- tc = eval2_4f( out, coord, flags, 1, &ctx->EvalMap.Map2Texture1);
+ tc = eval2_4f( out, coord, flags, IM->Start,
+ 1, &ctx->EvalMap.Map2Texture1);
}
if (tc != in) {
new_flags |= VERT_TEX_ANY(0); /* fix for sizes.. */
if (!all_eval)
- tc = copy_4f( out, in, flags );
+ tc = copy_4f( out, in, flags, IM->Start );
}
VB->TexCoordPtr[0] = tc;
@@ -2518,34 +2556,36 @@ void gl_eval_vb( struct vertex_buffer *VB )
if (any_eval1) {
if (ctx->Eval.Map1Vertex4)
- obj = eval1_4f( out, coord, flags, 4, &ctx->EvalMap.Map1Vertex4);
+ obj = eval1_4f( out, coord, flags, IM->Start,
+ 4, &ctx->EvalMap.Map1Vertex4);
else
- obj = eval1_4f( out, coord, flags, 3, &ctx->EvalMap.Map1Vertex3);
+ obj = eval1_4f( out, coord, flags, IM->Start,
+ 3, &ctx->EvalMap.Map1Vertex3);
}
if (any_eval2) {
if (ctx->Eval.Map2Vertex4)
{
if (ctx->Eval.AutoNormal && (req & VERT_NORM))
- obj = eval2_obj_norm( out, VB->NormalPtr, coord, flags, 4,
- &ctx->EvalMap.Map2Vertex4 );
+ obj = eval2_obj_norm( out, VB->NormalPtr, coord, flags, IM->Start,
+ 4, &ctx->EvalMap.Map2Vertex4 );
else
- obj = eval2_4f( out, coord, flags, 4,
- &ctx->EvalMap.Map2Vertex4);
+ obj = eval2_4f( out, coord, flags, IM->Start,
+ 4, &ctx->EvalMap.Map2Vertex4);
}
else if (ctx->Eval.Map2Vertex3)
{
if (ctx->Eval.AutoNormal && (req & VERT_NORM))
- obj = eval2_obj_norm( out, VB->NormalPtr, coord, flags, 3,
- &ctx->EvalMap.Map2Vertex3 );
+ obj = eval2_obj_norm( out, VB->NormalPtr, coord, flags, IM->Start,
+ 3, &ctx->EvalMap.Map2Vertex3 );
else
- obj = eval2_4f( out, coord, flags, 3,
- &ctx->EvalMap.Map2Vertex3 );
+ obj = eval2_4f( out, coord, flags, IM->Start,
+ 3, &ctx->EvalMap.Map2Vertex3 );
}
}
if (obj != in && !all_eval)
- obj = copy_4f( out, in, flags );
+ obj = copy_4f( out, in, flags, IM->Start );
VB->ObjPtr = obj;
}
@@ -2564,7 +2604,6 @@ void gl_eval_vb( struct vertex_buffer *VB )
if (all_eval) {
for (i = 0 ; i < count ; i++)
flags[i] = oldflags[i] | new_flags;
- VB->AndFlag |= new_flags;
} else {
GLuint andflag = ~0;
for (i = 0 ; i < count ; i++) {
@@ -2572,7 +2611,6 @@ void gl_eval_vb( struct vertex_buffer *VB )
flags[i] = oldflags[i] | new_flags;
andflag &= flags[i];
}
- VB->AndFlag = andflag;
}
}
}