Module: Mesa
Branch: master
Commit: 3424e17b9a9beca85c0ef60e195eb544faea8995
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3424e17b9a9beca85c0ef60e195eb544faea8995

Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Jul  7 14:28:31 2020 -0400

zink: unify code for emitting named uint-based variable instructions

Reviewed-by: Erik Faye-Lund <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7130>

---

 .../drivers/zink/nir_to_spirv/nir_to_spirv.c       | 35 ++++++----------------
 1 file changed, 9 insertions(+), 26 deletions(-)

diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c 
b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
index b00ad603700..47971cf36dc 100644
--- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
+++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
@@ -1606,33 +1606,16 @@ emit_load_front_face(struct ntv_context *ctx, 
nir_intrinsic_instr *intr)
 }
 
 static void
-emit_load_instance_id(struct ntv_context *ctx, nir_intrinsic_instr *intr)
+emit_load_uint_input(struct ntv_context *ctx, nir_intrinsic_instr *intr, SpvId 
*var_id, const char *var_name, SpvBuiltIn builtin)
 {
    SpvId var_type = spirv_builder_type_uint(&ctx->builder, 32);
-   if (!ctx->instance_id_var)
-      ctx->instance_id_var = create_builtin_var(ctx, var_type,
-                                               SpvStorageClassInput,
-                                               "gl_InstanceId",
-                                               SpvBuiltInInstanceIndex);
-
-   SpvId result = spirv_builder_emit_load(&ctx->builder, var_type,
-                                          ctx->instance_id_var);
-   assert(1 == nir_dest_num_components(intr->dest));
-   store_dest(ctx, &intr->dest, result, nir_type_uint);
-}
+   if (!*var_id)
+      *var_id = create_builtin_var(ctx, var_type,
+                                   SpvStorageClassInput,
+                                   var_name,
+                                   builtin);
 
-static void
-emit_load_vertex_id(struct ntv_context *ctx, nir_intrinsic_instr *intr)
-{
-   SpvId var_type = spirv_builder_type_uint(&ctx->builder, 32);
-   if (!ctx->vertex_id_var)
-      ctx->vertex_id_var = create_builtin_var(ctx, var_type,
-                                               SpvStorageClassInput,
-                                               "gl_VertexID",
-                                               SpvBuiltInVertexIndex);
-
-   SpvId result = spirv_builder_emit_load(&ctx->builder, var_type,
-                                          ctx->vertex_id_var);
+   SpvId result = spirv_builder_emit_load(&ctx->builder, var_type, *var_id);
    assert(1 == nir_dest_num_components(intr->dest));
    store_dest(ctx, &intr->dest, result, nir_type_uint);
 }
@@ -1662,11 +1645,11 @@ emit_intrinsic(struct ntv_context *ctx, 
nir_intrinsic_instr *intr)
       break;
 
    case nir_intrinsic_load_instance_id:
-      emit_load_instance_id(ctx, intr);
+      emit_load_uint_input(ctx, intr, &ctx->instance_id_var, "gl_InstanceId", 
SpvBuiltInInstanceIndex);
       break;
 
    case nir_intrinsic_load_vertex_id:
-      emit_load_vertex_id(ctx, intr);
+      emit_load_uint_input(ctx, intr, &ctx->vertex_id_var, "gl_VertexId", 
SpvBuiltInVertexIndex);
       break;
 
    default:

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to