Mesa (master): radeonsi: remove redundant variables from struct si_compute

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Sep 25 09:15:34 UTC 2020


Module: Mesa
Branch: master
Commit: 7b1e01fec7280123a31832cb3eefb627bbf34a3b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7b1e01fec7280123a31832cb3eefb627bbf34a3b

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Thu Sep 17 19:43:41 2020 -0400

radeonsi: remove redundant variables from struct si_compute

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

---

 src/gallium/drivers/radeonsi/si_compute.c | 26 +++++++++++---------------
 src/gallium/drivers/radeonsi/si_compute.h |  4 ----
 2 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c
index f7f6c15c800..40a945c3743 100644
--- a/src/gallium/drivers/radeonsi/si_compute.c
+++ b/src/gallium/drivers/radeonsi/si_compute.c
@@ -127,18 +127,14 @@ static void si_create_compute_state_async(void *job, int thread_index)
    assert(program->ir_type == PIPE_SHADER_IR_NIR);
    si_nir_scan_shader(sel->nir, &sel->info);
 
-   sel->info.base.cs.shared_size = program->local_size;
    si_get_active_slot_masks(&sel->info, &sel->active_const_and_shader_buffers,
                             &sel->active_samplers_and_images);
 
    program->shader.is_monolithic = true;
-   program->reads_variable_block_size = sel->info.uses_variable_block_size;
-   program->num_cs_user_data_dwords =
-      sel->info.base.cs.user_data_components_amd;
 
    unsigned user_sgprs = SI_NUM_RESOURCE_SGPRS + (sel->info.uses_grid_size ? 3 : 0) +
-                         (program->reads_variable_block_size ? 3 : 0) +
-                         program->num_cs_user_data_dwords;
+                         (sel->info.uses_variable_block_size ? 3 : 0) +
+                         sel->info.base.cs.user_data_components_amd;
 
    /* Fast path for compute shaders - some descriptors passed via user SGPRs. */
    /* Shader buffers in user SGPRs. */
@@ -237,9 +233,9 @@ static void *si_create_compute_state(struct pipe_context *ctx, const struct pipe
       si_const_and_shader_buffer_descriptors_idx(PIPE_SHADER_COMPUTE);
    sel->sampler_and_images_descriptors_index =
       si_sampler_and_image_descriptors_idx(PIPE_SHADER_COMPUTE);
+   sel->info.base.cs.shared_size = cso->req_local_mem;
    program->shader.selector = &program->sel;
    program->ir_type = cso->ir_type;
-   program->local_size = cso->req_local_mem;
    program->private_size = cso->req_private_mem;
    program->input_size = cso->req_input_mem;
 
@@ -473,9 +469,9 @@ static bool si_switch_compute_shader(struct si_context *sctx, struct si_compute
        * tracker, then we will set LDS_SIZE to 512 bytes rather than 256.
        */
       if (sctx->chip_class <= GFX6) {
-         lds_blocks += align(program->local_size, 256) >> 8;
+         lds_blocks += align(program->sel.info.base.cs.shared_size, 256) >> 8;
       } else {
-         lds_blocks += align(program->local_size, 512) >> 9;
+         lds_blocks += align(program->sel.info.base.cs.shared_size, 512) >> 9;
       }
 
       /* TODO: use si_multiwave_lds_size_workaround */
@@ -611,7 +607,7 @@ static void si_setup_user_sgprs_co_v2(struct si_context *sctx, const amd_kernel_
       dispatch.grid_size_z = util_cpu_to_le32(info->grid[2] * info->block[2]);
 
       dispatch.private_segment_size = util_cpu_to_le32(program->private_size);
-      dispatch.group_segment_size = util_cpu_to_le32(program->local_size);
+      dispatch.group_segment_size = util_cpu_to_le32(program->sel.info.base.cs.shared_size);
 
       dispatch.kernarg_address = util_cpu_to_le64(kernel_args_va);
 
@@ -695,7 +691,7 @@ static void si_setup_nir_user_data(struct si_context *sctx, const struct pipe_gr
    unsigned block_size_reg = grid_size_reg +
                              /* 12 bytes = 3 dwords. */
                              12 * sel->info.uses_grid_size;
-   unsigned cs_user_data_reg = block_size_reg + 12 * program->reads_variable_block_size;
+   unsigned cs_user_data_reg = block_size_reg + 12 * program->sel.info.uses_variable_block_size;
 
    if (sel->info.uses_grid_size) {
       if (info->indirect) {
@@ -712,16 +708,16 @@ static void si_setup_nir_user_data(struct si_context *sctx, const struct pipe_gr
       }
    }
 
-   if (program->reads_variable_block_size) {
+   if (sel->info.uses_variable_block_size) {
       radeon_set_sh_reg_seq(cs, block_size_reg, 3);
       radeon_emit(cs, info->block[0]);
       radeon_emit(cs, info->block[1]);
       radeon_emit(cs, info->block[2]);
    }
 
-   if (program->num_cs_user_data_dwords) {
-      radeon_set_sh_reg_seq(cs, cs_user_data_reg, program->num_cs_user_data_dwords);
-      radeon_emit_array(cs, sctx->cs_user_data, program->num_cs_user_data_dwords);
+   if (sel->info.base.cs.user_data_components_amd) {
+      radeon_set_sh_reg_seq(cs, cs_user_data_reg, sel->info.base.cs.user_data_components_amd);
+      radeon_emit_array(cs, sctx->cs_user_data, sel->info.base.cs.user_data_components_amd);
    }
 }
 
diff --git a/src/gallium/drivers/radeonsi/si_compute.h b/src/gallium/drivers/radeonsi/si_compute.h
index 7cf06271853..305059a6cb6 100644
--- a/src/gallium/drivers/radeonsi/si_compute.h
+++ b/src/gallium/drivers/radeonsi/si_compute.h
@@ -33,15 +33,11 @@ struct si_compute {
    struct si_shader shader;
 
    unsigned ir_type;
-   unsigned local_size;
    unsigned private_size;
    unsigned input_size;
 
    int max_global_buffers;
    struct pipe_resource **global_buffers;
-
-   bool reads_variable_block_size;
-   unsigned num_cs_user_data_dwords;
 };
 
 void si_destroy_compute(struct si_compute *program);



More information about the mesa-commit mailing list