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