summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mesa/main/light.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/mesa/main/light.c b/src/mesa/main/light.c
index 3ef2e3eac1b..046738882d3 100644
--- a/src/mesa/main/light.c
+++ b/src/mesa/main/light.c
@@ -1317,15 +1317,24 @@ void _mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state )
{
const GLuint oldneedeyecoords = ctx->_NeedEyeCoords;
- ctx->_NeedEyeCoords = (ctx->_ForceEyeCoords ||
- (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD) ||
- ctx->Point._Attenuated ||
- ctx->Light._NeedEyeCoords);
-
+ ctx->_NeedEyeCoords = 0;
+
+ if (ctx->_ForceEyeCoords ||
+ (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD) ||
+ ctx->Point._Attenuated ||
+ ctx->Light._NeedEyeCoords)
+ ctx->_NeedEyeCoords = 1;
+
+ if (ctx->Light.Enabled &&
+ !TEST_MAT_FLAGS( ctx->ModelviewMatrixStack.Top,
+ MAT_FLAGS_LENGTH_PRESERVING))
+ ctx->_NeedEyeCoords = 1;
+
+
/* Check if the truth-value interpretations of the bitfields have
* changed:
*/
- if ((oldneedeyecoords == 0) != (ctx->_NeedEyeCoords == 0)) {
+ if (oldneedeyecoords != ctx->_NeedEyeCoords) {
/* Recalculate all state that depends on _NeedEyeCoords.
*/
update_modelview_scale(ctx);