The negative form was used to keep interstage as the default value Note: I put the ir_set_not_interstage_io function in opt_dead_code because it will be used to disable deadcode optimization. Feel free to point me a better place if it exists.
Signed-off-by: Gregory Hainaut <gregory.hain...@gmail.com> --- src/glsl/ir.h | 6 ++++++ src/glsl/ir_optimization.h | 2 ++ src/glsl/opt_dead_code.cpp | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/src/glsl/ir.h b/src/glsl/ir.h index f9ddf74..b4c4ace 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -649,6 +649,12 @@ public: unsigned assigned:1; /** + * When separate shader programs are enabled, only interstage + * variables can be safely removed of the shader interface. + */ + unsigned not_interstage:1; + + /** * Enum indicating how the variable was declared. See * ir_var_declaration_type. * diff --git a/src/glsl/ir_optimization.h b/src/glsl/ir_optimization.h index 265b223..bdd6ccc 100644 --- a/src/glsl/ir_optimization.h +++ b/src/glsl/ir_optimization.h @@ -72,6 +72,8 @@ enum lower_packing_builtins_op { LOWER_PACK_USE_BFE = 0x2000, }; +void ir_set_not_interstage_io(exec_list *instructions, ir_variable_mode mode); + bool do_common_optimization(exec_list *ir, bool linked, bool uniform_locations_assigned, const struct gl_shader_compiler_options *options, diff --git a/src/glsl/opt_dead_code.cpp b/src/glsl/opt_dead_code.cpp index e4bf874..d70c855 100644 --- a/src/glsl/opt_dead_code.cpp +++ b/src/glsl/opt_dead_code.cpp @@ -35,6 +35,25 @@ static bool debug = false; +void +ir_set_not_interstage_io(exec_list *instructions, ir_variable_mode mode) +{ + ir_variable_refcount_visitor v; + + assert(mode == ir_var_shader_in || mode == ir_var_shader_out); + + v.run(instructions); + + struct hash_entry *e; + hash_table_foreach(v.ht, e) { + ir_variable_refcount_entry *entry = (ir_variable_refcount_entry *)e->data; + + if (entry->var->data.mode == mode) + entry->var->data.not_interstage = 1; + } +} + + /** * Do a dead code pass over instructions and everything that instructions * references. -- 2.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev