[Mesa-dev] [PATCH 08/11] i965/vec4_nir: Use partial SSA form rather than full non-SSA

Jason Ekstrand jason at jlekstrand.net
Mon Sep 14 08:10:57 PDT 2015


On Sep 11, 2015 03:25, "Eduardo Lima Mitev" <elima at igalia.com> wrote:
>
> On 09/10/2015 02:50 AM, Jason Ekstrand wrote:
> > We made this switch in the FS backend some time ago and it seems to
make a
> > number of things a bit easier.
> >
>
> The commit log could be a bit less abstract, like mentioning why this
> change helps the subsequent passes. In any case, if it was only for
> consistency with FS, this change is beneficial.
>
> I also tested it with full dEQP GLES3 suite, apart from piglit, on HWS.
> No regressions.
>
> Reviewed-by: Eduardo Lima Mitev <elima at igalia.com>

How much of this series were you planning to review?  If you don't feel
like you can review the whole thing (I'm reasonably confident in your
ability to), I can find another person to review. I just want to know how
to plan.

--Jason

> > ---
> >  src/mesa/drivers/dri/i965/brw_nir.c        |  2 +-
> >  src/mesa/drivers/dri/i965/brw_vec4.h       |  1 +
> >  src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 21 ++++++++++++++++++---
> >  3 files changed, 20 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/brw_nir.c
b/src/mesa/drivers/dri/i965/brw_nir.c
> > index 8f3edc5..f326b23 100644
> > --- a/src/mesa/drivers/dri/i965/brw_nir.c
> > +++ b/src/mesa/drivers/dri/i965/brw_nir.c
> > @@ -183,7 +183,7 @@ brw_create_nir(struct brw_context *brw,
> >        nir_print_shader(nir, stderr);
> >     }
> >
> > -   nir_convert_from_ssa(nir, is_scalar);
> > +   nir_convert_from_ssa(nir, true);
> >     nir_validate_shader(nir);
> >
> >     if (!is_scalar) {
> > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h
b/src/mesa/drivers/dri/i965/brw_vec4.h
> > index 01c6e84..de74ec9 100644
> > --- a/src/mesa/drivers/dri/i965/brw_vec4.h
> > +++ b/src/mesa/drivers/dri/i965/brw_vec4.h
> > @@ -423,6 +423,7 @@ public:
> >     virtual void nir_emit_alu(nir_alu_instr *instr);
> >     virtual void nir_emit_jump(nir_jump_instr *instr);
> >     virtual void nir_emit_texture(nir_tex_instr *instr);
> > +   virtual void nir_emit_undef(nir_ssa_undef_instr *instr);
> >
> >     dst_reg get_nir_dest(nir_dest dest, enum brw_reg_type type);
> >     dst_reg get_nir_dest(nir_dest dest, nir_alu_type type);
> > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
> > index 751ec73..87a7941 100644
> > --- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
> > +++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
> > @@ -367,6 +367,10 @@ vec4_visitor::nir_emit_instr(nir_instr *instr)
> >        nir_emit_texture(nir_instr_as_tex(instr));
> >        break;
> >
> > +   case nir_instr_type_ssa_undef:
> > +      nir_emit_undef(nir_instr_as_ssa_undef(instr));
> > +      break;
> > +
> >     default:
> >        fprintf(stderr, "VS instruction not yet implemented by
NIR->vec4\n");
> >        break;
> > @@ -393,9 +397,14 @@ dst_reg_for_nir_reg(vec4_visitor *v, nir_register
*nir_reg,
> >  dst_reg
> >  vec4_visitor::get_nir_dest(nir_dest dest)
> >  {
> > -   assert(!dest.is_ssa);
> > -   return dst_reg_for_nir_reg(this, dest.reg.reg, dest.reg.base_offset,
> > -                              dest.reg.indirect);
> > +   if (dest.is_ssa) {
> > +      dst_reg dst = dst_reg(GRF, alloc.allocate(1));
> > +      nir_ssa_values[dest.ssa.index] = dst;
> > +      return dst;
> > +   } else {
> > +      return dst_reg_for_nir_reg(this, dest.reg.reg,
dest.reg.base_offset,
> > +                                 dest.reg.indirect);
> > +   }
> >  }
> >
> >  dst_reg
> > @@ -1528,4 +1537,10 @@ vec4_visitor::nir_emit_texture(nir_tex_instr
*instr)
> >                  mcs, is_cube_array, sampler, sampler_reg);
> >  }
> >
> > +void
> > +vec4_visitor::nir_emit_undef(nir_ssa_undef_instr *instr)
> > +{
> > +   nir_ssa_values[instr->def.index] = dst_reg(GRF, alloc.allocate(1));
> > +}
> > +
> >  }
> >
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150914/4e7ba0cd/attachment-0001.html>


More information about the mesa-dev mailing list