On Fri, Jul 03, 2015 at 11:29:33AM +0300, Pohjolainen, Topi wrote: > On Wed, Jul 01, 2015 at 03:03:35PM -0700, Kenneth Graunke wrote: > > At this point, the brw_vs_compile structure only contains the key and > > gl_vertex_program pointer. We may as well pass and store them directly; > > it's simpler and more convenient (key-> instead of vs_compile->key...). > > > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > > --- > > src/mesa/drivers/dri/i965/brw_vec4.cpp | 4 ++-- > > src/mesa/drivers/dri/i965/brw_vec4_vp.cpp | 9 +++------ > > src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp | 11 ++++++----- > > src/mesa/drivers/dri/i965/brw_vs.h | 6 ++++-- > > 4 files changed, 15 insertions(+), 15 deletions(-) > > > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > > index e5db268..42d014c 100644 > > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > > @@ -1953,8 +1953,8 @@ brw_vs_emit(struct brw_context *brw, > > if (!assembly) { > > prog_data->base.dispatch_mode = DISPATCH_MODE_4X2_DUAL_OBJECT; > > > > - vec4_vs_visitor v(brw->intelScreen->compiler, brw, > > - c, prog_data, prog, mem_ctx, st_index, > > + vec4_vs_visitor v(brw->intelScreen->compiler, brw, &c->key, > > prog_data, > > + &c->vp->program, prog, mem_ctx, st_index, > > !_mesa_is_gles3(&brw->ctx)); > > if (!v.run(brw_select_clip_planes(&brw->ctx))) { > > if (prog) { > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp > > b/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp > > index dcbd240..d1a72d7 100644 > > --- a/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp > > @@ -394,8 +394,7 @@ vec4_vs_visitor::emit_program_code() > > * pull constants. Do that now. > > */ > > if (this->need_all_constants_in_pull_buffer) { > > - const struct gl_program_parameter_list *params = > > - vs_compile->vp->program.Base.Parameters; > > + const struct gl_program_parameter_list *params = vp->Base.Parameters; > > unsigned i; > > for (i = 0; i < params->NumParameters * 4; i++) { > > stage_prog_data->pull_param[i] = > > @@ -415,8 +414,7 @@ vec4_vs_visitor::setup_vp_regs() > > vp_temp_regs[i] = src_reg(this, glsl_type::vec4_type); > > > > /* PROGRAM_STATE_VAR etc. */ > > - struct gl_program_parameter_list *plist = > > - vs_compile->vp->program.Base.Parameters; > > + struct gl_program_parameter_list *plist = vp->Base.Parameters; > > for (unsigned p = 0; p < plist->NumParameters; p++) { > > unsigned components = plist->Parameters[p].Size; > > > > @@ -486,8 +484,7 @@ vec4_vs_visitor::get_vp_dst_reg(const prog_dst_register > > &dst) > > src_reg > > vec4_vs_visitor::get_vp_src_reg(const prog_src_register &src) > > { > > - struct gl_program_parameter_list *plist = > > - vs_compile->vp->program.Base.Parameters; > > + struct gl_program_parameter_list *plist = vp->Base.Parameters; > > > > src_reg result; > > > > 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 35b601a..b7ec8b9 100644 > > --- a/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp > > @@ -36,7 +36,7 @@ vec4_vs_visitor::emit_prolog() > > > > for (int i = 0; i < VERT_ATTRIB_MAX; i++) { > > if (vs_prog_data->inputs_read & BITFIELD64_BIT(i)) { > > - uint8_t wa_flags = vs_compile->key.gl_attrib_wa_flags[i]; > > + uint8_t wa_flags = key->gl_attrib_wa_flags[i]; > > dst_reg reg(ATTR, i); > > dst_reg reg_d = reg; > > reg_d.type = BRW_REGISTER_TYPE_D; > > @@ -213,20 +213,21 @@ vec4_vs_visitor::emit_thread_end() > > > > vec4_vs_visitor::vec4_vs_visitor(const struct brw_compiler *compiler, > > void *log_data, > > - struct brw_vs_compile *vs_compile, > > + const struct brw_vs_prog_key *key, > > struct brw_vs_prog_data *vs_prog_data, > > + struct gl_vertex_program *vp, > > struct gl_shader_program *prog, > > void *mem_ctx, > > int shader_time_index, > > bool use_legacy_snorm_formula) > > : vec4_visitor(compiler, log_data, > > - &vs_compile->vp->program.Base, > > - &vs_compile->key.base, &vs_prog_data->base, prog, > > + &vp->Base, &key->base, &vs_prog_data->base, prog, > > MESA_SHADER_VERTEX, > > mem_ctx, false /* no_spills */, > > shader_time_index), > > - vs_compile(vs_compile), > > + key(key), > > vs_prog_data(vs_prog_data), > > + vp(vp), > > use_legacy_snorm_formula(use_legacy_snorm_formula) > > { > > } > > diff --git a/src/mesa/drivers/dri/i965/brw_vs.h > > b/src/mesa/drivers/dri/i965/brw_vs.h > > index 3a131b0..0481c44 100644 > > --- a/src/mesa/drivers/dri/i965/brw_vs.h > > +++ b/src/mesa/drivers/dri/i965/brw_vs.h > > @@ -91,8 +91,9 @@ class vec4_vs_visitor : public vec4_visitor > > public: > > vec4_vs_visitor(const struct brw_compiler *compiler, > > void *log_data, > > - struct brw_vs_compile *vs_compile, > > + const struct brw_vs_prog_key *key, > > struct brw_vs_prog_data *vs_prog_data, > > + struct gl_vertex_program *vp, > > struct gl_shader_program *prog, > > void *mem_ctx, > > int shader_time_index, > > @@ -113,8 +114,9 @@ private: > > dst_reg get_vp_dst_reg(const prog_dst_register &dst); > > src_reg get_vp_src_reg(const prog_src_register &src); > > > > - struct brw_vs_compile * const vs_compile; > > + const struct brw_vs_prog_key *const key; > > struct brw_vs_prog_data * const vs_prog_data; > > + struct gl_vertex_program *vp; > > I guess you dropped the const qualifier by accident telling that the pointer > value is constant. Furthermore, I think we can make the pointer itself to > represent read-only data - in the backend we don't alter it anymore. > > const struct gl_vertex_program * const vp;
My mistake about the latter part, we do write the data behind the pointer. So we can only declare the pointer value itself to be constant. struct gl_vertex_program * const vp; > > > With that: > > Reviewed-by: Topi Pohjolainen <topi.pohjolai...@intel.com> > > > src_reg *vp_temp_regs; > > src_reg vp_addr_reg; > > > > -- > > 2.4.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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev