[Mesa-dev] [PATCH v2 3/5] nir: add can_replace_varying() helper

Timothy Arceri tarceri at itsqueeze.com
Wed Dec 19 10:03:34 UTC 2018


This will be reused by the following patch.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
---
 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 4f25c09d00..f3125a9880 100644
--- a/src/compiler/nir/nir_linking_helpers.c
+++ b/src/compiler/nir/nir_linking_helpers.c
@@ -700,8 +700,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)
@@ -728,11 +727,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.19.2



More information about the mesa-dev mailing list