radeonsi/gfx10: use correct VGPR for instance ID in LS shader
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Fri, 31 Aug 2018 17:58:35 +0000 (19:58 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 3 Jul 2019 19:51:13 +0000 (15:51 -0400)
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/gallium/drivers/radeonsi/si_shader.c

index 7f4fc22f175d05b84e0badf1d798ae91bb9c1f17..a99a58e56758a0d78e12c2c9ac028fee6bc3dd68 100644 (file)
@@ -4547,8 +4547,13 @@ static void declare_vs_input_vgprs(struct si_shader_context *ctx,
        add_arg_assign(fninfo, ARG_VGPR, ctx->i32, &ctx->abi.vertex_id);
        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 */
+               if (ctx->screen->info.chip_class >= GFX10) {
+                       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);
+                       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 */