On Monday 19 December 2016, Bas Nieuwenhuizen wrote:
> Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
> 
> Does dual source blending work now with this patch? And do you need me
> to commit it?

It does for me. And no, I believe I have commit access.

Thanks for the review!

> - Bas
> 
> 
> On Fri, Dec 16, 2016 at 2:25 AM, Fredrik Höglund <fred...@kde.org> wrote:
> > Add the index to the location when assigning driver locations for
> > output variables.
> >
> > Otherwise two fragment shader outputs declared as:
> >
> >    layout (location = 0, index = 0) out vec4 output1;
> >    layout (location = 0, index = 1) out vec4 output2;
> >
> > will end up aliasing one another.
> >
> > Note that this patch will make the second output variable in the above
> > example alias a possible third output variable with location = 1 and
> > index = 0. But this shouldn't be a problem in practice since only one
> > color attachment is supported when dual-source blending is used.
> > ---
> >  src/amd/common/ac_nir_to_llvm.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/amd/common/ac_nir_to_llvm.c 
> > b/src/amd/common/ac_nir_to_llvm.c
> > index d66fefb..90ee917 100644
> > --- a/src/amd/common/ac_nir_to_llvm.c
> > +++ b/src/amd/common/ac_nir_to_llvm.c
> > @@ -4125,7 +4125,7 @@ static void
> >  handle_shader_output_decl(struct nir_to_llvm_context *ctx,
> >                           struct nir_variable *variable)
> >  {
> > -       int idx = variable->data.location;
> > +       int idx = variable->data.location + variable->data.index;
> >         unsigned attrib_count = glsl_count_attribute_slots(variable->type, 
> > false);
> >
> >         variable->data.driver_location = idx * 4;
> > @@ -4155,7 +4155,7 @@ handle_shader_output_decl(struct nir_to_llvm_context 
> > *ctx,
> >                                        si_build_alloca_undef(ctx, ctx->f32, 
> > "");
> >                 }
> >         }
> > -       ctx->output_mask |= ((1ull << attrib_count) - 1) << 
> > variable->data.location;
> > +       ctx->output_mask |= ((1ull << attrib_count) - 1) << idx;
> >  }
> >
> >  static void
> > --
> > 2.1.4
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to