On 30/06/15 01:27, Jason Ekstrand wrote: > 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. Do you mean current vec4_visitor code? Because I only see that function used here: https://github.com/Igalia/mesa/blob/nir-vec4-v1/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp#L1094
> Let's just replace that use with a use of > the new one and avoid the overload. Ok. > >> 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. Ok. > --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 -- Alejandro Piñeiro (apinhe...@igalia.com) _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev