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