amd/common: scan which components of gl_WorkGroupID are used
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 14 Dec 2017 15:48:01 +0000 (16:48 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 14 Dec 2017 21:22:02 +0000 (22:22 +0100)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/common/ac_shader_info.c
src/amd/common/ac_shader_info.h

index 09dd4bbd558dd4dcf955d0be1348e965682e6d3e..01949770d6802f6930f61b89c0d5d6a34ed5931a 100644 (file)
@@ -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;
index 3c809cce13ad0e13a5f85f841881e0a6f233d270..7beefd02ac5a51339aafeea05ffbf2721f2c6997 100644 (file)
@@ -43,6 +43,7 @@ struct ac_shader_info {
        } ps;
        struct {
                bool uses_grid_size;
+               bool uses_block_id[3];
        } cs;
 };