zink: unify code for emitting named uint-based variable instructions
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7130>
This commit is contained in:

committed by
Marge Bot

parent
20d73a9049
commit
3424e17b9a
@@ -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);
|
||||
if (!*var_id)
|
||||
*var_id = create_builtin_var(ctx, var_type,
|
||||
SpvStorageClassInput,
|
||||
var_name,
|
||||
builtin);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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:
|
||||
|
Reference in New Issue
Block a user