[Mesa-dev] [PATCH v2] gallium: Force blend color to 16-byte alignment

Chuck Atkins chuck.atkins at kitware.com
Thu Jun 30 13:56:01 UTC 2016


I just wanted to avoid it getting removed later on because somebody sees it
as an unnecessary micro-optimization providing no real benefit.

- Chuck

On Wed, Jun 29, 2016 at 7:49 PM, Roland Scheidegger <sroland at vmware.com>
wrote:

> Am 29.06.2016 um 04:32 schrieb Chuck Atkins:
> > This aligns the 4-element color float array to 16 byte boundaries.  This
> > should allow compiler vectorizers to generate better optimizations.
> > Also fixes broken vectorization generated by Intel compiler.
> >
> > v2: Fixed indentation and added a lengthy comment explaining the
> >     reason for the alignment.
> >
> > Reported-by: Tim Rowley <timothy.o.rowley at intel.com>
> > Tested-by: Tim Rowley <timothy.o.rowley at intel.com>
> > Signed-off-by: Chuck Atkins <chuck.atkins at kitware.com>
> > Acked-by: Roland Scheidegger <sroland at vmware.com>
> > ---
> >  src/gallium/include/pipe/p_state.h | 12 +++++++++++-
> >  1 file changed, 11 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/gallium/include/pipe/p_state.h
> b/src/gallium/include/pipe/p_state.h
> > index 1543e90..5526c39 100644
> > --- a/src/gallium/include/pipe/p_state.h
> > +++ b/src/gallium/include/pipe/p_state.h
> > @@ -326,7 +326,17 @@ struct pipe_blend_state
> >
> >  struct pipe_blend_color
> >  {
> > -   float color[4];
> > +   /**
> > +    * Making the color array explicitly 16-byte aligned provides a hint
> to
> > +    * compilers to make more efficient auto-vectorization optimizations.
> > +    * The actual performance gains from vectorizing the blend color
> array are
> > +    * fairly minimal, if any, but the alignment is necessary to work
> around
> > +    * buggy vectorization in some compilers which fail to generate the
> correct
> > +    * unaligned accessors resulting in a segfault.  Specifically several
> > +    * versions of the Intel compiler are known to be affected but it's
> likely
> > +    * others are as well.
> > +    */
> > +   PIPE_ALIGN_VAR(16) float color[4];
> >  };
> >
> >
>
> I'm all for comments but that looks a bit too much for such a simple
> thing. I think the first sentence would do...
>
> Roland
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160630/1cea9172/attachment.html>


More information about the mesa-dev mailing list