summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/savage
diff options
context:
space:
mode:
authorEric Anholt <anholt@FreeBSD.org>2005-12-06 10:38:37 +0000
committerEric Anholt <anholt@FreeBSD.org>2005-12-06 10:38:37 +0000
commitd5179613d5302173471a6a910fa9ec235c9ff046 (patch)
tree2eca8709957427b52d9c7f9af8ad6edcfac2e754 /src/mesa/drivers/dri/savage
parentb4ebb682027e42c1f6525d0f8cee9ccd41e15ca0 (diff)
Add support for GL_EXT_secondary_color. It looks like using
NEED_SECONDARY_COLOR to turn it off/on was what we wanted -- now results look correct using seccolor on Savage IX and Savage4.
Diffstat (limited to 'src/mesa/drivers/dri/savage')
-rw-r--r--src/mesa/drivers/dri/savage/savage_xmesa.c2
-rw-r--r--src/mesa/drivers/dri/savage/savagestate.c18
2 files changed, 5 insertions, 15 deletions
diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c
index 53415d535b..4f5201491d 100644
--- a/src/mesa/drivers/dri/savage/savage_xmesa.c
+++ b/src/mesa/drivers/dri/savage/savage_xmesa.c
@@ -61,6 +61,7 @@
#define need_GL_ARB_multisample
#define need_GL_ARB_texture_compression
+#define need_GL_EXT_secondary_color
#include "extension_helper.h"
#include "xmlpool.h"
@@ -136,6 +137,7 @@ static const struct dri_extension card_extensions[] =
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
{ "GL_EXT_stencil_wrap", NULL },
{ "GL_EXT_texture_lod_bias", NULL },
+ { "GL_EXT_secondary_color", GL_EXT_secondary_color_functions },
{ NULL, NULL }
};
diff --git a/src/mesa/drivers/dri/savage/savagestate.c b/src/mesa/drivers/dri/savage/savagestate.c
index 1acabcb5f4..44cf2f20d3 100644
--- a/src/mesa/drivers/dri/savage/savagestate.c
+++ b/src/mesa/drivers/dri/savage/savagestate.c
@@ -866,40 +866,28 @@ static void savageDDColorMask_s3d(GLcontext *ctx,
FALLBACK (ctx, SAVAGE_FALLBACK_COLORMASK, !(r && g && b));
}
-/* Seperate specular not fully implemented in hardware... Needs
- * some interaction with material state? Just punt to software
- * in all cases?
- * FK: Don't fall back for now. Let's see the failure cases and
- * fix them the right way. I don't see how this could be a
- * hardware limitation.
- */
static void savageUpdateSpecular_s4(GLcontext *ctx) {
savageContextPtr imesa = SAVAGE_CONTEXT( ctx );
u_int32_t drawLocalCtrl = imesa->regs.s4.drawLocalCtrl.ui;
- if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR &&
- ctx->Light.Enabled) {
+ if (NEED_SECONDARY_COLOR(ctx)) {
imesa->regs.s4.drawLocalCtrl.ni.specShadeEn = GL_TRUE;
- /*FALLBACK (ctx, SAVAGE_FALLBACK_SPECULAR, GL_TRUE);*/
} else {
imesa->regs.s4.drawLocalCtrl.ni.specShadeEn = GL_FALSE;
- /*FALLBACK (ctx, SAVAGE_FALLBACK_SPECULAR, GL_FALSE);*/
}
if (drawLocalCtrl != imesa->regs.s4.drawLocalCtrl.ui)
imesa->dirty |= SAVAGE_UPLOAD_LOCAL;
}
+
static void savageUpdateSpecular_s3d(GLcontext *ctx) {
savageContextPtr imesa = SAVAGE_CONTEXT( ctx );
u_int32_t drawCtrl = imesa->regs.s3d.drawCtrl.ui;
- if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR &&
- ctx->Light.Enabled) {
+ if (NEED_SECONDARY_COLOR(ctx)) {
imesa->regs.s3d.drawCtrl.ni.specShadeEn = GL_TRUE;
- /*FALLBACK (ctx, SAVAGE_FALLBACK_SPECULAR, GL_TRUE);*/
} else {
imesa->regs.s3d.drawCtrl.ni.specShadeEn = GL_FALSE;
- /*FALLBACK (ctx, SAVAGE_FALLBACK_SPECULAR, GL_FALSE);*/
}
if (drawCtrl != imesa->regs.s3d.drawCtrl.ui)