Module: Mesa
Branch: main
Commit: 4224da67264618961bbe74520d1e94399293cfa2
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4224da67264618961bbe74520d1e94399293cfa2

Author: Samuel Pitoiset <[email protected]>
Date:   Wed Aug 23 18:11:14 2023 +0200

radv: preserve shader arguments for non-monolithic VS/TCS on GFX9+

This is more robust than re-creating the function signature in ACO.

Signed-off-by: Samuel Pitoiset <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24697>

---

 src/amd/vulkan/radv_shader_args.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/src/amd/vulkan/radv_shader_args.c 
b/src/amd/vulkan/radv_shader_args.c
index a3add9281e2..705a72fb16d 100644
--- a/src/amd/vulkan/radv_shader_args.c
+++ b/src/amd/vulkan/radv_shader_args.c
@@ -538,6 +538,30 @@ declare_shader_args(const struct radv_device *device, 
const struct radv_pipeline
          ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, 
&args->ac.tcs_rel_ids);
 
          declare_vs_input_vgprs(gfx_level, info, args, true);
+
+         if (!info->is_monolithic) {
+            /* SGPRs */
+            ac_add_preserved(&args->ac, &args->ac.ring_offsets);
+            ac_add_preserved(&args->ac, &args->ac.tess_offchip_offset);
+            ac_add_preserved(&args->ac, &args->ac.merged_wave_info);
+            ac_add_preserved(&args->ac, &args->ac.tcs_factor_offset);
+
+            if (gfx_level >= GFX11) {
+               ac_add_preserved(&args->ac, &args->ac.tcs_wave_id);
+            } else {
+               ac_add_preserved(&args->ac, &args->ac.scratch_offset);
+            }
+
+            ac_add_preserved(&args->ac, &args->descriptor_sets[0]);
+            ac_add_preserved(&args->ac, &args->ac.push_constants);
+            ac_add_preserved(&args->ac, &args->ac.view_index);
+            ac_add_preserved(&args->ac, &args->tcs_offchip_layout);
+            ac_add_preserved(&args->ac, &args->tcs_epilog_pc);
+
+            /* VGPRs */
+            ac_add_preserved(&args->ac, &args->ac.tcs_patch_id);
+            ac_add_preserved(&args->ac, &args->ac.tcs_rel_ids);
+         }
       } else {
          declare_global_input_sgprs(info, user_sgpr_info, args);
 

Reply via email to