Mesa (master): amd/common: scan which components of gl_LocalInvocationID are used

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Thu Dec 14 21:25:53 UTC 2017


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Thu Dec 14 16:48:02 2017 +0100

amd/common: scan which components of gl_LocalInvocationID are used

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/common/ac_shader_info.c | 7 ++++++-
 src/amd/common/ac_shader_info.h | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/amd/common/ac_shader_info.c b/src/amd/common/ac_shader_info.c
index 01949770d6..87744ed23e 100644
--- a/src/amd/common/ac_shader_info.c
+++ b/src/amd/common/ac_shader_info.c
@@ -45,11 +45,16 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, struct ac_shader_info *info)
 	case nir_intrinsic_load_num_work_groups:
 		info->cs.uses_grid_size = true;
 		break;
+	case nir_intrinsic_load_local_invocation_id:
 	case nir_intrinsic_load_work_group_id: {
 		unsigned mask = nir_ssa_def_components_read(&instr->dest.ssa);
 		while (mask) {
 			unsigned i = u_bit_scan(&mask);
-			info->cs.uses_block_id[i] = true;
+
+			if (instr->intrinsic == nir_intrinsic_load_work_group_id)
+				info->cs.uses_block_id[i] = true;
+			else
+				info->cs.uses_thread_id[i] = true;
 		}
 		break;
 	}
diff --git a/src/amd/common/ac_shader_info.h b/src/amd/common/ac_shader_info.h
index 7beefd02ac..0136d5af40 100644
--- a/src/amd/common/ac_shader_info.h
+++ b/src/amd/common/ac_shader_info.h
@@ -44,6 +44,7 @@ struct ac_shader_info {
 	struct {
 		bool uses_grid_size;
 		bool uses_block_id[3];
+		bool uses_thread_id[3];
 	} cs;
 };
 




More information about the mesa-commit mailing list