diff options
Diffstat (limited to 'xc/extras/Mesa/src/tnl/t_vb_normals.c')
-rw-r--r-- | xc/extras/Mesa/src/tnl/t_vb_normals.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/xc/extras/Mesa/src/tnl/t_vb_normals.c b/xc/extras/Mesa/src/tnl/t_vb_normals.c index 6ec71d0a0..a99de7a21 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_normals.c +++ b/xc/extras/Mesa/src/tnl/t_vb_normals.c @@ -1,10 +1,9 @@ -/* $Id: t_vb_normals.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 4.0.3 + * Version: 4.1 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -24,7 +23,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * Authors: - * Keith Whitwell <keithw@valinux.com> + * Keith Whitwell <keith@tungstengraphics.com> */ @@ -32,7 +31,7 @@ #include "colormac.h" #include "context.h" #include "macros.h" -#include "mem.h" +#include "imports.h" #include "mmath.h" #include "mtypes.h" @@ -45,7 +44,7 @@ struct normal_stage_data { normal_func NormalTransform; - GLvector3f normal; + GLvector4f normal; }; #define NORMAL_STAGE_DATA(stage) ((struct normal_stage_data *)stage->privatePtr) @@ -66,16 +65,16 @@ static GLboolean run_normal_stage( GLcontext *ctx, * got a transformation matrix with uniform scaling. */ const GLfloat *lengths; - if (ctx->ModelView.flags & MAT_FLAG_GENERAL_SCALE) + if (ctx->ModelviewMatrixStack.Top->flags & MAT_FLAG_GENERAL_SCALE) lengths = NULL; else lengths = VB->NormalLengthPtr; - store->NormalTransform( &ctx->ModelView, + store->NormalTransform( ctx->ModelviewMatrixStack.Top, ctx->_ModelViewInvScale, - VB->NormalPtr, + VB->NormalPtr, /* input normals */ lengths, - &store->normal ); + &store->normal ); /* resulting normals */ } VB->NormalPtr = &store->normal; @@ -94,7 +93,7 @@ static GLboolean run_validate_normal_stage( GLcontext *ctx, if (ctx->_NeedEyeCoords) { GLuint transform = NORM_TRANSFORM_NO_ROT; - if (ctx->ModelView.flags & (MAT_FLAG_GENERAL | + if (ctx->ModelviewMatrixStack.Top->flags & (MAT_FLAG_GENERAL | MAT_FLAG_ROTATION | MAT_FLAG_GENERAL_3D | MAT_FLAG_PERSPECTIVE)) @@ -138,7 +137,7 @@ static GLboolean run_validate_normal_stage( GLcontext *ctx, static void check_normal_transform( GLcontext *ctx, struct gl_pipeline_stage *stage ) { - stage->active = ctx->_NeedNormals; + stage->active = ctx->_NeedNormals && !ctx->VertexProgram.Enabled; /* Don't clobber the initialize function: */ if (stage->privatePtr) @@ -156,7 +155,7 @@ static GLboolean alloc_normal_data( GLcontext *ctx, if (!store) return GL_FALSE; - _mesa_vector3f_alloc( &store->normal, 0, tnl->vb.Size, 32 ); + _mesa_vector4f_alloc( &store->normal, 0, tnl->vb.Size, 32 ); /* Now run the stage. */ @@ -170,7 +169,7 @@ static void free_normal_data( struct gl_pipeline_stage *stage ) { struct normal_stage_data *store = NORMAL_STAGE_DATA(stage); if (store) { - _mesa_vector3f_free( &store->normal ); + _mesa_vector4f_free( &store->normal ); FREE( store ); stage->privatePtr = NULL; } @@ -185,11 +184,14 @@ static void free_normal_data( struct gl_pipeline_stage *stage ) const struct gl_pipeline_stage _tnl_normal_transform_stage = { - "normal transform", + "normal transform", /* name */ _TNL_NEW_NORMAL_TRANSFORM, /* re-check */ _TNL_NEW_NORMAL_TRANSFORM, /* re-run */ - 0,VERT_NORM,VERT_NORM, /* active, inputs, outputs */ - 0, 0, /* changed_inputs, private */ + GL_FALSE, /* active? */ + VERT_BIT_NORMAL, /* inputs */ + VERT_BIT_NORMAL, /* outputs */ + 0, /* changed_inputs */ + NULL, /* private data */ free_normal_data, /* destructor */ check_normal_transform, /* check */ alloc_normal_data /* run -- initially set to alloc */ |