[Mesa-stable] Fwd: [Mesa-dev] [PATCH 1/1] radv: use a faster version for nir_op_pack_half_2x16

Samuel Pitoiset samuel.pitoiset at gmail.com
Fri Dec 22 09:30:15 UTC 2017


Right, I do agree with Alex.

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


More information about the mesa-stable mailing list