[Mesa-dev] [PATCH 1/3] amd/common: scan which components of gl_WorkGroupID are used

Samuel Pitoiset samuel.pitoiset at gmail.com
Thu Dec 14 15:48:01 UTC 2017


Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/amd/common/ac_shader_info.c | 8 ++++++++
 src/amd/common/ac_shader_info.h | 1 +
 2 files changed, 9 insertions(+)

diff --git a/src/amd/common/ac_shader_info.c b/src/amd/common/ac_shader_info.c
index 09dd4bbd55..01949770d6 100644
--- a/src/amd/common/ac_shader_info.c
+++ b/src/amd/common/ac_shader_info.c
@@ -45,6 +45,14 @@ 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_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;
+		}
+		break;
+	}
 	case nir_intrinsic_load_sample_id:
 		info->ps.force_persample = true;
 		break;
diff --git a/src/amd/common/ac_shader_info.h b/src/amd/common/ac_shader_info.h
index 3c809cce13..7beefd02ac 100644
--- a/src/amd/common/ac_shader_info.h
+++ b/src/amd/common/ac_shader_info.h
@@ -43,6 +43,7 @@ struct ac_shader_info {
 	} ps;
 	struct {
 		bool uses_grid_size;
+		bool uses_block_id[3];
 	} cs;
 };
 
-- 
2.15.1



More information about the mesa-dev mailing list