Reviewed-by: Marta Lofstedt <marta.lofst...@intel.com>
> -----Original Message----- > From: mesa-dev [mailto:mesa-dev-boun...@lists.freedesktop.org] On > Behalf Of Tapani Pälli > Sent: Friday, September 11, 2015 7:44 AM > To: mesa-dev@lists.freedesktop.org > Subject: [Mesa-dev] [PATCH 1/2] mesa: add packed_varyings list to > gl_shader > > This is required to store information about packed varyings, currently these > variables get lost and cannot be retrieved later in sensible way for program > interface queries. List will be utilized by next patch. > > Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> > --- > src/glsl/lower_packed_varyings.cpp | 16 ++++++++++++---- > src/mesa/main/mtypes.h | 1 + > 2 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/src/glsl/lower_packed_varyings.cpp > b/src/glsl/lower_packed_varyings.cpp > index cfe414a..5d66ca9 100644 > --- a/src/glsl/lower_packed_varyings.cpp > +++ b/src/glsl/lower_packed_varyings.cpp > @@ -170,7 +170,7 @@ public: > exec_list *out_instructions, > exec_list *out_variables); > > - void run(exec_list *instructions); > + void run(struct gl_shader *shader); > > private: > void bitwise_assign_pack(ir_rvalue *lhs, ir_rvalue *rhs); @@ -252,9 +252,9 > @@ lower_packed_varyings_visitor::lower_packed_varyings_visitor( > } > > void > -lower_packed_varyings_visitor::run(exec_list *instructions) > +lower_packed_varyings_visitor::run(struct gl_shader *shader) > { > - foreach_in_list(ir_instruction, node, instructions) { > + foreach_in_list(ir_instruction, node, shader->ir) { > ir_variable *var = node->as_variable(); > if (var == NULL) > continue; > @@ -272,6 +272,14 @@ lower_packed_varyings_visitor::run(exec_list > *instructions) > assert(var->data.interpolation == INTERP_QUALIFIER_FLAT || > !var->type->contains_integer()); > > + /* Clone the variable for program resource list before > + * it gets modified and lost. > + */ > + if (!shader->packed_varyings) > + shader->packed_varyings = new (shader) exec_list; > + > + shader->packed_varyings->push_tail(var->clone(shader, NULL)); > + > /* Change the old varying into an ordinary global. */ > assert(var->data.mode != ir_var_temporary); > var->data.mode = ir_var_auto; > @@ -711,7 +719,7 @@ lower_packed_varyings(void *mem_ctx, unsigned > locations_used, > gs_input_vertices, > &new_instructions, > &new_variables); > - visitor.run(instructions); > + visitor.run(shader); > if (mode == ir_var_shader_out) { > if (shader->Stage == MESA_SHADER_GEOMETRY) { > /* For geometry shaders, outputs need to be lowered before each call > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index > fac45aa..89d2026 100644 > --- a/src/mesa/main/mtypes.h > +++ b/src/mesa/main/mtypes.h > @@ -2292,6 +2292,7 @@ struct gl_shader > struct gl_uniform_block *UniformBlocks; > > struct exec_list *ir; > + struct exec_list *packed_varyings; > struct glsl_symbol_table *symbols; > > bool uses_builtin_functions; > -- > 2.4.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev