[Pixman] performance of bilinear_interpolation
Siarhei Siamashka
siarhei.siamashka at gmail.com
Tue Oct 1 18:28:00 PDT 2013
On Fri, 27 Sep 2013 16:42:08 +0100
Chris Wilson <chris at chris-wilson.co.uk> wrote:
> On Fri, Sep 27, 2013 at 01:17:45AM +0300, Siarhei Siamashka wrote:
> > Unfortunately, all that I could record so far is a broken trace :-(
> > Maybe somebody else will be more lucky? If anybody is interested, just
> > go to http://manichord.com/opensign/ffdebug/ffscroll.html in Firefox,
> > press ctrl-+ to zoom the page a bit and scroll it left/right for a
> > while. The Firefox browser needs to be launched by the cairo-trace tool.
>
> Lots of bugs in cairo-trace exposed by trying to record recent ff. :(
> All appear to be fixed, and I've upload a firefox-canvas-scroll.trace to
> the cairo-traces.git
Thanks for the fix. Firefox traces can be recorded now. I had a
look at the firefox-canvas-scroll trace, but it does not fully
represent this interesting use case. The trace has too much of
blt (which eclipses the other operations), and too little of
bits_image_fetch_bilinear_affine_pad_x8r8g8b8.
Profiling this trace shows:
33.18% cairo-perf-trac libpixman-1.so.0.31.1 [.] sse2_blt.part.10
29.17% cairo-perf-trac libpixman-1.so.0.31.1 [.] sse2_composite_over_8888_8888
15.86% cairo-perf-trac libpixman-1.so.0.31.1 [.] sse2_fill
8.63% cairo-perf-trac libpixman-1.so.0.31.1 [.] bits_image_fetch_bilinear_affine_pad_x8r8g8b8
3.76% cairo-perf-trac liblzo2.so.2.0.0 [.] lzo2a_decompress
1.06% cairo-perf-trac libc-2.15.so [.] __memcpy_ssse3
While running "perf record -p `pidof firefox" and profiling only the
scrolling part in Firefox (without any possible initial setup overhead)
seems to show no major blt usage:
25.67% firefox libpixman-1.so.0.31.1 [.] sse2_composite_over_8888_8888
24.86% firefox libpixman-1.so.0.31.1 [.] bits_image_fetch_bilinear_affine_pad_x8r8g8b8
14.84% firefox libpixman-1.so.0.31.1 [.] sse2_fill
1.87% firefox libpixman-1.so.0.31.1 [.] sse2_blt.part.10
0.82% firefox libc-2.15.so [.] __memcpy_ssse3
I tried to record a new Firefox trace myself and also make it
shorter, so that it is usable on much slower embedded systems:
https://github.com/ssvb/trimmed-cairo-traces/raw/86014d9a02d1/benchmark/t-firefox-canvas-swscroll.lzma
35.55% cairo-perf-trac libpixman-1.so.0.31.1 [.] bits_image_fetch_bilinear_affine_pad_x8r8g8b8
18.83% cairo-perf-trac libpixman-1.so.0.31.1 [.] sse2_composite_over_8888_8888
7.71% cairo-perf-trac libc-2.15.so [.] __memset_sse2
7.23% cairo-perf-trac liblzo2.so.2.0.0 [.] lzo2a_decompress
5.01% cairo-perf-trac libpixman-1.so.0.31.1 [.] sse2_fill
2.71% cairo-perf-trac libc-2.15.so [.] __memcpy_ssse3
2.48% cairo-perf-trac libpixman-1.so.0.31.1 [.] sse2_blt.part.10
Additionally, Firefox is configured to use client side software
rendering by setting gfx.xrender.enabled=false in about:config
(in order to make it behave more like it behaves in Android).
--
Best regards,
Siarhei Siamashka
More information about the Pixman
mailing list