Mesa (master): gallivm: Zero min_lod and max_lod when only one view is selected and min/ mag filter are equal.
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Wed Jun 2 12:24:34 UTC 2010
Module: Mesa
Branch: master
Commit: baf4393105926d24e4d75d2c44f79074e92ddc3e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=baf4393105926d24e4d75d2c44f79074e92ddc3e
Author: José Fonseca <jfonseca at vmware.com>
Date: Wed Jun 2 13:22:38 2010 +0100
gallivm: Zero min_lod and max_lod when only one view is selected and min/mag filter are equal.
---
src/gallium/auxiliary/gallivm/lp_bld_sample.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c
index c7f9b10..946c23e 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c
@@ -92,7 +92,7 @@ lp_sampler_static_state(struct lp_sampler_static_state *state,
state->wrap_r = sampler->wrap_r;
state->min_img_filter = sampler->min_img_filter;
state->mag_img_filter = sampler->mag_img_filter;
- if (texture->last_level) {
+ if (view->last_level) {
state->min_mip_filter = sampler->min_mip_filter;
} else {
state->min_mip_filter = PIPE_TEX_MIPFILTER_NONE;
@@ -105,8 +105,14 @@ lp_sampler_static_state(struct lp_sampler_static_state *state,
state->normalized_coords = sampler->normalized_coords;
state->lod_bias = sampler->lod_bias;
- state->min_lod = sampler->min_lod;
- state->max_lod = sampler->max_lod;
+ if (!view->last_level &&
+ sampler->min_img_filter == sampler->mag_img_filter) {
+ state->min_lod = 0.0f;
+ state->max_lod = 0.0f;
+ } else {
+ state->min_lod = MAX2(sampler->min_lod, 0.0f);
+ state->max_lod = sampler->max_lod;
+ }
state->border_color[0] = sampler->border_color[0];
state->border_color[1] = sampler->border_color[1];
state->border_color[2] = sampler->border_color[2];
More information about the mesa-commit
mailing list