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

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Aug 10 21:16:19 UTC 2021


Module: Mesa
Branch: main
Commit: 9b57a81815c54b3eb01b711761bc3856d722995d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9b57a81815c54b3eb01b711761bc3856d722995d

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>

---

 src/compiler/nir/nir_lower_mediump.c | 48 +++++++++++++++++++++++++++++++-----
 1 file changed, 42 insertions(+), 6 deletions(-)

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