radv: fix progress reporting in lower_rt_derefs

Only create nir_load_rt_arg_scratch_offset_amd if needed.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35069>
This commit is contained in:
Rhys Perry
2025-05-16 17:04:14 +01:00
committed by Marge Bot
parent 12ee2b0fd4
commit 591b498e1f

View File

@@ -132,9 +132,8 @@ lower_rt_derefs(nir_shader *shader)
bool progress = false;
nir_builder b = nir_builder_at(nir_before_impl(impl));
nir_def *arg_offset = nir_load_rt_arg_scratch_offset_amd(&b);
nir_builder b;
nir_def *arg_offset = NULL;
nir_foreach_block (block, impl) {
nir_foreach_instr_safe (instr, block) {
@@ -149,6 +148,11 @@ lower_rt_derefs(nir_shader *shader)
progress = true;
if (deref->deref_type == nir_deref_type_var) {
if (!arg_offset) {
b = nir_builder_at(nir_before_impl(impl));
arg_offset = nir_load_rt_arg_scratch_offset_amd(&b);
}
b.cursor = nir_before_instr(&deref->instr);
nir_deref_instr *replacement =
nir_build_deref_cast(&b, arg_offset, nir_var_function_temp, deref->var->type, 0);