diff options
author | Timothy Arceri <[email protected]> | 2018-12-11 11:53:54 +1100 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2019-01-02 12:19:17 +1100 |
commit | c0aba8b0dc7b3e6cde019a0f2b30bb3a62d666ce (patch) | |
tree | b5b9ee34e6a2d330e18f08c9df69ece3ff69e358 /src/compiler/nir | |
parent | 50de3f80a807c657b317173c437f217bc7bd74da (diff) |
nir: add can_replace_varying() helper
This will be reused by the following patch.
Tested-by: Dieter Nützel <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/compiler/nir')
-rw-r--r-- | src/compiler/nir/nir_linking_helpers.c | 16 |
1 files 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) { |