summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Scheidegger <[email protected]>2012-12-14 21:17:05 +0100
committerRoland Scheidegger <[email protected]>2012-12-17 11:50:27 +0100
commit3d14b25030dc2ad8bc10400d686250979fbee70d (patch)
treea6d8b759c3981d247b6ffb5146a13957fa381b3e
parent1358f3a905448f6fb546aba951e317f743a83c76 (diff)
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 <[email protected]>
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c5
1 files changed, 3 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 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);
}