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

Author: Marcin Ĺšlusarz <[email protected]>
Date:   Mon Jul 10 14:05:37 2023 +0200

intel/compiler: remove NV_mesh_shader support

Reviewed-by: Ivan Briano <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24071>

---

 src/intel/compiler/brw_fs.cpp   |  6 +-----
 src/intel/compiler/brw_mesh.cpp | 17 ++++-------------
 src/intel/compiler/brw_nir.c    |  5 ++---
 3 files changed, 7 insertions(+), 21 deletions(-)

diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
index 46552fe4dfa..be692dab709 100644
--- a/src/intel/compiler/brw_fs.cpp
+++ b/src/intel/compiler/brw_fs.cpp
@@ -7715,11 +7715,7 @@ fs_visitor::emit_work_group_id_setup()
       bld.MOV(offset(id, bld, 1), r0_6);
       bld.MOV(offset(id, bld, 2), r0_7);
    } else {
-      /* NV Task/Mesh have a single Workgroup ID dimension in the HW. */
-      assert(gl_shader_stage_is_mesh(stage));
-      assert(nir->info.mesh.nv);
-      bld.MOV(offset(id, bld, 1), brw_imm_ud(0));
-      bld.MOV(offset(id, bld, 2), brw_imm_ud(0));
+      unreachable("workgroup id should not be used in non-compute stage");
    }
 
    return id;
diff --git a/src/intel/compiler/brw_mesh.cpp b/src/intel/compiler/brw_mesh.cpp
index 4ee76c99a08..f377bfc15a6 100644
--- a/src/intel/compiler/brw_mesh.cpp
+++ b/src/intel/compiler/brw_mesh.cpp
@@ -788,12 +788,6 @@ struct index_packing_state {
 static bool
 brw_can_pack_primitive_indices(nir_shader *nir, struct index_packing_state 
*state)
 {
-   /* NV_mesh_shader primitive indices are stored as a flat array instead
-    * of an array of primitives. Don't bother with this for now.
-    */
-   if (nir->info.mesh.nv)
-      return false;
-
    /* can single index fit into one byte of U888X format? */
    if (nir->info.mesh.max_vertices_out > 255)
       return false;
@@ -1549,19 +1543,16 @@ fs_visitor::nir_emit_task_mesh_intrinsic(const 
fs_builder &bld,
       bld.MOV(dest, payload.extended_parameter_0);
       break;
 
-   case nir_intrinsic_load_local_invocation_index:
    case nir_intrinsic_load_local_invocation_id:
+      unreachable("local invocation id should have been lowered earlier");
+      break;
+
+   case nir_intrinsic_load_local_invocation_index:
       dest = retype(dest, BRW_REGISTER_TYPE_UD);
       bld.MOV(dest, payload.local_index);
-      /* Task/Mesh only use one dimension. */
-      if (instr->intrinsic == nir_intrinsic_load_local_invocation_id) {
-         bld.MOV(offset(dest, bld, 1), brw_imm_uw(0));
-         bld.MOV(offset(dest, bld, 2), brw_imm_uw(0));
-      }
       break;
 
    case nir_intrinsic_load_num_workgroups:
-      assert(!nir->info.mesh.nv);
       dest = retype(dest, BRW_REGISTER_TYPE_UD);
       bld.MOV(offset(dest, bld, 0), brw_uw1_grf(0, 13)); /* g0.6 >> 16 */
       bld.MOV(offset(dest, bld, 1), brw_uw1_grf(0, 8));  /* g0.4 & 0xffff */
diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c
index 415502e4cb1..bc06cb4bf0f 100644
--- a/src/intel/compiler/brw_nir.c
+++ b/src/intel/compiler/brw_nir.c
@@ -1174,7 +1174,7 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
    if (producer->info.stage == MESA_SHADER_MESH &&
        consumer->info.stage == MESA_SHADER_FRAGMENT) {
       uint64_t fs_inputs = 0, ms_outputs = 0;
-      /* gl_MeshPerPrimitiveNV[].gl_ViewportIndex, gl_PrimitiveID and gl_Layer
+      /* gl_MeshPerPrimitiveEXT[].gl_ViewportIndex, gl_PrimitiveID and gl_Layer
        * are per primitive, but fragment shader does not have them marked as
        * such. Add the annotation here.
        */
@@ -1286,8 +1286,7 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
    }
 
    if (producer->info.stage == MESA_SHADER_TASK &&
-         consumer->info.stage == MESA_SHADER_MESH &&
-         !consumer->info.mesh.nv) {
+         consumer->info.stage == MESA_SHADER_MESH) {
 
       for (unsigned i = 0; i < 3; ++i)
          assert(producer->info.mesh.ts_mesh_dispatch_dimensions[i] <= 
UINT16_MAX);

Reply via email to