From c0aba8b0dc7b3e6cde019a0f2b30bb3a62d666ce Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 11 Dec 2018 11:53:54 +1100 Subject: [PATCH] nir: add can_replace_varying() helper MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This will be reused by the following patch. Tested-by: Dieter Nützel Reviewed-by: Marek Olšák Reviewed-by: Eric Anholt --- src/compiler/nir/nir_linking_helpers.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_linking_helpers.c b/src/compiler/nir/nir_linking_helpers.c index 582d6b90b94..b6eaebcb6a4 100644 --- a/src/compiler/nir/nir_linking_helpers.c +++ b/src/compiler/nir/nir_linking_helpers.c @@ -561,8 +561,7 @@ nir_link_xfb_varyings(nir_shader *producer, nir_shader *consumer) } static bool -try_replace_constant_input(nir_shader *shader, - nir_intrinsic_instr *store_intr) +can_replace_varying(nir_intrinsic_instr *store_intr) { nir_deref_instr *out_deref = nir_src_as_deref(store_intr->src[0]); if (out_deref->mode != nir_var_shader_out) @@ -589,11 +588,24 @@ try_replace_constant_input(nir_shader *shader, out_var->data.location - VARYING_SLOT_VAR0 >= MAX_VARYING) return false; + return true; +} + +static bool +try_replace_constant_input(nir_shader *shader, + nir_intrinsic_instr *store_intr) +{ + if (!can_replace_varying(store_intr)) + return false; + nir_function_impl *impl = nir_shader_get_entrypoint(shader); nir_builder b; nir_builder_init(&b, impl); + nir_variable *out_var = + nir_deref_instr_get_variable(nir_src_as_deref(store_intr->src[0])); + bool progress = false; nir_foreach_block(block, impl) { nir_foreach_instr(instr, block) { -- 2.30.2