Mesa (master): i965: Add comment to explain the weird-looking shadow compares.

Chris Forbes chrisf at kemper.freedesktop.org
Sat Apr 12 20:50:03 UTC 2014


Module: Mesa
Branch: master
Commit: 26224d3e00cb00e45145d4fd22cd7495eecad9e1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=26224d3e00cb00e45145d4fd22cd7495eecad9e1

Author: Chris Forbes <chrisf at ijw.co.nz>
Date:   Sat Apr 12 22:32:21 2014 +1200

i965: Add comment to explain the weird-looking shadow compares.

This always looks crazy when I stumble across it, until I remember
what the hardware is doing. Describing it ought to short-circuit
that process next time :)

V2: Fix indents to 6 spaces, not 7.

Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/intel_state.c |   21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_state.c b/src/mesa/drivers/dri/i965/intel_state.c
index bfc35d8..99e75cb 100644
--- a/src/mesa/drivers/dri/i965/intel_state.c
+++ b/src/mesa/drivers/dri/i965/intel_state.c
@@ -40,15 +40,26 @@
 int
 intel_translate_shadow_compare_func(GLenum func)
 {
+   /* GL specifies the result of shadow comparisons as:
+    *     1     if   ref <op> texel,
+    *     0     otherwise.
+    *
+    * The hardware does:
+    *     0     if texel <op> ref,
+    *     1     otherwise.
+    *
+    * So, these look a bit strange because there's both a negation
+    * and swapping of the arguments involved.
+    */
    switch (func) {
    case GL_NEVER:
-       return BRW_COMPAREFUNCTION_ALWAYS;
+      return BRW_COMPAREFUNCTION_ALWAYS;
    case GL_LESS:
-       return BRW_COMPAREFUNCTION_LEQUAL;
+      return BRW_COMPAREFUNCTION_LEQUAL;
    case GL_LEQUAL:
-       return BRW_COMPAREFUNCTION_LESS;
+      return BRW_COMPAREFUNCTION_LESS;
    case GL_GREATER:
-       return BRW_COMPAREFUNCTION_GEQUAL;
+      return BRW_COMPAREFUNCTION_GEQUAL;
    case GL_GEQUAL:
       return BRW_COMPAREFUNCTION_GREATER;
    case GL_NOTEQUAL:
@@ -56,7 +67,7 @@ intel_translate_shadow_compare_func(GLenum func)
    case GL_EQUAL:
       return BRW_COMPAREFUNCTION_NOTEQUAL;
    case GL_ALWAYS:
-       return BRW_COMPAREFUNCTION_NEVER;
+      return BRW_COMPAREFUNCTION_NEVER;
    }
 
    assert(!"Invalid shadow comparison function.");




More information about the mesa-commit mailing list