From 2bf2e6c83d2b97ecc84589ec94c17cb7beed2c53 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 30 Jun 2020 13:21:04 +1000 Subject: [PATCH] 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: --- src/gallium/auxiliary/draw/draw_llvm.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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) { -- 2.30.2