panfrost: Move lower_res_indices before postproc

Signed-off-by: Lorenzo Rossi <lorenzo.rossi@collabora.com>
Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40844>
This commit is contained in:
Lorenzo Rossi 2026-04-06 12:00:07 +02:00 committed by Marge Bot
parent eafc822dbd
commit d096a8e962
2 changed files with 11 additions and 6 deletions

View file

@ -91,11 +91,13 @@ static bool
lower_ssbo_intrin(nir_builder *b, nir_intrinsic_instr *intrin)
{
b->cursor = nir_before_instr(&intrin->instr);
bool is_store = intrin->intrinsic == nir_intrinsic_store_ssbo;
nir_src *handle = &intrin->src[is_store ? 1 : 0];
nir_def *new_offset = nir_ior_imm(b, intrin->src[0].ssa,
nir_def *new_handle = nir_ior_imm(b, handle->ssa,
pan_res_handle(PAN_TABLE_SSBO, 0));
nir_src_rewrite(&intrin->src[0], new_offset);
nir_src_rewrite(handle, new_handle);
return true;
}
@ -107,7 +109,8 @@ lower_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin,
switch (intrin->intrinsic) {
case nir_intrinsic_image_load:
case nir_intrinsic_image_store:
case nir_intrinsic_image_texel_address:
case nir_intrinsic_image_atomic:
case nir_intrinsic_image_atomic_swap:
return lower_image_intrin(b, intrin);
case nir_intrinsic_load_input:
case nir_intrinsic_load_interpolated_input:
@ -115,7 +118,9 @@ lower_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin,
case nir_intrinsic_load_ubo:
return lower_load_ubo_intrin(b, intrin);
case nir_intrinsic_load_ssbo:
case nir_intrinsic_load_ssbo_address:
case nir_intrinsic_store_ssbo:
case nir_intrinsic_ssbo_atomic:
case nir_intrinsic_ssbo_atomic_swap:
return lower_ssbo_intrin(b, intrin);
default:
return false;

View file

@ -184,10 +184,10 @@ panfrost_shader_compile(struct panfrost_screen *screen, const nir_shader *ir,
panfrost_device_gpu_prod_id(dev) < 0x700);
}
pan_postprocess_nir(s, panfrost_device_gpu_id(dev));
/* Lower resource indices */
NIR_PASS(_, s, panfrost_nir_lower_res_indices, &inputs);
pan_postprocess_nir(s, panfrost_device_gpu_id(dev));
pan_nir_lower_texture_late(s, inputs.gpu_id);
if (s->info.stage == MESA_SHADER_VERTEX) {