On Fri, Jun 26, 2015 at 1:06 AM, Eduardo Lima Mitev <el...@igalia.com> wrote: > From: Alejandro Piñeiro <apinhe...@igalia.com> > > The new virtual method is more flexible, it has a signature: > > dst_reg *make_reg_for_system_value(int location, const glsl_type *type); > > so the current method will be chained through this one.
I just grepped the code. This function is used exactly once in the current fs_visitor code. Let's just replace that use with a use of the new one and avoid the overload. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89580 Also, let's not reference the same "make a vec4 visitor for NIR" bug in every patch. It's not really a bugfix. --Jason > --- > src/mesa/drivers/dri/i965/brw_vec4.cpp | 6 ++++++ > src/mesa/drivers/dri/i965/brw_vec4.h | 5 ++++- > src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp | 7 ++++--- > src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h | 3 ++- > src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp | 5 +++-- > src/mesa/drivers/dri/i965/brw_vs.h | 3 ++- > 6 files changed, 21 insertions(+), 8 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > index dcffa04..ff1ef75 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > @@ -1684,6 +1684,12 @@ vec4_visitor::emit_shader_time_end() > emit(BRW_OPCODE_ENDIF); > } > > +dst_reg * > +vec4_visitor::make_reg_for_system_value(ir_variable *ir) > +{ > + return make_reg_for_system_value(ir->data.location, ir->type); > +} > + > void > vec4_visitor::emit_shader_time_write(int shader_time_subindex, src_reg value) > { > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h > b/src/mesa/drivers/dri/i965/brw_vec4.h > index 6535f19..2a53d9a 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.h > +++ b/src/mesa/drivers/dri/i965/brw_vec4.h > @@ -411,6 +411,9 @@ public: > virtual void nir_emit_jump(nir_jump_instr *instr); > virtual void nir_emit_texture(nir_tex_instr *instr); > > + virtual dst_reg *make_reg_for_system_value(int location, > + const glsl_type *type) = 0; > + > src_reg *nir_inputs; > int *nir_outputs; > brw_reg_type *nir_output_types; > @@ -423,7 +426,7 @@ protected: > bool interleaved); > void setup_payload_interference(struct ra_graph *g, int > first_payload_node, > int reg_node_count); > - virtual dst_reg *make_reg_for_system_value(ir_variable *ir) = 0; > + virtual dst_reg *make_reg_for_system_value(ir_variable *ir); > virtual void assign_binding_table_offsets(); > virtual void setup_payload() = 0; > virtual void emit_prolog() = 0; > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp > index 69bcf5a..91bc849 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp > @@ -49,11 +49,12 @@ vec4_gs_visitor::vec4_gs_visitor(const struct > brw_compiler *compiler, > > > dst_reg * > -vec4_gs_visitor::make_reg_for_system_value(ir_variable *ir) > +vec4_gs_visitor::make_reg_for_system_value(int location, > + const glsl_type *type) > { > - dst_reg *reg = new(mem_ctx) dst_reg(this, ir->type); > + dst_reg *reg = new(mem_ctx) dst_reg(this, type); > > - switch (ir->data.location) { > + switch (location) { > case SYSTEM_VALUE_INVOCATION_ID: > this->current_annotation = "initialize gl_InvocationID"; > emit(GS_OPCODE_GET_INSTANCE_ID, *reg); > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h > b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h > index e693c56..0f1c705 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h > +++ b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h > @@ -76,7 +76,8 @@ public: > int shader_time_index); > > protected: > - virtual dst_reg *make_reg_for_system_value(ir_variable *ir); > + virtual dst_reg *make_reg_for_system_value(int location, > + const glsl_type *type); > virtual void setup_payload(); > virtual void emit_prolog(); > virtual void emit_program_code(); > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp > index f93062b..1fe23ba 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp > @@ -143,7 +143,8 @@ vec4_vs_visitor::emit_prolog() > > > dst_reg * > -vec4_vs_visitor::make_reg_for_system_value(ir_variable *ir) > +vec4_vs_visitor::make_reg_for_system_value(int location, > + const glsl_type *type) > { > /* VertexID is stored by the VF as the last vertex element, but > * we don't represent it with a flag in inputs_read, so we call > @@ -151,7 +152,7 @@ vec4_vs_visitor::make_reg_for_system_value(ir_variable > *ir) > */ > dst_reg *reg = new(mem_ctx) dst_reg(ATTR, VERT_ATTRIB_MAX); > > - switch (ir->data.location) { > + switch (location) { > case SYSTEM_VALUE_BASE_VERTEX: > reg->writemask = WRITEMASK_X; > vs_prog_data->uses_vertexid = true; > diff --git a/src/mesa/drivers/dri/i965/brw_vs.h > b/src/mesa/drivers/dri/i965/brw_vs.h > index 61f9b00..873ffb7 100644 > --- a/src/mesa/drivers/dri/i965/brw_vs.h > +++ b/src/mesa/drivers/dri/i965/brw_vs.h > @@ -99,7 +99,8 @@ public: > bool use_legacy_snorm_formula); > > protected: > - virtual dst_reg *make_reg_for_system_value(ir_variable *ir); > + virtual dst_reg *make_reg_for_system_value(int location, > + const glsl_type *type); > virtual void setup_payload(); > virtual void emit_prolog(); > virtual void emit_program_code(); > -- > 2.1.4 > > _______________________________________________ > 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