summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoland Scheidegger <sroland@vmware.com>2010-10-13 02:34:08 +0200
committerRoland Scheidegger <sroland@vmware.com>2010-10-13 02:35:05 +0200
commitc1549729ce5243fb7fec7b589278656b8b1ab4fb (patch)
tree24826abdf344a5ac001dc5118ae86fa9003adbba /src
parent1ca5f7cc31df3d5c80fcea855e536eb2a8245f9e (diff)
gallivm: fix different handling of [non]normalized coords in linear soa path
There seems to be no reason for it, so do same math for both (except the scale mul, of course).
Diffstat (limited to 'src')
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
index af3f4688ed..8c03284621 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
@@ -294,23 +294,13 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld,
if (bld->static_state->normalized_coords) {
/* mul by tex size */
coord = lp_build_mul(coord_bld, coord, length_f);
- /* clamp to length max */
- coord = lp_build_min(coord_bld, coord, length_f);
- /* subtract 0.5 */
- coord = lp_build_sub(coord_bld, coord, half);
- /* clamp to [0, length - 0.5] */
- coord = lp_build_max(coord_bld, coord, coord_bld->zero);
- }
- /* XXX this is odd normalized ranges from 0 to length-0.5 after denorm
- but non-normalized ranges from to 0.5 to length-0.5 after clamp.
- Is this missing the sub 0.5? */
- else {
- LLVMValueRef min, max;
- /* clamp to [0.5, length - 0.5] */
- min = half;
- max = lp_build_sub(coord_bld, length_f, min);
- coord = lp_build_clamp(coord_bld, coord, min, max);
}
+ /* clamp to length max */
+ coord = lp_build_min(coord_bld, coord, length_f);
+ /* subtract 0.5 */
+ coord = lp_build_sub(coord_bld, coord, half);
+ /* clamp to [0, length - 0.5] */
+ coord = lp_build_max(coord_bld, coord, coord_bld->zero);
/* convert to int, compute lerp weight */
lp_build_ifloor_fract(&abs_coord_bld, coord, &coord0, &weight);
coord1 = lp_build_add(int_coord_bld, coord0, int_coord_bld->one);