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