[Pixman] [PATCH 13/15] pixman-filter: refactor cubic polynominal and don't range check

Bill Spitzak spitzak at gmail.com
Tue Dec 22 11:01:45 PST 2015


On Tue, Dec 22, 2015 at 4:38 AM, Oded Gabbay <oded.gabbay at gmail.com> wrote:

> On Sat, Dec 12, 2015 at 8:06 PM,  <spitzak at gmail.com> wrote:
> > From: Bill Spitzak <spitzak at gmail.com>
> >
> > The other filters do not check for x being in range, so there is
> > no reason for cubic to do so.
>
> This argument is a bit problematic.
> We could also argue that this filter was actually implemented
> correctly/more robust and we should add checks for x to the other
> filters.
>
> I fail to see how this saves us much except from removing a condition
> in a very specific path.
>
> Do you argue that ax will never ever be >=2 ?
>

Yes, because if that could happen, then out-of-range x could also be sent
to the other filter functions that are not doing the range check.

Adding range checks to all the other filters (especially the ones that
return constants) would add a bunch of conditions that are never used.


>
>    Oded
>
> > ---
> >  pixman/pixman-filter.c | 16 +++++++---------
> >  1 file changed, 7 insertions(+), 9 deletions(-)
> >
> > diff --git a/pixman/pixman-filter.c b/pixman/pixman-filter.c
> > index 7e10108..bf9dce3 100644
> > --- a/pixman/pixman-filter.c
> > +++ b/pixman/pixman-filter.c
> > @@ -109,18 +109,16 @@ general_cubic (double x, double B, double C)
> >
> >      if (ax < 1)
> >      {
> > -       return ((12 - 9 * B - 6 * C) * ax * ax * ax +
> > -               (-18 + 12 * B + 6 * C) * ax * ax + (6 - 2 * B)) / 6;
> > -    }
> > -    else if (ax >= 1 && ax < 2)
> > -    {
> > -       return ((-B - 6 * C) * ax * ax * ax +
> > -               (6 * B + 30 * C) * ax * ax + (-12 * B - 48 * C) *
> > -               ax + (8 * B + 24 * C)) / 6;
> > +       return (((12 - 9 * B - 6 * C) * ax +
> > +                (-18 + 12 * B + 6 * C)) * ax * ax +
> > +               (6 - 2 * B)) / 6;
> >      }
> >      else
> >      {
> > -       return 0;
> > +       return ((((-B - 6 * C) * ax +
> > +                (6 * B + 30 * C)) * ax +
> > +               (-12 * B - 48 * C)) * ax +
> > +               (8 * B + 24 * C)) / 6;
> >      }
> >  }
> >
> > --
> > 1.9.1
> >
> > _______________________________________________
> > Pixman mailing list
> > Pixman at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/pixman
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pixman/attachments/20151222/29bc8417/attachment-0001.html>


More information about the Pixman mailing list