[Mesa-dev] [PATCH] ac/nir: Use context-specific LLVM types
Samuel Pitoiset
samuel.pitoiset at gmail.com
Mon Oct 15 15:27:00 UTC 2018
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
On 10/15/18 5:23 PM, Bas Nieuwenhuizen wrote:
> Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
>
> Thanks!
> On Mon, Oct 15, 2018 at 5:19 PM Alex Smith <asmith at 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-stable at lists.freedesktop.org>
>> Signed-off-by: Alex Smith <asmith at 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 at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list