diff options
author | fxkuehl <fxkuehl> | 2003-12-19 15:16:39 +0000 |
---|---|---|
committer | fxkuehl <fxkuehl> | 2003-12-19 15:16:39 +0000 |
commit | 6ee5bb33ed92c0df7e5e941b11461ba5e67be3a7 (patch) | |
tree | f3ed5b508697f1f48da578aa5f85a46112a34e0c | |
parent | 2f1170b9c49915431f53b9305c128508b8cf0f2e (diff) |
Fixed problem with lighting and separate specular color.
-rwxr-xr-x | xc/lib/GL/mesa/src/drv/savage/savagestate.c | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/xc/lib/GL/mesa/src/drv/savage/savagestate.c b/xc/lib/GL/mesa/src/drv/savage/savagestate.c index 30c1be6fa..13d1fed6f 100755 --- a/xc/lib/GL/mesa/src/drv/savage/savagestate.c +++ b/xc/lib/GL/mesa/src/drv/savage/savagestate.c @@ -746,34 +746,31 @@ static void savageDDColorMask(GLcontext *ctx, * some interaction with material state? Just punt to software * in all cases? */ -static void savageDDLightModelfv(GLcontext *ctx, GLenum pname, - const GLfloat *param) -{ - /* if (pname == GL_LIGHT_MODEL_COLOR_CONTROL) */ - { - savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); +static void savageUpdateSpecular(GLcontext *ctx) { + savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); - if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR) - { - if (imesa->Registers.DrawLocalCtrl.ni.specShadeEn == GL_FALSE) - { - - imesa->Registers.DrawLocalCtrl.ni.specShadeEn = GL_TRUE; - imesa->Registers.changed.ni.fDrawLocalCtrlChanged = GL_TRUE; - } - FALLBACK (ctx, SAVAGE_FALLBACK_SPECULAR, GL_TRUE); - } - else { - if (imesa->Registers.DrawLocalCtrl.ni.specShadeEn == GL_TRUE) - { - imesa->Registers.DrawLocalCtrl.ni.specShadeEn = GL_FALSE; - imesa->Registers.changed.ni.fDrawLocalCtrlChanged = GL_TRUE; - } - FALLBACK (ctx, SAVAGE_FALLBACK_SPECULAR, GL_FALSE); + if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR && + ctx->Light.Enabled) { + if (imesa->Registers.DrawLocalCtrl.ni.specShadeEn == GL_FALSE) { + imesa->Registers.DrawLocalCtrl.ni.specShadeEn = GL_TRUE; + imesa->Registers.changed.ni.fDrawLocalCtrlChanged = GL_TRUE; + } + FALLBACK (ctx, SAVAGE_FALLBACK_SPECULAR, GL_TRUE); + } else { + if (imesa->Registers.DrawLocalCtrl.ni.specShadeEn == GL_TRUE) { + imesa->Registers.DrawLocalCtrl.ni.specShadeEn = GL_FALSE; + imesa->Registers.changed.ni.fDrawLocalCtrlChanged = GL_TRUE; } + FALLBACK (ctx, SAVAGE_FALLBACK_SPECULAR, GL_FALSE); } } +static void savageDDLightModelfv(GLcontext *ctx, GLenum pname, + const GLfloat *param) +{ + savageUpdateSpecular (ctx); +} + static void savageDDShadeModel(GLcontext *ctx, GLuint mod) { savageContextPtr imesa = SAVAGE_CONTEXT( ctx ); @@ -1170,14 +1167,7 @@ static void savageDDEnable(GLcontext *ctx, GLenum cap, GLboolean state) break; case GL_LIGHTING: - imesa->dirty |= SAVAGE_UPLOAD_CTX; - if (state) - { - ui=imesa->Registers.DrawCtrl1.ui; - imesa->Registers.DrawLocalCtrl.ni.specShadeEn=GL_TRUE; - if(imesa->Registers.DrawCtrl1.ui!=ui) - imesa->Registers.changed.ni.fDrawCtrl1Changed=GL_TRUE; - } + savageUpdateSpecular (ctx); break; case GL_TEXTURE_1D: case GL_TEXTURE_3D: |