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

Author: Marcin Ślusarz <[email protected]>
Date:   Tue Jun  7 13:03:24 2022 +0200

spirv, compiler: add "bool nv" to shader_info.mesh

Not knowing whether we deal with the NV or EXT extension
makes implementation difficult for Intel HW.
NV support will be dropped at some point, so
this ugliness will go away eventually.

Reviewed-by: Timur Kristóf <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18366>

---

 src/compiler/shader_info.h        |  3 +++
 src/compiler/spirv/spirv_to_nir.c | 11 ++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index 2bffee43a48..ef1bea49922 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -540,6 +540,9 @@ typedef struct shader_info {
          uint16_t max_vertices_out;
          uint16_t max_primitives_out;
          uint16_t primitive_type;  /* GL_POINTS, GL_LINES or GL_TRIANGLES. */
+
+         /* TODO: remove this when we stop supporting NV_mesh_shader. */
+         bool nv;
       } mesh;
    };
 } shader_info;
diff --git a/src/compiler/spirv/spirv_to_nir.c 
b/src/compiler/spirv/spirv_to_nir.c
index 4f71268ebb1..f9b93debd55 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -4458,9 +4458,18 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, 
SpvOp opcode,
       break;
    }
 
+   case SpvOpExtension: {
+      /* Implementing both NV_mesh_shader and EXT_mesh_shader
+       * is difficult without knowing which we're dealing with.
+       * TODO: remove this when we stop supporting NV_mesh_shader.
+       */
+      const char *ext_name = (const char *)&w[1];
+      if (strcmp(ext_name, "SPV_NV_mesh_shader") == 0)
+         b->shader->info.mesh.nv = true;
+      break;
+   }
    case SpvOpSourceExtension:
    case SpvOpSourceContinued:
-   case SpvOpExtension:
    case SpvOpModuleProcessed:
       /* Unhandled, but these are for debug so that's ok. */
       break;

Reply via email to