|
|
@@ -436,7 +436,6 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, |
|
|
|
|
|
|
|
case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE: |
|
|
|
{ |
|
|
|
LLVMValueRef min, max; |
|
|
|
struct lp_build_context abs_coord_bld = bld->coord_bld; |
|
|
|
abs_coord_bld.type.sign = FALSE; |
|
|
|
|
|
|
@@ -450,16 +449,18 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld, |
|
|
|
} |
|
|
|
coord = lp_build_abs(coord_bld, coord); |
|
|
|
|
|
|
|
/* 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); |
|
|
|
/* coord1 = min(coord1, length-1) */ |
|
|
|
coord1 = lp_build_min(int_coord_bld, coord1, length_minus_one); |
|
|
|
} |
|
|
|
break; |
|
|
|
|