From: Dave Airlie Date: Tue, 30 Jun 2020 03:21:04 +0000 (+1000) Subject: draw/llvm: fix big-endian mask adjusting X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2bf2e6c83d2b97ecc84589ec94c17cb7beed2c53;p=mesa.git draw/llvm: fix big-endian mask adjusting This code was broken, but it worked by accident, as the pad and the edgeflag were reversed, however when Roland removed the cliptest field back in 2015, he stopped copying the pad which actually stopped copy the edgeflag. Fix the function to actually copy the edgeflag. Fixes: 1b22815af624 ("draw: don't pretend have_clipdist is per-vertex") Reviewed-by: Roland Scheidegger Part-of: --- diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 9fa9c7b2833..2614654f192 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -1181,8 +1181,8 @@ store_aos(struct gallivm_state *gallivm, * { * return (x >> 16) | // vertex_id * ((x & 0x3fff) << 18) | // clipmask - * ((x & 0x4000) << 3) | // pad - * ((x & 0x8000) << 1); // edgeflag + * ((x & 0x4000) << 3) | // edgeflag + * ((x & 0x8000) << 1); // pad * } */ static LLVMValueRef @@ -1200,11 +1200,11 @@ adjust_mask(struct gallivm_state *gallivm, clipmask = LLVMBuildAnd(builder, mask, lp_build_const_int32(gallivm, 0x3fff), ""); clipmask = LLVMBuildShl(builder, clipmask, lp_build_const_int32(gallivm, 18), ""); if (0) { - pad = LLVMBuildAnd(builder, mask, lp_build_const_int32(gallivm, 0x4000), ""); - pad = LLVMBuildShl(builder, pad, lp_build_const_int32(gallivm, 3), ""); + pad = LLVMBuildAnd(builder, mask, lp_build_const_int32(gallivm, 0x8000), ""); + pad = LLVMBuildShl(builder, pad, lp_build_const_int32(gallivm, 1), ""); } - edgeflag = LLVMBuildAnd(builder, mask, lp_build_const_int32(gallivm, 0x8000), ""); - edgeflag = LLVMBuildShl(builder, edgeflag, lp_build_const_int32(gallivm, 1), ""); + edgeflag = LLVMBuildAnd(builder, mask, lp_build_const_int32(gallivm, 0x4000), ""); + edgeflag = LLVMBuildShl(builder, edgeflag, lp_build_const_int32(gallivm, 3), ""); mask = LLVMBuildOr(builder, vertex_id, clipmask, ""); if (0) {