From: Roland Scheidegger Date: Fri, 14 Dec 2012 20:17:05 +0000 (+0100) Subject: gallivm: fix texel fetch for array textures (2) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3d14b25030dc2ad8bc10400d686250979fbee70d;p=mesa.git gallivm: fix texel fetch for array textures (2) a460aea3f14222af46f88d1bc686f82180b8a872 wasn't entirely correct, since all coords are already ints hence need to skip the iround. Passes piglit texelFetch with sampler1DArray/sampler2DArray. Reviewed-by: Dave Airlie --- diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 6839478171d..f1d2f513661 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -984,7 +984,6 @@ lp_build_layer_coord(struct lp_build_sample_context *bld, { LLVMValueRef maxlayer; - layer = lp_build_iround(&bld->coord_bld, layer); maxlayer = bld->dynamic_state->depth(bld->dynamic_state, bld->gallivm, unit); maxlayer = lp_build_sub(&bld->int_bld, maxlayer, bld->int_bld.one); @@ -1041,9 +1040,11 @@ lp_build_sample_common(struct lp_build_sample_context *bld, derivs = &face_derivs; } else if (target == PIPE_TEXTURE_1D_ARRAY) { - *r = lp_build_layer_coord(bld, unit, *t); + *r = lp_build_iround(&bld->coord_bld, *t); + *r = lp_build_layer_coord(bld, unit, *r); } else if (target == PIPE_TEXTURE_2D_ARRAY) { + *r = lp_build_iround(&bld->coord_bld, *r); *r = lp_build_layer_coord(bld, unit, *r); }