On 04/16/2013 01:07 PM, srol...@vmware.com wrote:
From: Roland Scheidegger<srol...@vmware.com>
This will calculate rho correctly as
sqrt(max((ds/dx)^2 + (dt/dx)^2 + (dr/dx)^2), (ds/dx)^2 + (dt/dx)^2 + (dr/dx)^2))
instead of max(|ds/dx|,|dt/dx|,|dr/dx|,|ds/dy|,|dt/dy,|dr/dy|)
(for 3 coords - 2 coords work analogous, for 1 coord there's no point doing
the exact version), for both implicit and explicit derivatives.
While such approximation seems to be allowed in OpenGL some APIs may be less
forgiving, and the error can be quite large (sqrt(2) for 2 coords, sqrt(3) for
3 coords so wrong by nearly one mip level in the latter case).
This also helps to single out "real" bugs from "expected" ones, so it is debug
only (though at least combined with no_brilinear I didn't really see much of a
performance difference but only tested with a debug build - at least with
implicit mipmaps the instruction count is almost exactly the same though the
instructions are more complex (1 sqrt and mul/adds instead of and/max mostly).
The code when the option isn't set stays exactly the same.
It sounds like a better name for the option would be something like
"sqrt_rho" because you're just computing rho with more precision.
---
src/gallium/auxiliary/gallivm/lp_bld_debug.h | 3 +-
src/gallium/auxiliary/gallivm/lp_bld_init.c | 1 +
src/gallium/auxiliary/gallivm/lp_bld_sample.c | 299 +++++++++++++++----------
3 files changed, 185 insertions(+), 118 deletions(-)
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.h
b/src/gallium/auxiliary/gallivm/lp_bld_debug.h
index da873f3..b65a1f7 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_debug.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.h
@@ -42,7 +42,8 @@
#define GALLIVM_DEBUG_NO_OPT (1<< 3)
#define GALLIVM_DEBUG_PERF (1<< 4)
#define GALLIVM_DEBUG_NO_BRILINEAR (1<< 5)
-#define GALLIVM_DEBUG_GC (1<< 6)
+#define GALLIVM_DEBUG_NO_RHO_OPT (1<< 6)
GALLIVM_DEBUG_SQRT_RHO?
Looks good otherwise.
-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev