nir_lower_mem_access_bit_sizes: Move options into a struct

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23173>
This commit is contained in:
Jesse Natalie
2023-06-12 14:26:24 -07:00
committed by Marge Bot
parent 4217353e2d
commit 082eba6165
5 changed files with 37 additions and 43 deletions

View File

@@ -2379,12 +2379,13 @@ agx_compile_shader_nir(nir_shader *nir, struct agx_shader_key *key,
out->tag_write_disable = true;
/* Late sysval lowering creates large loads. Load lowering creates unpacks */
NIR_PASS_V(nir, nir_lower_mem_access_bit_sizes,
nir_var_mem_ssbo | nir_var_mem_constant |
nir_var_mem_task_payload | nir_var_shader_temp |
nir_var_function_temp | nir_var_mem_global |
nir_var_mem_shared,
mem_access_size_align_cb, NULL);
nir_lower_mem_access_bit_sizes_options lower_mem_access_options = {
.modes = nir_var_mem_ssbo | nir_var_mem_constant |
nir_var_mem_task_payload | nir_var_shader_temp |
nir_var_function_temp | nir_var_mem_global | nir_var_mem_shared,
.callback = mem_access_size_align_cb,
};
NIR_PASS_V(nir, nir_lower_mem_access_bit_sizes, &lower_mem_access_options);
NIR_PASS_V(nir, nir_lower_pack);
/* Late blend lowering creates vectors */

View File

@@ -5112,10 +5112,14 @@ typedef nir_mem_access_size_align
bool offset_is_const,
const void *cb_data);
typedef struct {
nir_lower_mem_access_bit_sizes_cb callback;
nir_variable_mode modes;
void *cb_data;
} nir_lower_mem_access_bit_sizes_options;
bool nir_lower_mem_access_bit_sizes(nir_shader *shader,
nir_variable_mode modes,
nir_lower_mem_access_bit_sizes_cb cb,
const void *cb_data);
const nir_lower_mem_access_bit_sizes_options *options);
typedef bool (*nir_should_vectorize_mem_func)(unsigned align_mul,
unsigned align_offset,

View File

@@ -317,12 +317,6 @@ lower_mem_store(nir_builder *b, nir_intrinsic_instr *intrin,
return true;
}
struct lower_mem_access_state {
nir_variable_mode modes;
nir_lower_mem_access_bit_sizes_cb cb;
const void *cb_data;
};
static nir_variable_mode
intrin_to_variable_mode(nir_intrinsic_op intrin)
{
@@ -361,7 +355,7 @@ intrin_to_variable_mode(nir_intrinsic_op intrin)
static bool
lower_mem_access_instr(nir_builder *b, nir_instr *instr, void *_data)
{
struct lower_mem_access_state *state = _data;
const nir_lower_mem_access_bit_sizes_options *state = _data;
if (instr->type != nir_instr_type_intrinsic)
return false;
@@ -380,14 +374,14 @@ lower_mem_access_instr(nir_builder *b, nir_instr *instr, void *_data)
case nir_intrinsic_load_shared:
case nir_intrinsic_load_scratch:
case nir_intrinsic_load_task_payload:
return lower_mem_load(b, intrin, state->cb, state->cb_data);
return lower_mem_load(b, intrin, state->callback, state->cb_data);
case nir_intrinsic_store_global:
case nir_intrinsic_store_ssbo:
case nir_intrinsic_store_shared:
case nir_intrinsic_store_scratch:
case nir_intrinsic_store_task_payload:
return lower_mem_store(b, intrin, state->cb, state->cb_data);
return lower_mem_store(b, intrin, state->callback, state->cb_data);
default:
return false;
@@ -396,18 +390,10 @@ lower_mem_access_instr(nir_builder *b, nir_instr *instr, void *_data)
bool
nir_lower_mem_access_bit_sizes(nir_shader *shader,
nir_variable_mode modes,
nir_lower_mem_access_bit_sizes_cb cb,
const void *cb_data)
const nir_lower_mem_access_bit_sizes_options *options)
{
struct lower_mem_access_state state = {
.modes = modes,
.cb = cb,
.cb_data = cb_data
};
return nir_shader_instructions_pass(shader, lower_mem_access_instr,
nir_metadata_block_index |
nir_metadata_dominance,
(void *)&state);
(void *)options);
}

View File

@@ -1495,15 +1495,17 @@ brw_vectorize_lower_mem_access(nir_shader *nir,
}
}
OPT(nir_lower_mem_access_bit_sizes,
nir_var_mem_ssbo |
nir_var_mem_constant |
nir_var_mem_task_payload |
nir_var_shader_temp |
nir_var_function_temp |
nir_var_mem_global |
nir_var_mem_shared,
get_mem_access_size_align, NULL);
nir_lower_mem_access_bit_sizes_options mem_access_options = {
.modes = nir_var_mem_ssbo |
nir_var_mem_constant |
nir_var_mem_task_payload |
nir_var_shader_temp |
nir_var_function_temp |
nir_var_mem_global |
nir_var_mem_shared,
.callback = get_mem_access_size_align,
};
OPT(nir_lower_mem_access_bit_sizes, &mem_access_options);
while (progress) {
progress = false;

View File

@@ -4726,12 +4726,13 @@ bifrost_preprocess_nir(nir_shader *nir, unsigned gpu_id)
NIR_PASS_V(nir, pan_nir_lower_store_component);
}
NIR_PASS_V(nir, nir_lower_mem_access_bit_sizes,
nir_var_mem_ubo | nir_var_mem_ssbo | nir_var_mem_constant |
nir_var_mem_task_payload | nir_var_shader_temp |
nir_var_function_temp | nir_var_mem_global |
nir_var_mem_shared,
mem_access_size_align_cb, NULL);
nir_lower_mem_access_bit_sizes_options mem_size_options = {
.modes = nir_var_mem_ubo | nir_var_mem_ssbo | nir_var_mem_constant |
nir_var_mem_task_payload | nir_var_shader_temp |
nir_var_function_temp | nir_var_mem_global | nir_var_mem_shared,
.callback = mem_access_size_align_cb,
};
NIR_PASS_V(nir, nir_lower_mem_access_bit_sizes, &mem_size_options);
NIR_PASS_V(nir, nir_lower_ssbo);
NIR_PASS_V(nir, pan_lower_sample_pos);