Mesa (master): mesa: add accessor for effective stencil ref
Chris Forbes
chrisf at kemper.freedesktop.org
Wed May 15 10:08:05 UTC 2013
Module: Mesa
Branch: master
Commit: 38f65162af772af6d05627e3af6e8b7caf03ec8f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=38f65162af772af6d05627e3af6e8b7caf03ec8f
Author: Chris Forbes <chrisf at ijw.co.nz>
Date: Mon May 13 21:17:29 2013 +1200
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 <chrisf at ijw.co.nz>
Reviewed-by: Paul Berry <stereotype441 at gmail.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
---
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 1d5e01c..f2f7d37 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
More information about the mesa-commit
mailing list