radeonsi: remove redundant variables from struct si_compute
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6782>
diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c
index f7f6c15..40a945c 100644
--- a/src/gallium/drivers/radeonsi/si_compute.c
+++ b/src/gallium/drivers/radeonsi/si_compute.c
@@ -127,18 +127,14 @@
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 @@
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 @@
* 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 @@
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 @@
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 @@
}
}
- 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 7cf0627..305059a 100644
--- a/src/gallium/drivers/radeonsi/si_compute.h
+++ b/src/gallium/drivers/radeonsi/si_compute.h
@@ -33,15 +33,11 @@
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);