From: Timothy Arceri Date: Tue, 11 Dec 2018 00:53:54 +0000 (+1100) Subject: nir: add can_replace_varying() helper X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c0aba8b0dc7b3e6cde019a0f2b30bb3a62d666ce;p=mesa.git nir: add can_replace_varying() helper This will be reused by the following patch. Tested-by: Dieter Nützel Reviewed-by: Marek Olšák Reviewed-by: Eric Anholt --- 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) {