summaryrefslogtreecommitdiffstats
path: root/src/mesa/tnl/t_vb_light.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/tnl/t_vb_light.c')
-rw-r--r--src/mesa/tnl/t_vb_light.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/mesa/tnl/t_vb_light.c b/src/mesa/tnl/t_vb_light.c
index 13ab9a395ba..00beb531232 100644
--- a/src/mesa/tnl/t_vb_light.c
+++ b/src/mesa/tnl/t_vb_light.c
@@ -1,4 +1,4 @@
-/* $Id: t_vb_light.c,v 1.6 2001/01/29 22:10:24 brianp Exp $ */
+/* $Id: t_vb_light.c,v 1.7 2001/02/16 00:35:35 keithw Exp $ */
/*
* Mesa 3-D graphics library
@@ -133,17 +133,21 @@ static GLboolean run_lighting( GLcontext *ctx, struct gl_pipeline_stage *stage )
GLuint ind;
/* Make sure we can talk about elements 0..2 in the vector we are
- * lighting. TODO: Don't repeat this in CVA!
+ * lighting.
*/
- if (input->size <= 2) {
- if (input->flags & VEC_NOT_WRITEABLE) {
- ASSERT(VB->importable_data & VERT_OBJ);
- VB->import_data( ctx, VERT_OBJ, VEC_NOT_WRITEABLE );
- input = ctx->_NeedEyeCoords ? VB->EyePtr : VB->ObjPtr;
- ASSERT((input->flags & VEC_NOT_WRITEABLE) == 0);
- }
+ if (stage->changed_inputs & (VERT_EYE|VERT_OBJ)) {
+ if (input->size <= 2) {
+ if (input->flags & VEC_NOT_WRITEABLE) {
+ ASSERT(VB->importable_data & VERT_OBJ);
+
+ VB->import_data( ctx, VERT_OBJ, VEC_NOT_WRITEABLE );
+ input = ctx->_NeedEyeCoords ? VB->EyePtr : VB->ObjPtr;
- gl_vector4f_clean_elem(input, VB->Count, 2);
+ ASSERT((input->flags & VEC_NOT_WRITEABLE) == 0);
+ }
+
+ gl_vector4f_clean_elem(input, VB->Count, 2);
+ }
}
if (VB->Flag)
@@ -170,8 +174,8 @@ static GLboolean run_validate_lighting( GLcontext *ctx,
if (ctx->Visual.rgbMode) {
if (ctx->Light._NeedVertices) {
- if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR &&
- ctx->Texture._ReallyEnabled)
+ if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR &&
+ ctx->Texture._ReallyEnabled)
tab = _tnl_light_spec_tab;
else
tab = _tnl_light_tab;
@@ -182,7 +186,6 @@ static GLboolean run_validate_lighting( GLcontext *ctx,
else
tab = _tnl_light_fast_tab;
}
-/* tab = _tnl_light_tab; */
}
else
tab = _tnl_light_ci_tab;
@@ -306,8 +309,9 @@ static void dtr( struct gl_pipeline_stage *stage )
const struct gl_pipeline_stage _tnl_lighting_stage =
{
"lighting",
- _NEW_LIGHT, /* recheck */
- _NEW_LIGHT|_NEW_MODELVIEW, /* recalc -- modelview dependency
+ _NEW_LIGHT|_NEW_TEXTURE, /* recheck; texture for seperate_specular */
+ _NEW_LIGHT|_NEW_MODELVIEW|
+ _NEW_TEXTURE, /* recalc -- modelview dependency
* otherwise not captured by inputs
* (which may be VERT_OBJ) */
0,0,0, /* active, inputs, outputs */