From 123710b2309465724d302e6fc8969f8243c83c8b Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 6 Jul 2021 12:55:23 -0400 Subject: [PATCH] nir/lower_mediump: Fix metadata in all passes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: fb29cef8dda ("nir: add many passes that lower and optimize 16-bit input/outputs and samplers") Signed-off-by: Alyssa Rosenzweig Reviewed-by: Marek Olšák Part-of: (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; }