mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 10:50:10 +01:00
ac/nir: Use context-specific LLVM types
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@lists.freedesktop.org> Signed-off-by: Alex Smith <asmith@feralinteractive.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
parent
ad558408ff
commit
ca83d51cfb
1 changed files with 2 additions and 2 deletions
|
|
@ -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, "");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue