summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfxkuehl <fxkuehl>2003-12-19 15:16:39 +0000
committerfxkuehl <fxkuehl>2003-12-19 15:16:39 +0000
commit6ee5bb33ed92c0df7e5e941b11461ba5e67be3a7 (patch)
treef3ed5b508697f1f48da578aa5f85a46112a34e0c
parent2f1170b9c49915431f53b9305c128508b8cf0f2e (diff)
Fixed problem with lighting and separate specular color.
-rwxr-xr-xxc/lib/GL/mesa/src/drv/savage/savagestate.c52
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: