Mesa (staging/21.1): nir/lower_mediump: Fix metadata in all passes
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Aug 10 21:42:10 UTC 2021
Module: Mesa
Branch: staging/21.1
Commit: 123710b2309465724d302e6fc8969f8243c83c8b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=123710b2309465724d302e6fc8969f8243c83c8b
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 6889147bef4..0abd1a9dd45 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -40,7 +40,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