[cairo] Slow down when running newer Cairo on ARM with NEON

Joshua Watt jpewhacker at gmail.com
Tue Apr 16 20:53:44 UTC 2019


On Tue, 2019-04-16 at 12:01 -0700, Bill Spitzak wrote:
> I think you can force the interpolation to bilinear or impulse.
> However you are going to revert to 1980's style scaling with extreme
> aliasing.

Hmm, this seems to be empirically false (at least when using ARM+NEON
and pixman 0.34). If I revert the cairo change GOOD quality images both
look fine and render quickly. If I change my application to use FAST
quality, then I certainly see the 1980's graphics with aliasing and it
is even faster still, but I'd rather find a way to keep the good
quality images without the 70% performance hit.
> This is some of my work from 4 years ago and unfortunately it never
> got finished due to rejection by the Pixman maintainers (who I think
> may not be working on it any more). This was to implement a two-pass
> algorithm in Pixman that could also do non-affine (perspective)
> transforms. It should be considerably faster for any down-scaling,
> even if the filter is set to bilinear. The current code is not 2-pass 
> (in effect both passes are run for every output pixel, rather than
> saving the result of the first pass, this is in fact worse than
> convolving with a 2-D filter), but at least produces modern results.
> 
> The problem is that the filters cannot be specified as arrays of
> weights, due to the need to choose arbitrary filter sizes, both to
> allow non-affine transforms and just because most 2-pass algorithms
> require unexpected filter sizes (such as the derivative along the x
> axis of the input but the y axis of the output). IMHO the most
> practical way to get this is to just make "GOOD" and "BEST" select
> two implementation-chosen filters (BILINEAR and IMPULSE would also be
> allowed) and scrap any ability to specify the filter more accurately
> by the client. This seemed to produce considerable pushback in pixman
> and was rejected and I gave up after succeeding in getting the api
> implemented in Cairo.
> 

Perhaps the NEON implementation in pixman is doing something more
modern and thus is fast and good quality? I will admit that image
interpolation algorithms aren't my area of expertise and I don't really
follow the details of what you are saying here, I'm just reporting what
I see empirically :)
> On Tue, Apr 16, 2019 at 10:38 AM Joshua Watt <jpewhacker at gmail.com>
> wrote:
> > Hello,
> > 
> > 
> > 
> > I recently upgrade from Cairo 1.12 to 1.14 (yes, I know these are
> > old
> > 
> > versions), and after doing so noticed a approximately 70% reduction
> > in
> > 
> > performance when rendering scenes that make heavy use of image
> > scaling.
> > 
> > I did some digging and tracking the offending commit down to the
> > 
> > commit: f337342c8 ("V6 image: Use convolution filters for sample
> > 
> > reconstruction when downscaling")
> > 
> > 
> > 
> > It appears that this commit is attempting to improve the quality of
> > 
> > downscaled images by implementing new interpolation algorithms in
> > cairo
> > 
> > instead of using the pixman algorithms. My theory is that this is
> > much
> > 
> > slower on ARM processes that have NEON support because pixman has
> > 
> > special implementations of the interpolations algorithms written to
> > 
> > take advantage of NEON, while the new cairo implementations do not.
> > 
> > 
> > 
> > Does anyone have any ideas on what a good path forward would be to
> > 
> > restore the ARM+NEON performance? I am planning on trying to
> > reproduce
> > 
> > this with a newer version of cairo to see if it is still a problem,
> > but
> > 
> > I suspect it will be based on the lack of any significant changes
> > in
> > 
> > this code to either cairo or pixman.
> > 
> > 
> > 
> > -- 
> > 
> > Joshua Watt <JPEWhacker at gmail.com>
> > 
> > 
> > 
-- 
Joshua Watt <JPEWhacker at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cairographics.org/archives/cairo/attachments/20190416/f31b2423/attachment.html>


More information about the cairo mailing list