pan/mdg: Lower legacy atomics earlier
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Mon, 15 May 2023 12:57:44 +0000 (08:57 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 16 May 2023 22:36:21 +0000 (22:36 +0000)
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>

src/panfrost/midgard/midgard_compile.c
src/panfrost/midgard/midgard_nir_lower_image_bitsize.c

index 6afd78c..80795a1 100644 (file)
@@ -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. */
index 69c18b9..89f611b 100644 (file)
@@ -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;