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. On Dec 23, 2015 5:25 AM, "Oded Gabbay" <oded.gab...@gmail.com> wrote:
> On Tue, Dec 22, 2015 at 9:01 PM, Bill Spitzak <spit...@gmail.com> wrote: > > > > > > On Tue, Dec 22, 2015 at 4:38 AM, Oded Gabbay <oded.gab...@gmail.com> > wrote: > >> > >> On Sat, Dec 12, 2015 at 8:06 PM, <spit...@gmail.com> wrote: > >> > From: Bill Spitzak <spit...@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. > > > I run the scale demo, and added a printf everytime ax is >=2. > I got a LOT of prints... > So I don't think your argument is correct. > > > Adding range checks to all the other filters (especially the ones that > > return constants) would add a bunch of conditions that are never used. > > Maybe, but it might be necessary to produce more accurate results ? > > Oded > > > > > >> > >> > >> 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@lists.freedesktop.org > >> > http://lists.freedesktop.org/mailman/listinfo/pixman > > > > >
_______________________________________________ Pixman mailing list Pixman@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pixman