radeonsi/gfx10: change location of instance ID shader input

Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Nicolai Hähnle
2018-05-30 22:47:10 +02:00
committed by Marek Olšák
parent ccdf792910
commit 8060339278
+11 -2
View File
@@ -4534,11 +4534,17 @@ static void declare_vs_input_vgprs(struct si_shader_context *ctx,
if (shader->key.as_ls) {
ctx->param_rel_auto_id = add_arg(fninfo, ARG_VGPR, ctx->i32);
add_arg_assign(fninfo, ARG_VGPR, ctx->i32, &ctx->abi.instance_id);
add_arg(fninfo, ARG_VGPR, ctx->i32); /* unused */
} else if (ctx->screen->info.chip_class == GFX10 &&
!shader->is_gs_copy_shader) {
add_arg(fninfo, ARG_VGPR, ctx->i32); /* user vgpr */
add_arg(fninfo, ARG_VGPR, ctx->i32); /* user vgpr */
add_arg_assign(fninfo, ARG_VGPR, ctx->i32, &ctx->abi.instance_id);
} else {
add_arg_assign(fninfo, ARG_VGPR, ctx->i32, &ctx->abi.instance_id);
ctx->param_vs_prim_id = add_arg(fninfo, ARG_VGPR, ctx->i32);
add_arg(fninfo, ARG_VGPR, ctx->i32); /* unused */
}
add_arg(fninfo, ARG_VGPR, ctx->i32); /* unused */
if (!shader->is_gs_copy_shader) {
/* Vertex load indices. */
@@ -7292,7 +7298,10 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx,
}
unsigned vertex_id_vgpr = first_vs_vgpr;
unsigned instance_id_vgpr = first_vs_vgpr + (key->vs_prolog.as_ls ? 2 : 1);
unsigned instance_id_vgpr =
ctx->screen->info.chip_class >= GFX10 ?
first_vs_vgpr + 3 :
first_vs_vgpr + (key->vs_prolog.as_ls ? 2 : 1);
ctx->abi.vertex_id = input_vgprs[vertex_id_vgpr];
ctx->abi.instance_id = input_vgprs[instance_id_vgpr];