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
