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

Author: Caio Oliveira <caio.olive...@intel.com>
Date:   Tue Oct 31 09:53:30 2023 -0700

intel/compiler: Clarify the asserts in nir_load_workgroup_id lowering

For Task/Mesh WorkgroupID is now lowered to WorkgroupIndex by the
generic NIR pass, so we shouldn't hit this.  We can now simplify the
asserting code in emit_work_group_id_setup().

Reviewed-by: Ivan Briano <ivan.bri...@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25977>

---

 src/intel/compiler/brw_fs.cpp     | 14 +++++---------
 src/intel/compiler/brw_fs_nir.cpp |  4 +++-
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
index 74840c93107..80f844fa9c3 100644
--- a/src/intel/compiler/brw_fs.cpp
+++ b/src/intel/compiler/brw_fs.cpp
@@ -8059,21 +8059,17 @@ brw_compile_fs(const struct brw_compiler *compiler,
 fs_reg
 fs_visitor::emit_work_group_id_setup()
 {
-   assert(gl_shader_stage_uses_workgroup(stage));
+   assert(gl_shader_stage_is_compute(stage));
 
    fs_reg id = bld.vgrf(BRW_REGISTER_TYPE_UD, 3);
 
    struct brw_reg r0_1(retype(brw_vec1_grf(0, 1), BRW_REGISTER_TYPE_UD));
    bld.MOV(id, r0_1);
 
-   if (gl_shader_stage_is_compute(stage)) {
-      struct brw_reg r0_6(retype(brw_vec1_grf(0, 6), BRW_REGISTER_TYPE_UD));
-      struct brw_reg r0_7(retype(brw_vec1_grf(0, 7), BRW_REGISTER_TYPE_UD));
-      bld.MOV(offset(id, bld, 1), r0_6);
-      bld.MOV(offset(id, bld, 2), r0_7);
-   } else {
-      unreachable("workgroup id should not be used in non-compute stage");
-   }
+   struct brw_reg r0_6(retype(brw_vec1_grf(0, 6), BRW_REGISTER_TYPE_UD));
+   struct brw_reg r0_7(retype(brw_vec1_grf(0, 7), BRW_REGISTER_TYPE_UD));
+   bld.MOV(offset(id, bld, 1), r0_6);
+   bld.MOV(offset(id, bld, 2), r0_7);
 
    return id;
 }
diff --git a/src/intel/compiler/brw_fs_nir.cpp 
b/src/intel/compiler/brw_fs_nir.cpp
index 34df9a8f436..add1f62afae 100644
--- a/src/intel/compiler/brw_fs_nir.cpp
+++ b/src/intel/compiler/brw_fs_nir.cpp
@@ -194,7 +194,9 @@ emit_system_values_block(nir_block *block, fs_visitor *v)
 
       case nir_intrinsic_load_workgroup_id:
       case nir_intrinsic_load_workgroup_id_zero_base:
-         assert(gl_shader_stage_uses_workgroup(v->stage));
+         if (gl_shader_stage_is_mesh(v->stage))
+            unreachable("should be lowered by 
nir_lower_compute_system_values().");
+         assert(gl_shader_stage_is_compute(v->stage));
          reg = &v->nir_system_values[SYSTEM_VALUE_WORKGROUP_ID];
          if (reg->file == BAD_FILE)
             *reg = v->emit_work_group_id_setup();

Reply via email to