summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>2021-10-27 14:44:54 +0200
committerPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>2021-11-04 09:38:20 +0100
commitdc56301f78494bea67f0c57d5aa77fef42bfe455 (patch)
treea7ee3de1329ad0e40b4a5609acd6285aeb716157
parentaf8fa2644e1ed225d1ebf6ee532062f7c36e6c7d (diff)
radeonsi: treat nir_intrinsic_load_constant as a VMEM operation
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 <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13550>
-rw-r--r--src/gallium/drivers/radeonsi/si_shader_nir.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
index ed07fa7e0a7..3d968dcda8a 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -245,6 +245,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 */