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