From 8c9d526aa456681c81bd7e9c35c2e2dc958d1c90 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Wed, 27 Oct 2021 14:44:54 +0200 Subject: [PATCH] radeonsi: treat nir_intrinsic_load_constant as a VMEM operation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is used by variable indexing of constant arrays, to build code like this: s_add_u32 s6, s6, const_data@rel32@lo+4 s_addc_u32 s7, s7, const_data@rel32@hi+12 [...] global_load_dword v4, v4, s[6:7 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5118 Fixes: 8288882965b ("radeonsi: set MEM_ORDERED optimally") Reviewed-by: Marek Olšák Part-of: (cherry picked from commit dc56301f78494bea67f0c57d5aa77fef42bfe455) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_shader_nir.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 995e64c112b..e760d36558c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -643,7 +643,7 @@ "description": "radeonsi: treat nir_intrinsic_load_constant as a VMEM operation", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "8288882965bf1c5f0ca5d9f29c1b759bee2bc718" }, diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index 5c972a368a3..557a5e02fd3 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -243,6 +243,9 @@ static void scan_instruction(const struct nir_shader *nir, struct si_shader_info if (!nir_src_is_const(intr->src[1])) info->uses_vmem_return_type_other = true; break; + case nir_intrinsic_load_constant: + info->uses_vmem_return_type_other = true; + break; case nir_intrinsic_load_barycentric_at_sample: /* This loads sample positions. */ case nir_intrinsic_load_tess_level_outer: /* TES input read from memory */