summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/sis/sis_stencil.c
diff options
context:
space:
mode:
authorEric Anholt <anholt@FreeBSD.org>2005-10-24 06:40:56 +0000
committerEric Anholt <anholt@FreeBSD.org>2005-10-24 06:40:56 +0000
commitdc793d4e9a71159da13b9230abde344309924287 (patch)
treed2e68f18eb5f57e9dd82388ad651bb4c05e5b1f6 /src/mesa/drivers/dri/sis/sis_stencil.c
parent3265585b151d44c825fb7a82b16b076fb7fdca77 (diff)
Add support for GL_EXT_stencil_wrap by guessing that the skip of two values in
the register header was meaningful. It turns out those were the proper values for the plain INCR/DECR ops, while what we were using as INCR/DECR were the _WRAP versions. Tested with stencil_wrap (didn't expose normal/_WRAP swapping) and stencilwrap (exposed it nicely) tests. Props to idr for poking me about adding this.
Diffstat (limited to 'src/mesa/drivers/dri/sis/sis_stencil.c')
-rw-r--r--src/mesa/drivers/dri/sis/sis_stencil.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/sis/sis_stencil.c b/src/mesa/drivers/dri/sis/sis_stencil.c
index d36f5f5909..1febe86b94 100644
--- a/src/mesa/drivers/dri/sis/sis_stencil.c
+++ b/src/mesa/drivers/dri/sis/sis_stencil.c
@@ -125,6 +125,12 @@ sisDDStencilOpSeparate( GLcontext * ctx, GLenum face, GLenum fail,
case GL_DECR:
current->hwStSetting2 |= SiS_SFAIL_DECR;
break;
+ case GL_INCR_WRAP:
+ current->hwStSetting2 |= SiS_SFAIL_INCR_WRAP;
+ break;
+ case GL_DECR_WRAP:
+ current->hwStSetting2 |= SiS_SFAIL_DECR_WRAP;
+ break;
}
switch (zfail)
@@ -147,6 +153,12 @@ sisDDStencilOpSeparate( GLcontext * ctx, GLenum face, GLenum fail,
case GL_DECR:
current->hwStSetting2 |= SiS_SPASS_ZFAIL_DECR;
break;
+ case GL_INCR_WRAP:
+ current->hwStSetting2 |= SiS_SPASS_ZFAIL_INCR_WRAP;
+ break;
+ case GL_DECR_WRAP:
+ current->hwStSetting2 |= SiS_SPASS_ZFAIL_DECR_WRAP;
+ break;
}
switch (zpass)
@@ -169,6 +181,12 @@ sisDDStencilOpSeparate( GLcontext * ctx, GLenum face, GLenum fail,
case GL_DECR:
current->hwStSetting2 |= SiS_SPASS_ZPASS_DECR;
break;
+ case GL_INCR_WRAP:
+ current->hwStSetting2 |= SiS_SPASS_ZPASS_INCR_WRAP;
+ break;
+ case GL_DECR_WRAP:
+ current->hwStSetting2 |= SiS_SPASS_ZPASS_DECR_WRAP;
+ break;
}
if (current->hwStSetting2 != prev->hwStSetting2)