<div dir="ltr"><div>Just noticed this didn't get tagged for stable. Since it fixes various rendering issues on Vega, I'd like to nominate it for 17.3.</div><div><br></div><div>Commit 5f81a43535e8512cef26ea3dcd1e3a489bd5a1bb on master.</div><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Samuel Pitoiset</b> <span dir="ltr"><<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>></span><br>Date: 5 December 2017 at 17:02<br>Subject: [Mesa-dev] [PATCH 1/1] radv: use a faster version for nir_op_pack_half_2x16<br>To: <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br><br><br>This patch is ported from RadeonSI and it has two effects.<br>
<br>
It fixes a rendering issue which affects F1 2017 and Dawn<br>
of War 3 (Vega only) because LLVM was ending up by generating<br>
the new v_mad_mix_{hi,lo} instructions which appear to be<br>
buggy in some way. Not sure if Mesa is generating something<br>
wrong or if the issue is in LLVM only. Anyway, that explains why<br>
the DOW3 issue can't be reproduced with GL on Vega.<br>
<br>
It also improves performance because v_cvt_pkrtz_f16 is faster,<br>
and because I guess the rounding mode behaviour is similar between<br>
GL and VK, we can use it. About performance, it improves Talos<br>
by +3/4% but I don't see any other impacts.<br>
<br>
No CTS regressions on Polaris (Vega in progress).<br>
<br>
Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>><br>
---<br>
 src/amd/common/ac_nir_to_llvm.<wbr>c | 12 +-----------<br>
 1 file changed, 1 insertion(+), 11 deletions(-)<br>
<br>
diff --git a/src/amd/common/ac_nir_to_<wbr>llvm.c b/src/amd/common/ac_nir_to_<wbr>llvm.c<br>
index 96ba289a81..663b27d265 100644<br>
--- a/src/amd/common/ac_nir_to_<wbr>llvm.c<br>
+++ b/src/amd/common/ac_nir_to_<wbr>llvm.c<br>
@@ -1426,23 +1426,13 @@ static LLVMValueRef emit_bitfield_insert(struct ac_llvm_context *ctx,<br>
 static LLVMValueRef emit_pack_half_2x16(struct ac_llvm_context *ctx,<br>
                                        LLVMValueRef src0)<br>
 {<br>
-       LLVMValueRef const16 = LLVMConstInt(ctx->i32, 16, false);<br>
-       int i;<br>
        LLVMValueRef comp[2];<br>
<br>
        src0 = ac_to_float(ctx, src0);<br>
        comp[0] = LLVMBuildExtractElement(ctx-><wbr>builder, src0, ctx->i32_0, "");<br>
        comp[1] = LLVMBuildExtractElement(ctx-><wbr>builder, src0, ctx->i32_1, "");<br>
-       for (i = 0; i < 2; i++) {<br>
-               comp[i] = LLVMBuildFPTrunc(ctx->builder, comp[i], ctx->f16, "");<br>
-               comp[i] = LLVMBuildBitCast(ctx->builder, comp[i], ctx->i16, "");<br>
-               comp[i] = LLVMBuildZExt(ctx->builder, comp[i], ctx->i32, "");<br>
-       }<br>
-<br>
-       comp[1] = LLVMBuildShl(ctx->builder, comp[1], const16, "");<br>
-       comp[0] = LLVMBuildOr(ctx->builder, comp[0], comp[1], "");<br>
<br>
-       return comp[0];<br>
+       return ac_build_cvt_pkrtz_f16(ctx, comp);<br>
 }<br>
<br>
 static LLVMValueRef emit_unpack_half_2x16(struct ac_llvm_context *ctx,<br>
<span class="gmail-HOEnZb"><font color="#888888">--<br>
2.15.1<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></div><br></div>