[Mesa-dev] [PATCH 08/11] i965/vec4_nir: Use partial SSA form rather than full non-SSA
Eduardo Lima Mitev
elima at igalia.com
Mon Sep 14 13:21:51 PDT 2015
On 09/14/2015 05:10 PM, Jason Ekstrand wrote:
>
> On Sep 11, 2015 03:25, "Eduardo Lima Mitev" <elima at igalia.com
> <mailto: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
> <mailto: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.
>
Hi, I was and still am planning to review all the series. I just had a
personal trip last weekend and had to take Monday off. I will complete
the review tomorrow morning.
Since these are among my first reviews, I'm being extra careful so it
takes me some more time than average I guess :).
cheers,
Eduardo
> --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 <mailto:mesa-dev at lists.freedesktop.org>
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list