Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 1
/**
2
 * \file stencil.h
3
 * Stencil operations.
4
 */
5
 
6
/*
7
 * Mesa 3-D graphics library
8
 *
9
 * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
10
 *
11
 * Permission is hereby granted, free of charge, to any person obtaining a
12
 * copy of this software and associated documentation files (the "Software"),
13
 * to deal in the Software without restriction, including without limitation
14
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15
 * and/or sell copies of the Software, and to permit persons to whom the
16
 * Software is furnished to do so, subject to the following conditions:
17
 *
18
 * The above copyright notice and this permission notice shall be included
19
 * in all copies or substantial portions of the Software.
20
 *
21
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
24
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27
 * OTHER DEALINGS IN THE SOFTWARE.
28
 */
29
 
30
 
31
#ifndef STENCIL_H
32
#define STENCIL_H
33
 
34
 
35
#include "glheader.h"
36
#include "macros.h"
37
 
38
struct gl_context;
39
 
40
extern void GLAPIENTRY
41
_mesa_ClearStencil( GLint s );
42
 
43
 
44
extern void GLAPIENTRY
45
_mesa_StencilFunc( GLenum func, GLint ref, GLuint mask );
46
 
47
 
48
extern void GLAPIENTRY
49
_mesa_StencilMask( GLuint mask );
50
 
51
 
52
extern void GLAPIENTRY
53
_mesa_StencilOp( GLenum fail, GLenum zfail, GLenum zpass );
54
 
55
 
56
extern void GLAPIENTRY
57
_mesa_ActiveStencilFaceEXT(GLenum face);
58
 
59
 
60
extern void GLAPIENTRY
61
_mesa_StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
62
 
63
 
64
extern void GLAPIENTRY
65
_mesa_StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
66
 
67
 
68
extern void GLAPIENTRY
69
_mesa_StencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
70
 
71
extern void GLAPIENTRY
72
_mesa_StencilMaskSeparate(GLenum face, GLuint mask);
73
 
74
 
75
extern void
76
_mesa_update_stencil(struct gl_context *ctx);
77
 
78
 
79
extern void
80
_mesa_init_stencil( struct gl_context * ctx );
81
 
82
/* From the GL 4.3 spec, 17.3.5:
83
 *    "Stencil comparison operations and queries of  clamp its value
84
 *    to the range [0, 2^s-1], where  is the number of bits in the
85
 *    stencil buffer attached to the draw framebuffer."
86
 */
87
 
88
static inline GLint
89
_mesa_get_stencil_ref(struct gl_context const *ctx, int face)
90
{
91
   GLint stencilMax = (1 << ctx->DrawBuffer->Visual.stencilBits) - 1;
92
   GLint ref = ctx->Stencil.Ref[face];
93
   return CLAMP(ref, 0, stencilMax);
94
}
95
 
96
#endif