Mesa (master): gallivm: Fix mipfiltering with negative lod bias.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Sat May 8 22:31:32 UTC 2010


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

Author: José Fonseca <jfonseca at vmware.com>
Date:   Sat May  8 23:16:38 2010 +0100

gallivm: Fix mipfiltering with negative lod bias.

In particular, don't use the clamped lod to compute level + 1, or
lod in [-1, 0] range will actually interpolate with level 1.

This makes Mipfilter DCT pass 100%.

---

 src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
index dd0053f..3b1e6df 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
@@ -1046,8 +1046,10 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld,
                                 int_bld->zero,
                                 last_level);
    /* compute level 1 and clamp to legal range of levels */
-   *level1_out = lp_build_add(int_bld, *level0_out, int_bld->one);
-   *level1_out = lp_build_min(int_bld, *level1_out, last_level);
+   level = lp_build_add(int_bld, level, int_bld->one);
+   *level1_out = lp_build_clamp(int_bld, level,
+                                int_bld->zero,
+                                last_level);
 
    *weight_out = lp_build_fract(float_bld, lod);
 }




More information about the mesa-commit mailing list