radv: add a new shader argument for non-monolithic shaders PC

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>
This commit is contained in:
Samuel Pitoiset
2023-08-15 11:56:56 +02:00
committed by Marge Bot
parent 7b4f10b434
commit 8ba1860fbd
3 changed files with 11 additions and 1 deletions

View 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,

View 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);

View 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;