Mesa (master): radeonsi: implement TGSI_SEMANTIC_HELPER_INVOCATION

Nicolai Hähnle nh at kemper.freedesktop.org
Fri Apr 22 04:14:13 UTC 2016


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

Author: Nicolai Hähnle <nicolai.haehnle at amd.com>
Date:   Sat Apr 16 13:00:12 2016 -0500

radeonsi: implement TGSI_SEMANTIC_HELPER_INVOCATION

Depends on LLVM support introduced in r267102.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 docs/GL3.txt                             |  2 +-
 src/gallium/drivers/radeonsi/si_shader.c | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/docs/GL3.txt b/docs/GL3.txt
index 6214f8d..be13b53 100644
--- a/docs/GL3.txt
+++ b/docs/GL3.txt
@@ -248,7 +248,7 @@ GLES3.1, GLSL ES 3.1
       glMemoryBarrierByRegion                           DONE
       glGetTexLevelParameter[fi]v - needs updates       DONE
       glGetBooleani_v - restrict to GLES enums
-      gl_HelperInvocation support                       DONE (i965, nvc0, r600)
+      gl_HelperInvocation support                       DONE (i965, nvc0, r600, radeonsi)
 
 GLES3.2, GLSL ES 3.2
   GL_EXT_color_buffer_float                             DONE (all drivers)
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index e277c2f..c6efbc1 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1333,6 +1333,17 @@ static void declare_system_value(
 		value = LLVMGetParam(radeon_bld->main_fn, SI_PARAM_THREAD_ID);
 		break;
 
+#if HAVE_LLVM >= 0x0309
+	case TGSI_SEMANTIC_HELPER_INVOCATION:
+		value = lp_build_intrinsic(gallivm->builder,
+					   "llvm.amdgcn.ps.live",
+					   ctx->i1, NULL, 0,
+					   LLVMReadNoneAttribute | LLVMNoUnwindAttribute);
+		value = LLVMBuildNot(gallivm->builder, value, "");
+		value = LLVMBuildSExt(gallivm->builder, value, ctx->i32, "");
+		break;
+#endif
+
 	default:
 		assert(!"unknown system value");
 		return;




More information about the mesa-commit mailing list