Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>

Thanks!
On Mon, Oct 15, 2018 at 5:19 PM Alex Smith <asm...@feralinteractive.com> wrote:
>
> LLVMInt*Type() return types from the global context and therefore are
> not safe for use in other contexts. Use types from our own context
> instead.
>
> Fixes frequent crashes seen when doing multithreaded pipeline creation.
>
> Fixes: 4d0b02bb5a "ac: add support for 16bit load_push_constant"
> Fixes: 7e7ee82698 "ac: add support for 16bit buffer loads"
> Cc: "18.2" <mesa-sta...@lists.freedesktop.org>
> Signed-off-by: Alex Smith <asm...@feralinteractive.com>
> ---
>  src/amd/common/ac_nir_to_llvm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
> index e0a8e04cf3..402cf2d665 100644
> --- a/src/amd/common/ac_nir_to_llvm.c
> +++ b/src/amd/common/ac_nir_to_llvm.c
> @@ -1387,7 +1387,7 @@ static LLVMValueRef visit_load_push_constant(struct 
> ac_nir_context *ctx,
>
>         if (instr->dest.ssa.bit_size == 16) {
>                 unsigned load_dwords = instr->dest.ssa.num_components / 2 + 1;
> -               LLVMTypeRef vec_type = LLVMVectorType(LLVMInt16Type(), 2 * 
> load_dwords);
> +               LLVMTypeRef vec_type = 
> LLVMVectorType(LLVMInt16TypeInContext(ctx->ac.context), 2 * load_dwords);
>                 ptr = ac_cast_ptr(&ctx->ac, ptr, vec_type);
>                 LLVMValueRef res = LLVMBuildLoad(ctx->ac.builder, ptr, "");
>                 res = LLVMBuildBitCast(ctx->ac.builder, res, vec_type, "");
> @@ -1671,7 +1671,7 @@ static LLVMValueRef visit_load_buffer(struct 
> ac_nir_context *ctx,
>                         };
>                         results[idx] = ac_build_intrinsic(&ctx->ac, 
> load_name, data_type, params, 5, 0);
>                         unsigned num_elems = ac_get_type_size(data_type) / 
> elem_size_bytes;
> -                       LLVMTypeRef resTy = 
> LLVMVectorType(LLVMIntType(instr->dest.ssa.bit_size), num_elems);
> +                       LLVMTypeRef resTy = 
> LLVMVectorType(LLVMIntTypeInContext(ctx->ac.context, 
> instr->dest.ssa.bit_size), num_elems);
>                         results[idx] = LLVMBuildBitCast(ctx->ac.builder, 
> results[idx], resTy, "");
>                 }
>         }
> --
> 2.14.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to