From: Samuel Pitoiset Date: Fri, 23 Feb 2018 13:21:06 +0000 (+0100) Subject: ac/nir: use ordered float comparisons except for not equal X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e05507a427b79e481eb8e45d7aa3c9b4b78376bf;p=mesa.git ac/nir: use ordered float comparisons except for not equal Original patch from Timothy Arceri, I have just fixed the not equal case locally. This fixes one important rendering issue in Wolfenstein 2 (the cutscene transition issue). RadeonSI uses the same ordered comparisons, so I guess that what we should do as well. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104302 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104905 Cc: Signed-off-by: Samuel Pitoiset Reviewed-by: Marek Olšák Reviewed-by: Connor Abbott --- diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 2c5a6e6cf6d..8183e48bd3e 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1797,16 +1797,16 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr) result = emit_int_cmp(&ctx->ac, LLVMIntUGE, src[0], src[1]); break; case nir_op_feq: - result = emit_float_cmp(&ctx->ac, LLVMRealUEQ, src[0], src[1]); + result = emit_float_cmp(&ctx->ac, LLVMRealOEQ, src[0], src[1]); break; case nir_op_fne: result = emit_float_cmp(&ctx->ac, LLVMRealUNE, src[0], src[1]); break; case nir_op_flt: - result = emit_float_cmp(&ctx->ac, LLVMRealULT, src[0], src[1]); + result = emit_float_cmp(&ctx->ac, LLVMRealOLT, src[0], src[1]); break; case nir_op_fge: - result = emit_float_cmp(&ctx->ac, LLVMRealUGE, src[0], src[1]); + result = emit_float_cmp(&ctx->ac, LLVMRealOGE, src[0], src[1]); break; case nir_op_fabs: result = emit_intrin_1f_param(&ctx->ac, "llvm.fabs",