From: Dave Airlie Date: Mon, 13 Jul 2020 05:44:24 +0000 (+1000) Subject: llvmpipe: fix position offset interpolation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e16f59c31621cdba819d7aed07d1457c838121bd;p=mesa.git llvmpipe: fix position offset interpolation pos offset only applies to the gl_FragPos input, when I refactored I messed that up, only use pos_offset for the position inputs and use 0.5 otherwise. This fixes: GTF-GL45.gtf30.GL3Tests.fragment_coord_conventions.fragment_coord_conventions_multisample Reviewed-by: Roland Scheidegger Part-of: --- diff --git a/src/gallium/drivers/llvmpipe/lp_bld_interp.c b/src/gallium/drivers/llvmpipe/lp_bld_interp.c index 52ba7dbdd2a..7ec8bd13cbc 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_interp.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_interp.c @@ -291,7 +291,7 @@ attribs_update_simple(struct lp_build_interp_soa_context *bld, LLVMValueRef pixoffx; LLVMValueRef pixoffy; LLVMValueRef ptr; - LLVMValueRef pix_center_offset = lp_build_const_vec(gallivm, coeff_bld->type, bld->pos_offset); + LLVMValueRef pix_center_offset = lp_build_const_vec(gallivm, coeff_bld->type, 0.5); /* could do this with code-generated passed in pixel offsets too */ @@ -333,7 +333,7 @@ attribs_update_simple(struct lp_build_interp_soa_context *bld, x_val_idx = lp_build_array_get(gallivm, bld->sample_pos_array, x_val_idx); a = lp_build_broadcast_scalar(coeff_bld, x_val_idx); } else { - a = pix_center_offset; + a = lp_build_const_vec(gallivm, coeff_bld->type, bld->pos_offset); } } else if (attrib == 0 && chan == 1) { @@ -344,7 +344,7 @@ attribs_update_simple(struct lp_build_interp_soa_context *bld, y_val_idx = lp_build_array_get(gallivm, bld->sample_pos_array, y_val_idx); a = lp_build_broadcast_scalar(coeff_bld, y_val_idx); } else { - a = pix_center_offset; + a = lp_build_const_vec(gallivm, coeff_bld->type, bld->pos_offset); } } else { @@ -534,7 +534,7 @@ lp_build_interp_soa(struct lp_build_interp_soa_context *bld, pixoffy = LLVMBuildFAdd(builder, pixoffy, lp_build_broadcast_scalar(coeff_bld, bld->y), ""); - LLVMValueRef pix_center_offset = lp_build_const_vec(gallivm, coeff_bld->type, bld->pos_offset); + LLVMValueRef pix_center_offset = lp_build_const_vec(gallivm, coeff_bld->type, 0.5); if (loc == TGSI_INTERPOLATE_LOC_CENTER) { if (bld->coverage_samples > 1) {