Mesa (master): radeonsi: fix si_build_wrapper_function for compute-based primitive culling

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 15 21:03:57 UTC 2020


Module: Mesa
Branch: master
Commit: af3fbb410c245698c00290189c227a870f5bf41c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=af3fbb410c245698c00290189c227a870f5bf41c

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Wed Jan  8 21:51:23 2020 -0500

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 <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3338>

---

 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,



More information about the mesa-commit mailing list