<p dir="ltr">Sounds like I better look at this more carefully, it is quite possible it is producing bad filters but with small enough error that the images look OK.</p>
<div class="gmail_quote">On Dec 23, 2015 5:25 AM, "Oded Gabbay" <<a href="mailto:oded.gabbay@gmail.com">oded.gabbay@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Dec 22, 2015 at 9:01 PM, Bill Spitzak <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>> wrote:<br>
><br>
><br>
> On Tue, Dec 22, 2015 at 4:38 AM, Oded Gabbay <<a href="mailto:oded.gabbay@gmail.com">oded.gabbay@gmail.com</a>> wrote:<br>
>><br>
>> On Sat, Dec 12, 2015 at 8:06 PM,  <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>> wrote:<br>
>> > From: Bill Spitzak <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>><br>
>> ><br>
>> > The other filters do not check for x being in range, so there is<br>
>> > no reason for cubic to do so.<br>
>><br>
>> This argument is a bit problematic.<br>
>> We could also argue that this filter was actually implemented<br>
>> correctly/more robust and we should add checks for x to the other<br>
>> filters.<br>
>><br>
>> I fail to see how this saves us much except from removing a condition<br>
>> in a very specific path.<br>
>><br>
>> Do you argue that ax will never ever be >=2 ?<br>
><br>
><br>
> Yes, because if that could happen, then out-of-range x could also be sent to<br>
> the other filter functions that are not doing the range check.<br>
><br>
I run the scale demo, and added a printf everytime ax is >=2.<br>
I got a LOT of prints...<br>
So I don't think your argument is correct.<br>
<br>
> Adding range checks to all the other filters (especially the ones that<br>
> return constants) would add a bunch of conditions that are never used.<br>
<br>
Maybe, but it might be necessary to produce more accurate results ?<br>
<br>
Oded<br>
<br>
<br>
><br>
>><br>
>><br>
>>    Oded<br>
>><br>
>> > ---<br>
>> >  pixman/pixman-filter.c | 16 +++++++---------<br>
>> >  1 file changed, 7 insertions(+), 9 deletions(-)<br>
>> ><br>
>> > diff --git a/pixman/pixman-filter.c b/pixman/pixman-filter.c<br>
>> > index 7e10108..bf9dce3 100644<br>
>> > --- a/pixman/pixman-filter.c<br>
>> > +++ b/pixman/pixman-filter.c<br>
>> > @@ -109,18 +109,16 @@ general_cubic (double x, double B, double C)<br>
>> ><br>
>> >      if (ax < 1)<br>
>> >      {<br>
>> > -       return ((12 - 9 * B - 6 * C) * ax * ax * ax +<br>
>> > -               (-18 + 12 * B + 6 * C) * ax * ax + (6 - 2 * B)) / 6;<br>
>> > -    }<br>
>> > -    else if (ax >= 1 && ax < 2)<br>
>> > -    {<br>
>> > -       return ((-B - 6 * C) * ax * ax * ax +<br>
>> > -               (6 * B + 30 * C) * ax * ax + (-12 * B - 48 * C) *<br>
>> > -               ax + (8 * B + 24 * C)) / 6;<br>
>> > +       return (((12 - 9 * B - 6 * C) * ax +<br>
>> > +                (-18 + 12 * B + 6 * C)) * ax * ax +<br>
>> > +               (6 - 2 * B)) / 6;<br>
>> >      }<br>
>> >      else<br>
>> >      {<br>
>> > -       return 0;<br>
>> > +       return ((((-B - 6 * C) * ax +<br>
>> > +                (6 * B + 30 * C)) * ax +<br>
>> > +               (-12 * B - 48 * C)) * ax +<br>
>> > +               (8 * B + 24 * C)) / 6;<br>
>> >      }<br>
>> >  }<br>
>> ><br>
>> > --<br>
>> > 1.9.1<br>
>> ><br>
>> > _______________________________________________<br>
>> > Pixman mailing list<br>
>> > <a href="mailto:Pixman@lists.freedesktop.org">Pixman@lists.freedesktop.org</a><br>
>> > <a href="http://lists.freedesktop.org/mailman/listinfo/pixman" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/pixman</a><br>
><br>
><br>
</blockquote></div>