Mesa (master): ac: add support for gl_HelperInvocation

Timothy Arceri tarceri at kemper.freedesktop.org
Mon Jan 22 22:24:18 UTC 2018


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

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Fri Jan 19 10:04:26 2018 +1100

ac: add support for gl_HelperInvocation

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/amd/common/ac_nir_to_llvm.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 1e592db57a..b90c31320c 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -3916,6 +3916,17 @@ static void emit_discard(struct ac_nir_context *ctx,
 }
 
 static LLVMValueRef
+visit_load_helper_invocation(struct ac_nir_context *ctx)
+{
+	LLVMValueRef result = ac_build_intrinsic(&ctx->ac,
+						 "llvm.amdgcn.ps.live",
+						 ctx->ac.i1, NULL, 0,
+						 AC_FUNC_ATTR_READNONE);
+	result = LLVMBuildNot(ctx->ac.builder, result, "");
+	return LLVMBuildSExt(ctx->ac.builder, result, ctx->ac.i32, "");
+}
+
+static LLVMValueRef
 visit_load_local_invocation_index(struct nir_to_llvm_context *ctx)
 {
 	LLVMValueRef result;
@@ -4354,6 +4365,9 @@ static void visit_intrinsic(struct ac_nir_context *ctx,
 	case nir_intrinsic_load_front_face:
 		result = ctx->abi->front_face;
 		break;
+	case nir_intrinsic_load_helper_invocation:
+		result = visit_load_helper_invocation(ctx);
+		break;
 	case nir_intrinsic_load_instance_id:
 		result = ctx->abi->instance_id;
 		break;




More information about the mesa-commit mailing list