[Mesa-dev] [PATCH 5/6] i965/vs: Remove 'c'/vs_compile from vec4_vs_visitor.

Pohjolainen, Topi topi.pohjolainen at intel.com
Fri Jul 3 01:35:54 PDT 2015


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 <kenneth at 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.pohjolainen at intel.com>
> 
> >     src_reg *vp_temp_regs;
> >     src_reg vp_addr_reg;
> >  
> > -- 
> > 2.4.4
> > 
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list