summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorChris Forbes <[email protected]>2013-05-13 21:17:29 +1200
committerChris Forbes <[email protected]>2013-05-15 22:00:55 +1200
commit38f65162af772af6d05627e3af6e8b7caf03ec8f (patch)
tree3e376839f3ec1623874d48a607582ac0068efaf7 /src/mesa
parentc68424bac4a75cae8e605629ed62d345b694dc79 (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.h14
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