Lines Matching refs:ctx
59 validate_stencil_op(struct gl_context *ctx, GLenum op) in validate_stencil_op() argument
78 validate_stencil_func(struct gl_context *ctx, GLenum func) in validate_stencil_func() argument
110 GET_CURRENT_CONTEXT(ctx); in _mesa_ClearStencil()
113 _mesa_debug(ctx, "glClearStencil(%d)\n", s); in _mesa_ClearStencil()
115 ctx->PopAttribState |= GL_STENCIL_BUFFER_BIT; in _mesa_ClearStencil()
116 ctx->Stencil.Clear = (GLuint) s; in _mesa_ClearStencil()
137 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilFuncSeparateATI()
140 _mesa_debug(ctx, "glStencilFuncSeparateATI()\n"); in _mesa_StencilFuncSeparateATI()
142 if (!validate_stencil_func(ctx, frontfunc)) { in _mesa_StencilFuncSeparateATI()
143 _mesa_error(ctx, GL_INVALID_ENUM, in _mesa_StencilFuncSeparateATI()
147 if (!validate_stencil_func(ctx, backfunc)) { in _mesa_StencilFuncSeparateATI()
148 _mesa_error(ctx, GL_INVALID_ENUM, in _mesa_StencilFuncSeparateATI()
154 if (ctx->Stencil.Function[0] == frontfunc && in _mesa_StencilFuncSeparateATI()
155 ctx->Stencil.Function[1] == backfunc && in _mesa_StencilFuncSeparateATI()
156 ctx->Stencil.ValueMask[0] == mask && in _mesa_StencilFuncSeparateATI()
157 ctx->Stencil.ValueMask[1] == mask && in _mesa_StencilFuncSeparateATI()
158 ctx->Stencil.Ref[0] == ref && in _mesa_StencilFuncSeparateATI()
159 ctx->Stencil.Ref[1] == ref) in _mesa_StencilFuncSeparateATI()
161 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in _mesa_StencilFuncSeparateATI()
163 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in _mesa_StencilFuncSeparateATI()
164 ctx->Stencil.Function[0] = frontfunc; in _mesa_StencilFuncSeparateATI()
165 ctx->Stencil.Function[1] = backfunc; in _mesa_StencilFuncSeparateATI()
166 ctx->Stencil.Ref[0] = ctx->Stencil.Ref[1] = ref; in _mesa_StencilFuncSeparateATI()
167 ctx->Stencil.ValueMask[0] = ctx->Stencil.ValueMask[1] = mask; in _mesa_StencilFuncSeparateATI()
168 if (ctx->Driver.StencilFuncSeparate) { in _mesa_StencilFuncSeparateATI()
169 ctx->Driver.StencilFuncSeparate(ctx, GL_FRONT, in _mesa_StencilFuncSeparateATI()
171 ctx->Driver.StencilFuncSeparate(ctx, GL_BACK, in _mesa_StencilFuncSeparateATI()
191 stencil_func(struct gl_context *ctx, GLenum func, GLint ref, GLuint mask) in stencil_func() argument
193 const GLint face = ctx->Stencil.ActiveFace; in stencil_func()
196 if (ctx->Stencil.Function[face] == func && in stencil_func()
197 ctx->Stencil.ValueMask[face] == mask && in stencil_func()
198 ctx->Stencil.Ref[face] == ref) in stencil_func()
200 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in stencil_func()
202 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in stencil_func()
203 ctx->Stencil.Function[face] = func; in stencil_func()
204 ctx->Stencil.Ref[face] = ref; in stencil_func()
205 ctx->Stencil.ValueMask[face] = mask; in stencil_func()
210 if (ctx->Driver.StencilFuncSeparate && ctx->Stencil.TestTwoSide) { in stencil_func()
211 ctx->Driver.StencilFuncSeparate(ctx, GL_BACK, func, ref, mask); in stencil_func()
216 if (ctx->Stencil.Function[0] == func && in stencil_func()
217 ctx->Stencil.Function[1] == func && in stencil_func()
218 ctx->Stencil.ValueMask[0] == mask && in stencil_func()
219 ctx->Stencil.ValueMask[1] == mask && in stencil_func()
220 ctx->Stencil.Ref[0] == ref && in stencil_func()
221 ctx->Stencil.Ref[1] == ref) in stencil_func()
223 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in stencil_func()
225 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in stencil_func()
226 ctx->Stencil.Function[0] = ctx->Stencil.Function[1] = func; in stencil_func()
227 ctx->Stencil.Ref[0] = ctx->Stencil.Ref[1] = ref; in stencil_func()
228 ctx->Stencil.ValueMask[0] = ctx->Stencil.ValueMask[1] = mask; in stencil_func()
229 if (ctx->Driver.StencilFuncSeparate) { in stencil_func()
230 ctx->Driver.StencilFuncSeparate(ctx, in stencil_func()
231 ((ctx->Stencil.TestTwoSide) in stencil_func()
242 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilFunc_no_error()
243 stencil_func(ctx, func, ref, mask); in _mesa_StencilFunc_no_error()
250 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilFunc()
253 _mesa_debug(ctx, "glStencilFunc()\n"); in _mesa_StencilFunc()
255 if (!validate_stencil_func(ctx, func)) { in _mesa_StencilFunc()
256 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilFunc(func)"); in _mesa_StencilFunc()
260 stencil_func(ctx, func, ref, mask); in _mesa_StencilFunc()
278 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilMask()
279 const GLint face = ctx->Stencil.ActiveFace; in _mesa_StencilMask()
282 _mesa_debug(ctx, "glStencilMask()\n"); in _mesa_StencilMask()
287 if (ctx->Stencil.WriteMask[face] == mask) in _mesa_StencilMask()
289 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in _mesa_StencilMask()
291 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in _mesa_StencilMask()
292 ctx->Stencil.WriteMask[face] = mask; in _mesa_StencilMask()
297 if (ctx->Driver.StencilMaskSeparate && ctx->Stencil.TestTwoSide) { in _mesa_StencilMask()
298 ctx->Driver.StencilMaskSeparate(ctx, GL_BACK, mask); in _mesa_StencilMask()
303 if (ctx->Stencil.WriteMask[0] == mask && in _mesa_StencilMask()
304 ctx->Stencil.WriteMask[1] == mask) in _mesa_StencilMask()
306 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in _mesa_StencilMask()
308 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in _mesa_StencilMask()
309 ctx->Stencil.WriteMask[0] = ctx->Stencil.WriteMask[1] = mask; in _mesa_StencilMask()
310 if (ctx->Driver.StencilMaskSeparate) { in _mesa_StencilMask()
311 ctx->Driver.StencilMaskSeparate(ctx, in _mesa_StencilMask()
312 ((ctx->Stencil.TestTwoSide) in _mesa_StencilMask()
335 stencil_op(struct gl_context *ctx, GLenum fail, GLenum zfail, GLenum zpass) in stencil_op() argument
337 const GLint face = ctx->Stencil.ActiveFace; in stencil_op()
341 if (ctx->Stencil.ZFailFunc[face] == zfail && in stencil_op()
342 ctx->Stencil.ZPassFunc[face] == zpass && in stencil_op()
343 ctx->Stencil.FailFunc[face] == fail) in stencil_op()
345 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in stencil_op()
347 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in stencil_op()
348 ctx->Stencil.ZFailFunc[face] = zfail; in stencil_op()
349 ctx->Stencil.ZPassFunc[face] = zpass; in stencil_op()
350 ctx->Stencil.FailFunc[face] = fail; in stencil_op()
355 if (ctx->Driver.StencilOpSeparate && ctx->Stencil.TestTwoSide) { in stencil_op()
356 ctx->Driver.StencilOpSeparate(ctx, GL_BACK, fail, zfail, zpass); in stencil_op()
361 if (ctx->Stencil.ZFailFunc[0] == zfail && in stencil_op()
362 ctx->Stencil.ZFailFunc[1] == zfail && in stencil_op()
363 ctx->Stencil.ZPassFunc[0] == zpass && in stencil_op()
364 ctx->Stencil.ZPassFunc[1] == zpass && in stencil_op()
365 ctx->Stencil.FailFunc[0] == fail && in stencil_op()
366 ctx->Stencil.FailFunc[1] == fail) in stencil_op()
368 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in stencil_op()
370 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in stencil_op()
371 ctx->Stencil.ZFailFunc[0] = ctx->Stencil.ZFailFunc[1] = zfail; in stencil_op()
372 ctx->Stencil.ZPassFunc[0] = ctx->Stencil.ZPassFunc[1] = zpass; in stencil_op()
373 ctx->Stencil.FailFunc[0] = ctx->Stencil.FailFunc[1] = fail; in stencil_op()
374 if (ctx->Driver.StencilOpSeparate) { in stencil_op()
375 ctx->Driver.StencilOpSeparate(ctx, in stencil_op()
376 ((ctx->Stencil.TestTwoSide) in stencil_op()
387 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilOp_no_error()
388 stencil_op(ctx, fail, zfail, zpass); in _mesa_StencilOp_no_error()
395 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilOp()
398 _mesa_debug(ctx, "glStencilOp()\n"); in _mesa_StencilOp()
400 if (!validate_stencil_op(ctx, fail)) { in _mesa_StencilOp()
401 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilOp(sfail)"); in _mesa_StencilOp()
405 if (!validate_stencil_op(ctx, zfail)) { in _mesa_StencilOp()
406 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilOp(zfail)"); in _mesa_StencilOp()
410 if (!validate_stencil_op(ctx, zpass)) { in _mesa_StencilOp()
411 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilOp(zpass)"); in _mesa_StencilOp()
415 stencil_op(ctx, fail, zfail, zpass); in _mesa_StencilOp()
423 GET_CURRENT_CONTEXT(ctx); in _mesa_ActiveStencilFaceEXT()
426 _mesa_debug(ctx, "glActiveStencilFaceEXT()\n"); in _mesa_ActiveStencilFaceEXT()
428 if (!ctx->Extensions.EXT_stencil_two_side) { in _mesa_ActiveStencilFaceEXT()
429 _mesa_error(ctx, GL_INVALID_OPERATION, "glActiveStencilFaceEXT"); in _mesa_ActiveStencilFaceEXT()
434 ctx->Stencil.ActiveFace = (face == GL_FRONT) ? 0 : 2; in _mesa_ActiveStencilFaceEXT()
437 _mesa_error(ctx, GL_INVALID_ENUM, "glActiveStencilFaceEXT(face)"); in _mesa_ActiveStencilFaceEXT()
443 stencil_op_separate(struct gl_context *ctx, GLenum face, GLenum sfail, in stencil_op_separate() argument
450 if (ctx->Stencil.ZFailFunc[0] != zfail || in stencil_op_separate()
451 ctx->Stencil.ZPassFunc[0] != zpass || in stencil_op_separate()
452 ctx->Stencil.FailFunc[0] != sfail){ in stencil_op_separate()
453 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in stencil_op_separate()
455 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in stencil_op_separate()
456 ctx->Stencil.ZFailFunc[0] = zfail; in stencil_op_separate()
457 ctx->Stencil.ZPassFunc[0] = zpass; in stencil_op_separate()
458 ctx->Stencil.FailFunc[0] = sfail; in stencil_op_separate()
465 if (ctx->Stencil.ZFailFunc[1] != zfail || in stencil_op_separate()
466 ctx->Stencil.ZPassFunc[1] != zpass || in stencil_op_separate()
467 ctx->Stencil.FailFunc[1] != sfail) { in stencil_op_separate()
468 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in stencil_op_separate()
470 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in stencil_op_separate()
471 ctx->Stencil.ZFailFunc[1] = zfail; in stencil_op_separate()
472 ctx->Stencil.ZPassFunc[1] = zpass; in stencil_op_separate()
473 ctx->Stencil.FailFunc[1] = sfail; in stencil_op_separate()
478 if (set && ctx->Driver.StencilOpSeparate) { in stencil_op_separate()
479 ctx->Driver.StencilOpSeparate(ctx, face, sfail, zfail, zpass); in stencil_op_separate()
488 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilOpSeparate_no_error()
489 stencil_op_separate(ctx, face, sfail, zfail, zpass); in _mesa_StencilOpSeparate_no_error()
496 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilOpSeparate()
499 _mesa_debug(ctx, "glStencilOpSeparate()\n"); in _mesa_StencilOpSeparate()
501 if (!validate_stencil_op(ctx, sfail)) { in _mesa_StencilOpSeparate()
502 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilOpSeparate(sfail)"); in _mesa_StencilOpSeparate()
506 if (!validate_stencil_op(ctx, zfail)) { in _mesa_StencilOpSeparate()
507 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilOpSeparate(zfail)"); in _mesa_StencilOpSeparate()
511 if (!validate_stencil_op(ctx, zpass)) { in _mesa_StencilOpSeparate()
512 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilOpSeparate(zpass)"); in _mesa_StencilOpSeparate()
517 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilOpSeparate(face)"); in _mesa_StencilOpSeparate()
521 stencil_op_separate(ctx, face, sfail, zfail, zpass); in _mesa_StencilOpSeparate()
526 stencil_func_separate(struct gl_context *ctx, GLenum face, GLenum func, in stencil_func_separate() argument
529 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in stencil_func_separate()
531 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in stencil_func_separate()
535 ctx->Stencil.Function[0] = func; in stencil_func_separate()
536 ctx->Stencil.Ref[0] = ref; in stencil_func_separate()
537 ctx->Stencil.ValueMask[0] = mask; in stencil_func_separate()
542 ctx->Stencil.Function[1] = func; in stencil_func_separate()
543 ctx->Stencil.Ref[1] = ref; in stencil_func_separate()
544 ctx->Stencil.ValueMask[1] = mask; in stencil_func_separate()
547 if (ctx->Driver.StencilFuncSeparate) { in stencil_func_separate()
548 ctx->Driver.StencilFuncSeparate(ctx, face, func, ref, mask); in stencil_func_separate()
558 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilFuncSeparate_no_error()
559 stencil_func_separate(ctx, face, func, ref, mask); in _mesa_StencilFuncSeparate_no_error()
566 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilFuncSeparate()
569 _mesa_debug(ctx, "glStencilFuncSeparate()\n"); in _mesa_StencilFuncSeparate()
572 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilFuncSeparate(face)"); in _mesa_StencilFuncSeparate()
576 if (!validate_stencil_func(ctx, func)) { in _mesa_StencilFuncSeparate()
577 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilFuncSeparate(func)"); in _mesa_StencilFuncSeparate()
581 stencil_func_separate(ctx, face, func, ref, mask); in _mesa_StencilFuncSeparate()
586 stencil_mask_separate(struct gl_context *ctx, GLenum face, GLuint mask) in stencil_mask_separate() argument
588 FLUSH_VERTICES(ctx, ctx->DriverFlags.NewStencil ? 0 : _NEW_STENCIL, in stencil_mask_separate()
590 ctx->NewDriverState |= ctx->DriverFlags.NewStencil; in stencil_mask_separate()
593 ctx->Stencil.WriteMask[0] = mask; in stencil_mask_separate()
597 ctx->Stencil.WriteMask[1] = mask; in stencil_mask_separate()
600 if (ctx->Driver.StencilMaskSeparate) { in stencil_mask_separate()
601 ctx->Driver.StencilMaskSeparate(ctx, face, mask); in stencil_mask_separate()
610 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilMaskSeparate_no_error()
611 stencil_mask_separate(ctx, face, mask); in _mesa_StencilMaskSeparate_no_error()
618 GET_CURRENT_CONTEXT(ctx); in _mesa_StencilMaskSeparate()
621 _mesa_debug(ctx, "glStencilMaskSeparate()\n"); in _mesa_StencilMaskSeparate()
624 _mesa_error(ctx, GL_INVALID_ENUM, "glStencilaMaskSeparate(face)"); in _mesa_StencilMaskSeparate()
628 stencil_mask_separate(ctx, face, mask); in _mesa_StencilMaskSeparate()
640 _mesa_init_stencil(struct gl_context *ctx) in _mesa_init_stencil() argument
642 ctx->Stencil.Enabled = GL_FALSE; in _mesa_init_stencil()
643 ctx->Stencil.TestTwoSide = GL_FALSE; in _mesa_init_stencil()
644 ctx->Stencil.ActiveFace = 0; /* 0 = GL_FRONT, 2 = GL_BACK */ in _mesa_init_stencil()
645 ctx->Stencil.Function[0] = GL_ALWAYS; in _mesa_init_stencil()
646 ctx->Stencil.Function[1] = GL_ALWAYS; in _mesa_init_stencil()
647 ctx->Stencil.Function[2] = GL_ALWAYS; in _mesa_init_stencil()
648 ctx->Stencil.FailFunc[0] = GL_KEEP; in _mesa_init_stencil()
649 ctx->Stencil.FailFunc[1] = GL_KEEP; in _mesa_init_stencil()
650 ctx->Stencil.FailFunc[2] = GL_KEEP; in _mesa_init_stencil()
651 ctx->Stencil.ZPassFunc[0] = GL_KEEP; in _mesa_init_stencil()
652 ctx->Stencil.ZPassFunc[1] = GL_KEEP; in _mesa_init_stencil()
653 ctx->Stencil.ZPassFunc[2] = GL_KEEP; in _mesa_init_stencil()
654 ctx->Stencil.ZFailFunc[0] = GL_KEEP; in _mesa_init_stencil()
655 ctx->Stencil.ZFailFunc[1] = GL_KEEP; in _mesa_init_stencil()
656 ctx->Stencil.ZFailFunc[2] = GL_KEEP; in _mesa_init_stencil()
657 ctx->Stencil.Ref[0] = 0; in _mesa_init_stencil()
658 ctx->Stencil.Ref[1] = 0; in _mesa_init_stencil()
659 ctx->Stencil.Ref[2] = 0; in _mesa_init_stencil()
671 ctx->Stencil.ValueMask[0] = 0xFF; in _mesa_init_stencil()
672 ctx->Stencil.ValueMask[1] = 0xFF; in _mesa_init_stencil()
673 ctx->Stencil.ValueMask[2] = 0xFF; in _mesa_init_stencil()
674 ctx->Stencil.WriteMask[0] = 0xFF; in _mesa_init_stencil()
675 ctx->Stencil.WriteMask[1] = 0xFF; in _mesa_init_stencil()
676 ctx->Stencil.WriteMask[2] = 0xFF; in _mesa_init_stencil()
678 ctx->Stencil.Clear = 0; in _mesa_init_stencil()
679 ctx->Stencil._BackFace = 1; in _mesa_init_stencil()