-/* $Id: t_imm_eval.c,v 1.15 2001/08/14 00:50:44 keithw Exp $ */
+/* $Id: t_imm_eval.c,v 1.21 2002/01/22 14:35:16 brianp Exp $ */
/*
* Mesa 3-D graphics library
GLfloat du, GLfloat u1 )
{
GLuint i;
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & VERT_EVAL_ANY) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & VERT_BITS_EVAL_ANY) {
outcoord[i][0] = coord[i][0];
outcoord[i][1] = coord[i][1];
- if (flags[i] & VERT_EVAL_P1)
+ if (flags[i] & VERT_BIT_EVAL_P1)
outcoord[i][0] = coord[i][0] * du + u1;
}
}
GLfloat dv, GLfloat v1 )
{
GLuint i;
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++) {
- if (flags[i] & VERT_EVAL_ANY) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++) {
+ if (flags[i] & VERT_BITS_EVAL_ANY) {
outcoord[i][0] = coord[i][0];
outcoord[i][1] = coord[i][1];
- if (flags[i] & VERT_EVAL_P2) {
+ if (flags[i] & VERT_BIT_EVAL_P2) {
outcoord[i][0] = coord[i][0] * du + u1;
outcoord[i][1] = coord[i][1] * dv + v1;
}
GLfloat (*to)[4] = dest->data;
GLuint i;
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C1|VERT_EVAL_P1)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & (VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1)) {
GLfloat u = (coord[i][0] - u1) * du;
ASSIGN_4V(to[i], 0,0,0,1);
_math_horner_bezier_curve(map->Points, to[i], u,
ASSERT(dest->Type == GL_FLOAT);
ASSERT(dest->StrideB == 4 * sizeof(GLfloat));
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C1|VERT_EVAL_P1)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & (VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1)) {
GLfloat u = (coord[i][0] - u1) * du;
ASSIGN_4V(to[i], 0,0,0,1);
_math_horner_bezier_curve(map->Points, to[i], u,
GLuint *to = dest->data;
GLuint i;
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C1|VERT_EVAL_P1)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & (VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat tmp;
_math_horner_bezier_curve(map->Points, &tmp, u, 1, map->Order);
}
-static void eval1_norm( GLvector3f *dest,
+static void eval1_norm( GLvector4f *dest,
GLfloat coord[][4],
const GLuint *flags,
struct gl_1d_map *map )
{
const GLfloat u1 = map->u1;
const GLfloat du = map->du;
- GLfloat (*to)[3] = dest->data;
+ GLfloat (*to)[4] = dest->data;
GLuint i;
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C1|VERT_EVAL_P1)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & (VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1)) {
GLfloat u = (coord[i][0] - u1) * du;
_math_horner_bezier_curve(map->Points, to[i], u, 3, map->Order);
}
static void eval2_obj_norm( GLvector4f *obj_ptr,
- GLvector3f *norm_ptr,
+ GLvector4f *norm_ptr,
GLfloat coord[][4],
GLuint *flags,
GLuint dimension,
const GLfloat v1 = map->v1;
const GLfloat dv = map->dv;
GLfloat (*obj)[4] = obj_ptr->data;
- GLfloat (*normal)[3] = norm_ptr->data;
+ GLfloat (*normal)[4] = norm_ptr->data;
GLuint i;
/* fprintf(stderr, "%s\n", __FUNCTION__); */
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & (VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
GLfloat du[4], dv[4];
_math_de_casteljau_surf(map->Points, obj[i], du, dv, u, v, dimension,
map->Uorder, map->Vorder);
- du[0] = du[0]*obj[i][3] - du[3]*obj[i][0];
- du[1] = du[1]*obj[i][3] - du[3]*obj[i][1];
- du[2] = du[2]*obj[i][3] - du[3]*obj[i][2];
+ if (dimension == 4) {
+ du[0] = du[0]*obj[i][3] - du[3]*obj[i][0];
+ du[1] = du[1]*obj[i][3] - du[3]*obj[i][1];
+ du[2] = du[2]*obj[i][3] - du[3]*obj[i][2];
- dv[0] = dv[0]*obj[i][3] - dv[3]*obj[i][0];
- dv[1] = dv[1]*obj[i][3] - dv[3]*obj[i][1];
- dv[2] = dv[2]*obj[i][3] - dv[3]*obj[i][2];
+ dv[0] = dv[0]*obj[i][3] - dv[3]*obj[i][0];
+ dv[1] = dv[1]*obj[i][3] - dv[3]*obj[i][1];
+ dv[2] = dv[2]*obj[i][3] - dv[3]*obj[i][2];
+ }
CROSS3(normal[i], du, dv);
NORMALIZE_3FV(normal[i]);
GLfloat (*to)[4] = dest->data;
GLuint i;
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & (VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
/* fprintf(stderr, "coord %d: %f %f\n", i, coord[i][0], coord[i][1]); */
ASSERT(dest->Type == GL_FLOAT);
ASSERT(dest->StrideB == 4 * sizeof(GLfloat));
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & (VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
_math_horner_bezier_surf(map->Points, to[i], u, v, dimension,
}
-static void eval2_norm( GLvector3f *dest,
+static void eval2_norm( GLvector4f *dest,
GLfloat coord[][4],
GLuint *flags,
struct gl_2d_map *map )
const GLfloat du = map->du;
const GLfloat v1 = map->v1;
const GLfloat dv = map->dv;
- GLfloat (*to)[3] = dest->data;
+ GLfloat (*to)[4] = dest->data;
GLuint i;
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++) {
+ if (flags[i] & (VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
_math_horner_bezier_surf(map->Points, to[i], u, v, 3,
map->Uorder, map->Vorder);
- }
-
+ }
+ }
}
GLuint *to = dest->data;
GLuint i;
- for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++)
- if (flags[i] & (VERT_EVAL_C2|VERT_EVAL_P2)) {
+ for (i = 0 ; !(flags[i] & VERT_BIT_END_VB) ; i++)
+ if (flags[i] & (VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2)) {
GLfloat u = (coord[i][0] - u1) * du;
GLfloat v = (coord[i][1] - v1) * dv;
GLfloat tmp;
}
}
-static void copy_3f( GLfloat to[][3], GLfloat from[][3], GLuint count )
+static void copy_3f( GLfloat to[][4], GLfloat from[][4], GLuint count )
{
- int i;
+ GLuint i;
/* MEMCPY( to, from, (count) * sizeof(to[0])); */
for (i = 0 ; i < count ; i++) {
/* fprintf(stderr, "copy norm %d from %p: %f %f %f\n", i, */
GLuint eval1 = 0, eval2 = 0;
if (ctx->Eval.Map1Index)
- eval1 |= VERT_INDEX;
+ eval1 |= VERT_BIT_INDEX;
if (ctx->Eval.Map2Index)
- eval2 |= VERT_INDEX;
+ eval2 |= VERT_BIT_INDEX;
if (ctx->Eval.Map1Color4)
- eval1 |= VERT_RGBA;
+ eval1 |= VERT_BIT_COLOR0;
if (ctx->Eval.Map2Color4)
- eval2 |= VERT_RGBA;
+ eval2 |= VERT_BIT_COLOR0;
if (ctx->Eval.Map1Normal)
- eval1 |= VERT_NORM;
+ eval1 |= VERT_BIT_NORMAL;
if (ctx->Eval.Map2Normal)
- eval2 |= VERT_NORM;
+ eval2 |= VERT_BIT_NORMAL;
if (ctx->Eval.Map1TextureCoord4 ||
ctx->Eval.Map1TextureCoord3 ||
ctx->Eval.Map1TextureCoord2 ||
ctx->Eval.Map1TextureCoord1)
- eval1 |= VERT_TEX0;
+ eval1 |= VERT_BIT_TEX0;
if (ctx->Eval.Map2TextureCoord4 ||
ctx->Eval.Map2TextureCoord3 ||
ctx->Eval.Map2TextureCoord2 ||
ctx->Eval.Map2TextureCoord1)
- eval2 |= VERT_TEX0;
+ eval2 |= VERT_BIT_TEX0;
if (ctx->Eval.Map1Vertex4)
- eval1 |= VERT_OBJ_234;
+ eval1 |= VERT_BITS_OBJ_234;
if (ctx->Eval.Map1Vertex3)
- eval1 |= VERT_OBJ_23;
+ eval1 |= VERT_BITS_OBJ_23;
if (ctx->Eval.Map2Vertex4) {
if (ctx->Eval.AutoNormal)
- eval2 |= VERT_OBJ_234 | VERT_NORM;
+ eval2 |= VERT_BITS_OBJ_234 | VERT_BIT_NORMAL;
else
- eval2 |= VERT_OBJ_234;
+ eval2 |= VERT_BITS_OBJ_234;
}
else if (ctx->Eval.Map2Vertex3) {
if (ctx->Eval.AutoNormal)
- eval2 |= VERT_OBJ_23 | VERT_NORM;
+ eval2 |= VERT_BITS_OBJ_23 | VERT_BIT_NORMAL;
else
- eval2 |= VERT_OBJ_23;
+ eval2 |= VERT_BITS_OBJ_23;
}
tnl->eval.EvalMap1Flags = eval1;
GLuint *flags = IM->Flag + IM->CopyStart;
GLuint copycount;
GLuint orflag = IM->OrFlag;
- GLuint any_eval1 = orflag & (VERT_EVAL_C1|VERT_EVAL_P1);
- GLuint any_eval2 = orflag & (VERT_EVAL_C2|VERT_EVAL_P2);
+ GLuint any_eval1 = orflag & (VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1);
+ GLuint any_eval2 = orflag & (VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2);
GLuint req = 0;
GLuint purge_flags = 0;
- GLfloat (*coord)[4] = IM->Obj + IM->CopyStart;
+ GLfloat (*coord)[4] = IM->Attrib[VERT_ATTRIB_POS] + IM->CopyStart;
- if (IM->AndFlag & VERT_EVAL_ANY)
+ if (IM->AndFlag & VERT_BITS_EVAL_ANY)
copycount = IM->Start - IM->CopyStart; /* just copy copied vertices */
else
copycount = IM->Count - IM->CopyStart; /* copy all vertices */
req |= tnl->pipeline.inputs & tnl->eval.EvalMap1Flags;
if (!ctx->Eval.Map1Vertex4 && !ctx->Eval.Map1Vertex3)
- purge_flags = (VERT_EVAL_P1|VERT_EVAL_C1);
+ purge_flags = (VERT_BIT_EVAL_P1|VERT_BIT_EVAL_C1);
- if (orflag & VERT_EVAL_P1) {
- eval_points1( store->Obj + IM->CopyStart,
+ if (orflag & VERT_BIT_EVAL_P1) {
+ eval_points1( store->Attrib[VERT_ATTRIB_POS] + IM->CopyStart,
coord, flags,
ctx->Eval.MapGrid1du,
ctx->Eval.MapGrid1u1);
- coord = store->Obj + IM->CopyStart;
+ coord = store->Attrib[VERT_ATTRIB_POS] + IM->CopyStart;
}
}
req |= tnl->pipeline.inputs & tnl->eval.EvalMap2Flags;
if (!ctx->Eval.Map2Vertex4 && !ctx->Eval.Map2Vertex3)
- purge_flags |= (VERT_EVAL_P2|VERT_EVAL_C2);
+ purge_flags |= (VERT_BIT_EVAL_P2|VERT_BIT_EVAL_C2);
- if (orflag & VERT_EVAL_P2) {
- eval_points2( store->Obj + IM->CopyStart,
+ if (orflag & VERT_BIT_EVAL_P2) {
+ eval_points2( store->Attrib[VERT_ATTRIB_POS] + IM->CopyStart,
coord, flags,
ctx->Eval.MapGrid2du,
ctx->Eval.MapGrid2u1,
ctx->Eval.MapGrid2dv,
ctx->Eval.MapGrid2v1 );
- coord = store->Obj + IM->CopyStart;
+ coord = store->Attrib[VERT_ATTRIB_POS] + IM->CopyStart;
}
}
/* Perform the evaluations on active data elements.
*/
- if (req & VERT_INDEX)
+ if (req & VERT_BIT_INDEX)
{
GLuint generated = 0;
if (ctx->Eval.Map1Index && any_eval1) {
eval1_1ui( &tmp->Index, coord, flags, &ctx->EvalMap.Map1Index );
- generated |= VERT_EVAL_C1|VERT_EVAL_P1;
+ generated |= VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1;
}
if (ctx->Eval.Map2Index && any_eval2) {
eval2_1ui( &tmp->Index, coord, flags, &ctx->EvalMap.Map2Index );
- generated |= VERT_EVAL_C2|VERT_EVAL_P2;
+ generated |= VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2;
}
}
- if (req & VERT_RGBA)
+ if (req & VERT_BIT_COLOR0)
{
GLuint generated = 0;
if (copycount)
- copy_4f_stride( store->Color + IM->CopyStart,
+ copy_4f_stride( store->Attrib[VERT_ATTRIB_COLOR0] + IM->CopyStart,
(GLfloat *)tmp->Color.Ptr,
tmp->Color.StrideB,
copycount );
- tmp->Color.Ptr = store->Color + IM->CopyStart;
+ tmp->Color.Ptr = store->Attrib[VERT_ATTRIB_COLOR0] + IM->CopyStart;
tmp->Color.StrideB = 4 * sizeof(GLfloat);
tmp->Color.Flags = 0;
- tnl->vb.importable_data &= ~VERT_RGBA;
+ tnl->vb.importable_data &= ~VERT_BIT_COLOR0;
if (ctx->Eval.Map1Color4 && any_eval1) {
eval1_4f_ca( &tmp->Color, coord, flags, 4, &ctx->EvalMap.Map1Color4 );
- generated |= VERT_EVAL_C1|VERT_EVAL_P1;
+ generated |= VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1;
}
if (ctx->Eval.Map2Color4 && any_eval2) {
eval2_4f_ca( &tmp->Color, coord, flags, 4, &ctx->EvalMap.Map2Color4 );
- generated |= VERT_EVAL_C2|VERT_EVAL_P2;
+ generated |= VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2;
}
}
- if (req & VERT_TEX(0))
+ if (req & VERT_BIT_TEX(0))
{
GLuint generated = 0;
if (copycount)
- copy_4f( store->TexCoord[0] + IM->CopyStart,
+ copy_4f( store->Attrib[VERT_ATTRIB_TEX0] + IM->CopyStart,
tmp->TexCoord[0].data, copycount );
else
tmp->TexCoord[0].size = 0;
- tmp->TexCoord[0].data = store->TexCoord[0] + IM->CopyStart;
+ tmp->TexCoord[0].data = store->Attrib[VERT_ATTRIB_TEX0] + IM->CopyStart;
tmp->TexCoord[0].start = (GLfloat *)tmp->TexCoord[0].data;
if (any_eval1) {
if (ctx->Eval.Map1TextureCoord4) {
eval1_4f( &tmp->TexCoord[0], coord, flags, 4,
&ctx->EvalMap.Map1Texture4 );
- generated |= VERT_EVAL_C1|VERT_EVAL_P1;
+ generated |= VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1;
}
else if (ctx->Eval.Map1TextureCoord3) {
eval1_4f( &tmp->TexCoord[0], coord, flags, 3,
&ctx->EvalMap.Map1Texture3 );
- generated |= VERT_EVAL_C1|VERT_EVAL_P1;
+ generated |= VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1;
}
else if (ctx->Eval.Map1TextureCoord2) {
eval1_4f( &tmp->TexCoord[0], coord, flags, 2,
&ctx->EvalMap.Map1Texture2 );
- generated |= VERT_EVAL_C1|VERT_EVAL_P1;
+ generated |= VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1;
}
else if (ctx->Eval.Map1TextureCoord1) {
eval1_4f( &tmp->TexCoord[0], coord, flags, 1,
&ctx->EvalMap.Map1Texture1 );
- generated |= VERT_EVAL_C1|VERT_EVAL_P1;
+ generated |= VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1;
}
}
if (ctx->Eval.Map2TextureCoord4) {
eval2_4f( &tmp->TexCoord[0], coord, flags, 4,
&ctx->EvalMap.Map2Texture4 );
- generated |= VERT_EVAL_C2|VERT_EVAL_P2;
+ generated |= VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2;
}
else if (ctx->Eval.Map2TextureCoord3) {
eval2_4f( &tmp->TexCoord[0], coord, flags, 3,
&ctx->EvalMap.Map2Texture3 );
- generated |= VERT_EVAL_C2|VERT_EVAL_P2;
+ generated |= VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2;
}
else if (ctx->Eval.Map2TextureCoord2) {
eval2_4f( &tmp->TexCoord[0], coord, flags, 2,
&ctx->EvalMap.Map2Texture2 );
- generated |= VERT_EVAL_C2|VERT_EVAL_P2;
+ generated |= VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2;
}
else if (ctx->Eval.Map2TextureCoord1) {
eval2_4f( &tmp->TexCoord[0], coord, flags, 1,
&ctx->EvalMap.Map2Texture1 );
- generated |= VERT_EVAL_C2|VERT_EVAL_P2;
+ generated |= VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2;
}
}
}
- if (req & VERT_NORM)
+ if (req & VERT_BIT_NORMAL)
{
GLuint generated = 0;
if (copycount) {
/* fprintf(stderr, "%s: Copy normals\n", __FUNCTION__); */
- copy_3f( store->Normal + IM->CopyStart, tmp->Normal.data,
- copycount );
+ copy_3f( store->Attrib[VERT_ATTRIB_NORMAL] + IM->CopyStart,
+ tmp->Normal.data, copycount );
}
- tmp->Normal.data = store->Normal + IM->CopyStart;
+ tmp->Normal.data = store->Attrib[VERT_ATTRIB_NORMAL] + IM->CopyStart;
tmp->Normal.start = (GLfloat *)tmp->Normal.data;
if (ctx->Eval.Map1Normal && any_eval1) {
- eval1_norm( &tmp->Normal, coord, flags,
- &ctx->EvalMap.Map1Normal );
- generated |= VERT_EVAL_C1|VERT_EVAL_P1;
+ eval1_norm( &tmp->Normal, coord, flags, &ctx->EvalMap.Map1Normal );
+ generated |= VERT_BIT_EVAL_C1|VERT_BIT_EVAL_P1;
}
if (ctx->Eval.Map2Normal && any_eval2) {
- eval2_norm( &tmp->Normal, coord, flags,
- &ctx->EvalMap.Map2Normal );
- generated |= VERT_EVAL_C2|VERT_EVAL_P2;
+ eval2_norm( &tmp->Normal, coord, flags, &ctx->EvalMap.Map2Normal );
+ generated |= VERT_BIT_EVAL_C2|VERT_BIT_EVAL_P2;
}
}
/* In the AutoNormal case, the copy and assignment of tmp->NormalPtr
* are done above.
*/
- if (req & VERT_OBJ)
+ if (req & VERT_BIT_POS)
{
if (copycount) {
/* This copy may already have occurred when eliminating
* glEvalPoint calls:
*/
- if (coord != store->Obj + IM->CopyStart)
- copy_4f( store->Obj + IM->CopyStart, tmp->Obj.data, copycount );
- } else
+ if (coord != store->Attrib[VERT_ATTRIB_POS] + IM->CopyStart) {
+ copy_4f( store->Attrib[VERT_ATTRIB_POS] + IM->CopyStart,
+ tmp->Obj.data, copycount );
+ }
+ }
+ else {
tmp->Obj.size = 0;
+ }
- tmp->Obj.data = store->Obj + IM->CopyStart;
+ tmp->Obj.data = store->Attrib[VERT_ATTRIB_POS] + IM->CopyStart;
tmp->Obj.start = (GLfloat *)tmp->Obj.data;
/* Note: Normal data is already prepared above.
}
if (any_eval2) {
- if (ctx->Eval.Map2Vertex4)
- {
- if (ctx->Eval.AutoNormal && (req & VERT_NORM))
+ if (ctx->Eval.Map2Vertex4) {
+ if (ctx->Eval.AutoNormal && (req & VERT_BIT_NORMAL))
eval2_obj_norm( &tmp->Obj, &tmp->Normal, coord, flags, 4,
&ctx->EvalMap.Map2Vertex4 );
else
eval2_4f( &tmp->Obj, coord, flags, 4,
&ctx->EvalMap.Map2Vertex4 );
}
- else if (ctx->Eval.Map2Vertex3)
- {
- if (ctx->Eval.AutoNormal && (req & VERT_NORM))
+ else if (ctx->Eval.Map2Vertex3) {
+ if (ctx->Eval.AutoNormal && (req & VERT_BIT_NORMAL))
eval2_obj_norm( &tmp->Obj, &tmp->Normal, coord, flags, 3,
&ctx->EvalMap.Map2Vertex3 );
else
* must be ignored.
*/
if (purge_flags) {
- GLuint vertex = VERT_OBJ|(VERT_EVAL_ANY & ~purge_flags);
+ GLuint vertex = VERT_BIT_POS|(VERT_BITS_EVAL_ANY & ~purge_flags);
GLuint last_new_prim = 0;
GLuint new_prim_length = 0;
GLuint next_old_prim = 0;