Mesa (main): radeonsi: inline declare_vs_specific_input_sgprs

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 16 20:00:21 UTC 2021


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sun Nov  7 10:46:04 2021 -0500

radeonsi: inline declare_vs_specific_input_sgprs

I think it was getting a little hard to follow.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13811>

---

 src/gallium/drivers/radeonsi/si_shader.c | 42 ++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 98170796d6d..5fb4139e07c 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -267,16 +267,6 @@ static void declare_global_desc_pointers(struct si_shader_context *ctx)
               &ctx->bindless_samplers_and_images);
 }
 
-static void declare_vs_specific_input_sgprs(struct si_shader_context *ctx)
-{
-   ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->vs_state_bits);
-   if (!ctx->shader->is_gs_copy_shader) {
-      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.base_vertex);
-      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.draw_id);
-      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.start_instance);
-   }
-}
-
 static void declare_vb_descriptor_input_sgprs(struct si_shader_context *ctx)
 {
    ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_CONST_DESC_PTR, &ctx->args.vertex_buffers);
@@ -408,16 +398,25 @@ void si_init_shader_args(struct si_shader_context *ctx, bool ngg_cull_shader)
       }
 
       declare_per_stage_desc_pointers(ctx, true);
-      declare_vs_specific_input_sgprs(ctx);
-      if (!shader->is_gs_copy_shader)
-         declare_vb_descriptor_input_sgprs(ctx);
+      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->vs_state_bits);
+
+      if (ctx->shader->is_gs_copy_shader) {
+         declare_streamout_params(ctx, &shader->selector->so);
+         /* VGPRs */
+         declare_vs_input_vgprs(ctx, &num_prolog_vgprs);
+         break;
+      }
+
+      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.base_vertex);
+      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.draw_id);
+      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.start_instance);
+      declare_vb_descriptor_input_sgprs(ctx);
 
       if (shader->key.ge.as_es) {
          ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.es2gs_offset);
       } else if (shader->key.ge.as_ls) {
          /* no extra parameters */
       } else {
-         /* The locations of the other parameters are assigned dynamically. */
          declare_streamout_params(ctx, &shader->selector->so);
       }
 
@@ -461,8 +460,11 @@ void si_init_shader_args(struct si_shader_context *ctx, bool ngg_cull_shader)
 
       declare_global_desc_pointers(ctx);
       declare_per_stage_desc_pointers(ctx, ctx->stage == MESA_SHADER_VERTEX);
-      declare_vs_specific_input_sgprs(ctx);
 
+      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->vs_state_bits);
+      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.base_vertex);
+      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.draw_id);
+      ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.start_instance);
       ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->tcs_offchip_layout);
       ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->tcs_out_lds_offsets);
       ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->tcs_out_lds_layout);
@@ -534,10 +536,14 @@ void si_init_shader_args(struct si_shader_context *ctx, bool ngg_cull_shader)
       }
 
       if (ctx->stage == MESA_SHADER_VERTEX) {
-         if (shader->selector->info.base.vs.blit_sgprs_amd)
+         if (shader->selector->info.base.vs.blit_sgprs_amd) {
             declare_vs_blit_inputs(ctx, shader->selector->info.base.vs.blit_sgprs_amd);
-         else
-            declare_vs_specific_input_sgprs(ctx);
+         } else {
+            ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->vs_state_bits);
+            ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.base_vertex);
+            ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.draw_id);
+            ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->args.start_instance);
+         }
       } else {
          ac_add_arg(&ctx->args, AC_ARG_SGPR, 1, AC_ARG_INT, &ctx->vs_state_bits);
 



More information about the mesa-commit mailing list