From 05185e8412c993bfa6deac16875c7ef67456d0c2 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 28 Aug 2023 15:39:08 +0200 Subject: [PATCH] radv: preserve shader argument for separate compilation of NGG shaders Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_shader_args.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_shader_args.c b/src/amd/vulkan/radv_shader_args.c index 63d5eea..85d4aba 100644 --- a/src/amd/vulkan/radv_shader_args.c +++ b/src/amd/vulkan/radv_shader_args.c @@ -286,7 +286,7 @@ declare_ps_input_vgprs(const struct radv_shader_info *info, struct radv_shader_a static void declare_ngg_sgprs(const struct radv_shader_info *info, struct radv_shader_args *args, bool has_ngg_provoking_vtx) { - if (has_ngg_provoking_vtx) + if (!info->is_monolithic || has_ngg_provoking_vtx) add_ud_arg(args, 1, AC_ARG_INT, &args->ngg_provoking_vtx, AC_UD_NGG_PROVOKING_VTX); if (info->has_ngg_culling) { @@ -682,7 +682,11 @@ declare_shader_args(const struct radv_device *device, const struct radv_pipeline if (!info->is_monolithic) { /* SGPRs */ ac_add_preserved(&args->ac, &args->ac.ring_offsets); - ac_add_preserved(&args->ac, &args->ac.gs2vs_offset); + if (info->is_ngg) { + ac_add_preserved(&args->ac, &args->ac.gs_tg_info); + } else { + ac_add_preserved(&args->ac, &args->ac.gs2vs_offset); + } ac_add_preserved(&args->ac, &args->ac.merged_wave_info); ac_add_preserved(&args->ac, &args->ac.tess_offchip_offset); @@ -696,6 +700,8 @@ declare_shader_args(const struct radv_device *device, const struct radv_pipeline ac_add_preserved(&args->ac, &args->ac.push_constants); ac_add_preserved(&args->ac, &args->ac.view_index); ac_add_preserved(&args->ac, &args->shader_query_state); + if (info->is_ngg) + ac_add_preserved(&args->ac, &args->ngg_provoking_vtx); /* VGPRs */ ac_add_preserved(&args->ac, &args->ac.gs_vtx_offset[0]); -- 2.7.4