THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
**************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_stencil.c,v 1.3 2000/09/26 15:56:49 tsi Exp $ */
/*
* Authors:
#include "sis_stencil.h"
static void
-sisDDStencilFunc( GLcontext * ctx, GLenum func, GLint ref, GLuint mask )
+sisDDStencilFuncSeparate( GLcontext * ctx, GLenum face,
+ GLenum func, GLint ref, GLuint mask )
{
sisContextPtr smesa = SIS_CONTEXT(ctx);
__GLSiSHardware *prev = &smesa->prev;
__GLSiSHardware *current = &smesa->current;
/* set reference */
- current->hwStSetting = STENCIL_FORMAT_8 | (ctx->Stencil.Ref[0] << 8) |
- ctx->Stencil.ValueMask[0];
+ current->hwStSetting = (STENCIL_FORMAT_8 |
+ ((ctx->Stencil.Ref[0] & 0xff) << 8) |
+ (ctx->Stencil.ValueMask[0] & 0xff));
switch (func)
{
}
static void
-sisDDStencilMask( GLcontext * ctx, GLuint mask )
+sisDDStencilMaskSeparate( GLcontext * ctx, GLenum face, GLuint mask )
{
if (!ctx->Visual.stencilBits)
return;
}
static void
-sisDDStencilOp( GLcontext * ctx, GLenum fail, GLenum zfail, GLenum zpass )
+sisDDStencilOpSeparate( GLcontext * ctx, GLenum face, GLenum fail,
+ GLenum zfail, GLenum zpass )
{
sisContextPtr smesa = SIS_CONTEXT(ctx);
__GLSiSHardware *prev = &smesa->prev;
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)
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)
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)
void
sisDDInitStencilFuncs( GLcontext *ctx )
{
- ctx->Driver.StencilFunc = sisDDStencilFunc;
- ctx->Driver.StencilMask = sisDDStencilMask;
- ctx->Driver.StencilOp = sisDDStencilOp;
+ ctx->Driver.StencilFuncSeparate = sisDDStencilFuncSeparate;
+ ctx->Driver.StencilMaskSeparate = sisDDStencilMaskSeparate;
+ ctx->Driver.StencilOpSeparate = sisDDStencilOpSeparate;
}