Whoop subject should be:

nir: add always_active_io to nir variable

On 13/09/17 09:37, Timothy Arceri wrote:
Will be used in nir link pass to decided if we can remove a varying
or not.
---
  src/compiler/glsl/glsl_to_nir.cpp |  1 +
  src/compiler/nir/nir.h            | 10 ++++++++++
  2 files changed, 11 insertions(+)

diff --git a/src/compiler/glsl/glsl_to_nir.cpp 
b/src/compiler/glsl/glsl_to_nir.cpp
index bb2ba17b220..ea75e3c8e99 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -326,6 +326,7 @@ nir_visitor::visit(ir_variable *ir)
     var->type = ir->type;
     var->name = ralloc_strdup(var, ir->name);
+ var->data.always_active_io = ir->data.always_active_io;
     var->data.read_only = ir->data.read_only;
     var->data.centroid = ir->data.centroid;
     var->data.sample = ir->data.sample;
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 8330e6d7ce7..fab2110f619 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -192,6 +192,16 @@ typedef struct nir_variable {
        unsigned invariant:1;
/**
+       * When separate shader programs are enabled, only input/outputs between
+       * the stages of a multi-stage separate program can be safely removed
+       * from the shader interface. Other input/outputs must remains active.
+       *
+       * This is also used to make sure xfb varyings that are unused by the
+       * fragment shader are not removed.
+       */
+      unsigned always_active_io:1;
+
+      /**
         * Interpolation mode for shader inputs / outputs
         *
         * \sa glsl_interp_mode

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to