Mesa (staging/21.2): nir/lower_mediump: Fix metadata in all passes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Aug 12 17:09:47 UTC 2021


Module: Mesa
Branch: staging/21.2
Commit: 0a1f12a488688ceffd50ff8b3dd0a221e4abf044
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0a1f12a488688ceffd50ff8b3dd0a221e4abf044

Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date:   Tue Jul  6 12:55:23 2021 -0400

nir/lower_mediump: Fix metadata in all passes

Fixes: fb29cef8dda ("nir: add many passes that lower and optimize 16-bit input/outputs and samplers")
Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11732>
(cherry picked from commit 9b57a81815c54b3eb01b711761bc3856d722995d)

---

 .pick_status.json                    |  2 +-
 src/compiler/nir/nir_lower_mediump.c | 48 +++++++++++++++++++++++++++++++-----
 2 files changed, 43 insertions(+), 7 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index b97ffb384d4..1df4c774269 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -283,7 +283,7 @@
         "description": "nir/lower_mediump: Fix metadata in all passes",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "fb29cef8ddabdd05aeddc5220017bb28a83bb19c"
     },
diff --git a/src/compiler/nir/nir_lower_mediump.c b/src/compiler/nir/nir_lower_mediump.c
index f4b10806358..4df1cce2472 100644
--- a/src/compiler/nir/nir_lower_mediump.c
+++ b/src/compiler/nir/nir_lower_mediump.c
@@ -121,7 +121,13 @@ nir_recompute_io_bases(nir_function_impl *impl, nir_variable_mode modes)
       }
    }
 
-   nir_metadata_preserve(impl, nir_metadata_all);
+   if (changed) {
+      nir_metadata_preserve(impl, nir_metadata_dominance |
+                                  nir_metadata_block_index);
+   } else {
+      nir_metadata_preserve(impl, nir_metadata_all);
+   }
+
    return changed;
 }
 
@@ -227,7 +233,13 @@ nir_lower_mediump_io(nir_shader *nir, nir_variable_mode modes,
    if (changed && use_16bit_slots)
       nir_recompute_io_bases(impl, modes);
 
-   nir_metadata_preserve(impl, nir_metadata_all);
+   if (changed) {
+      nir_metadata_preserve(impl, nir_metadata_dominance |
+                                  nir_metadata_block_index);
+   } else {
+      nir_metadata_preserve(impl, nir_metadata_all);
+   }
+
    return changed;
 }
 
@@ -286,7 +298,13 @@ nir_force_mediump_io(nir_shader *nir, nir_variable_mode modes,
       }
    }
 
-   nir_metadata_preserve(impl, nir_metadata_all);
+   if (changed) {
+      nir_metadata_preserve(impl, nir_metadata_dominance |
+                                  nir_metadata_block_index);
+   } else {
+      nir_metadata_preserve(impl, nir_metadata_all);
+   }
+
    return changed;
 }
 
@@ -326,7 +344,13 @@ nir_unpack_16bit_varying_slots(nir_shader *nir, nir_variable_mode modes)
    if (changed)
       nir_recompute_io_bases(impl, modes);
 
-   nir_metadata_preserve(impl, nir_metadata_all);
+   if (changed) {
+      nir_metadata_preserve(impl, nir_metadata_dominance |
+                                  nir_metadata_block_index);
+   } else {
+      nir_metadata_preserve(impl, nir_metadata_all);
+   }
+
    return changed;
 }
 
@@ -515,7 +539,13 @@ nir_fold_16bit_sampler_conversions(nir_shader *nir,
       }
    }
 
-   nir_metadata_preserve(impl, nir_metadata_all);
+   if (changed) {
+      nir_metadata_preserve(impl, nir_metadata_dominance |
+                                  nir_metadata_block_index);
+   } else {
+      nir_metadata_preserve(impl, nir_metadata_all);
+   }
+
    return changed;
 }
 
@@ -606,6 +636,12 @@ nir_legalize_16bit_sampler_srcs(nir_shader *nir,
       }
    }
 
-   nir_metadata_preserve(impl, nir_metadata_all);
+   if (changed) {
+      nir_metadata_preserve(impl, nir_metadata_dominance |
+                                  nir_metadata_block_index);
+   } else {
+      nir_metadata_preserve(impl, nir_metadata_all);
+   }
+
    return changed;
 }



More information about the mesa-commit mailing list