diff options
author | Chris Forbes <[email protected]> | 2014-04-12 22:32:21 +1200 |
---|---|---|
committer | Chris Forbes <[email protected]> | 2014-04-13 08:51:46 +1200 |
commit | 26224d3e00cb00e45145d4fd22cd7495eecad9e1 (patch) | |
tree | c036541b0153e83d02132ace11649026c11c9e92 | |
parent | 857f3a68ea7370d1db2ef5faca181a36ada7d49d (diff) |
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 <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_state.c | 21 |
1 files 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 bfc35d82f2a..99e75cb1a4d 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."); |