summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>2023-05-15 08:57:44 -0400
committerMarge Bot <emma+marge@anholt.net>2023-05-16 22:36:21 +0000
commitd4b2a7a26e1879987f3e93714a71a11c23b8cd45 (patch)
tree7f5f2fcf2e46c9eca925a24c2a0b96c4031f50fd
parent65469d6b233585da59733456f44f601a97449e39 (diff)
downloadmesa-d4b2a7a26e1879987f3e93714a71a11c23b8cd45.tar.gz
pan/mdg: Lower legacy atomics earlier
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Emma Anholt <emma@anholt.net> Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23036>
-rw-r--r--src/panfrost/midgard/midgard_compile.c3
-rw-r--r--src/panfrost/midgard/midgard_nir_lower_image_bitsize.c12
2 files changed, 4 insertions, 11 deletions
diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c
index 6afd78c19ce..80795a1de98 100644
--- a/src/panfrost/midgard/midgard_compile.c
+++ b/src/panfrost/midgard/midgard_compile.c
@@ -395,6 +395,8 @@ midgard_preprocess_nir(nir_shader *nir, unsigned gpu_id)
if (quirks & MIDGARD_BROKEN_LOD)
NIR_PASS_V(nir, midgard_nir_lod_errata);
+ NIR_PASS_V(nir, nir_lower_legacy_atomics);
+
/* Midgard image ops coordinates are 16-bit instead of 32-bit */
NIR_PASS_V(nir, midgard_nir_lower_image_bitsize);
@@ -463,7 +465,6 @@ optimise_nir(nir_shader *nir, unsigned quirks, bool is_blend)
NIR_PASS(progress, nir, nir_copy_prop);
NIR_PASS(progress, nir, nir_opt_dce);
- NIR_PASS(progress, nir, nir_lower_legacy_atomics);
/* Backend scheduler is purely local, so do some global optimizations
* to reduce register pressure. */
diff --git a/src/panfrost/midgard/midgard_nir_lower_image_bitsize.c b/src/panfrost/midgard/midgard_nir_lower_image_bitsize.c
index 69c18b9be0c..89f611b44cd 100644
--- a/src/panfrost/midgard/midgard_nir_lower_image_bitsize.c
+++ b/src/panfrost/midgard/midgard_nir_lower_image_bitsize.c
@@ -39,16 +39,8 @@ nir_lower_image_bitsize(nir_builder *b, nir_instr *instr, UNUSED void *data)
switch (intr->intrinsic) {
case nir_intrinsic_image_load:
case nir_intrinsic_image_store:
- case nir_intrinsic_image_atomic_add:
- case nir_intrinsic_image_atomic_and:
- case nir_intrinsic_image_atomic_comp_swap:
- case nir_intrinsic_image_atomic_exchange:
- case nir_intrinsic_image_atomic_imax:
- case nir_intrinsic_image_atomic_imin:
- case nir_intrinsic_image_atomic_or:
- case nir_intrinsic_image_atomic_umax:
- case nir_intrinsic_image_atomic_umin:
- case nir_intrinsic_image_atomic_xor:
+ case nir_intrinsic_image_atomic:
+ case nir_intrinsic_image_atomic_swap:
break;
default:
return false;