diff options
author | Chris Forbes <[email protected]> | 2013-05-13 21:17:29 +1200 |
---|---|---|
committer | Chris Forbes <[email protected]> | 2013-05-15 22:00:55 +1200 |
commit | 38f65162af772af6d05627e3af6e8b7caf03ec8f (patch) | |
tree | 3e376839f3ec1623874d48a607582ac0068efaf7 /src/mesa | |
parent | c68424bac4a75cae8e605629ed62d345b694dc79 (diff) |
mesa: add accessor for effective stencil ref
Clamps the stencil reference value to the range representable in the
currently-bound draw framebuffer's stencil attachment.
V2: Add spec quote.
NOTE: This is a candidate for stable branches.
Signed-off-by: Chris Forbes <[email protected]>
Reviewed-by: Paul Berry <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/stencil.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mesa/main/stencil.h b/src/mesa/main/stencil.h index 1d5e01c4204..f2f7d37c617 100644 --- a/src/mesa/main/stencil.h +++ b/src/mesa/main/stencil.h @@ -79,4 +79,18 @@ _mesa_update_stencil(struct gl_context *ctx); extern void _mesa_init_stencil( struct gl_context * ctx ); +/* From the GL 4.3 spec, 17.3.5: + * "Stencil comparison operations and queries of <ref> clamp its value + * to the range [0, 2^s-1], where <s> is the number of bits in the + * stencil buffer attached to the draw framebuffer." + */ + +static inline GLint +_mesa_get_stencil_ref(struct gl_context const *ctx, int face) +{ + GLint stencilMax = (1 << ctx->DrawBuffer->Visual.stencilBits) - 1; + GLint ref = ctx->Stencil.Ref[face]; + return CLAMP(ref, 0, stencilMax); +} + #endif |