From af3fbb410c245698c00290189c227a870f5bf41c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 8 Jan 2020 21:51:23 -0500 Subject: [PATCH] radeonsi: fix si_build_wrapper_function for compute-based primitive culling Fixes: 3b143369a55 "ac/nir, radv, radeonsi: Switch to using ac_shader_args" Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_shader.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 99d4f818806..c229eb967c8 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -4739,7 +4739,20 @@ void si_build_wrapper_function(struct si_shader_context *ctx, LLVMValueRef *part */ enum ac_arg_type arg_type = AC_ARG_INT; if (LLVMGetTypeKind(type) == LLVMPointerTypeKind) { - arg_type = AC_ARG_CONST_PTR; + type = LLVMGetElementType(type); + + if (LLVMGetTypeKind(type) == LLVMVectorTypeKind) { + if (LLVMGetVectorSize(type) == 4) + arg_type = AC_ARG_CONST_DESC_PTR; + else if (LLVMGetVectorSize(type) == 8) + arg_type = AC_ARG_CONST_IMAGE_PTR; + else + assert(0); + } else if (type == ctx->f32) { + arg_type = AC_ARG_CONST_FLOAT_PTR; + } else { + assert(0); + } } ac_add_arg(&ctx->args, gprs < num_sgprs ? AC_ARG_SGPR : AC_ARG_VGPR, -- 2.30.2