radv: add a new shader argument for non-monolithic shaders PC
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 15 Aug 2023 09:56:56 +0000 (11:56 +0200)
committerMarge Bot <emma+marge@anholt.net>
Fri, 25 Aug 2023 07:22:03 +0000 (07:22 +0000)
This will be used to jump from VS to TCS/GS or TES to GS on GFX9+.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24697>

src/amd/vulkan/radv_shader.h
src/amd/vulkan/radv_shader_args.c
src/amd/vulkan/radv_shader_args.h

index 691a8bc..a8b649f 100644 (file)
@@ -169,7 +169,8 @@ enum radv_ud_index {
    AC_UD_FORCE_VRS_RATES = 10,
    AC_UD_TASK_RING_ENTRY = 11,
    AC_UD_NUM_VERTS_PER_PRIM = 12,
-   AC_UD_SHADER_START = 13,
+   AC_UD_NEXT_STAGE_PC = 13,
+   AC_UD_SHADER_START = 14,
    AC_UD_VS_VERTEX_BUFFERS = AC_UD_SHADER_START,
    AC_UD_VS_BASE_VERTEX_START_INSTANCE,
    AC_UD_VS_PROLOG_INPUTS,
index 3883fb4..a3add92 100644 (file)
@@ -531,6 +531,9 @@ declare_shader_args(const struct radv_device *device, const struct radv_pipeline
             add_ud_arg(args, 1, AC_ARG_INT, &args->tcs_epilog_pc, AC_UD_TCS_EPILOG_PC);
          }
 
+         if (!info->is_monolithic)
+            add_ud_arg(args, 1, AC_ARG_INT, &args->next_stage_pc, AC_UD_NEXT_STAGE_PC);
+
          ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.tcs_patch_id);
          ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.tcs_rel_ids);
 
@@ -635,6 +638,9 @@ declare_shader_args(const struct radv_device *device, const struct radv_pipeline
             declare_ngg_sgprs(info, args, has_ngg_provoking_vtx);
          }
 
+         if (!info->is_monolithic)
+            add_ud_arg(args, 1, AC_ARG_INT, &args->next_stage_pc, AC_UD_NEXT_STAGE_PC);
+
          ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[0]);
          ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[1]);
          ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_prim_id);
index c7eece6..f65cd55 100644 (file)
@@ -86,6 +86,9 @@ struct radv_shader_args {
    /* NGG VS streamout */
    struct ac_arg num_verts_per_prim;
 
+   /* For non-monolithic VS or TES on GFX9+. */
+   struct ac_arg next_stage_pc;
+
    struct radv_userdata_locations user_sgprs_locs;
    unsigned num_user_sgprs;