SSE2 optimization for bilinear scaled 'src_8888_8888'
authorSiarhei Siamashka <siarhei.siamashka@nokia.com>
Mon, 21 Feb 2011 18:18:02 +0000 (20:18 +0200)
committerSiarhei Siamashka <siarhei.siamashka@nokia.com>
Mon, 28 Feb 2011 13:47:52 +0000 (15:47 +0200)
commit350029396d911941591149cc82b5e68a78ad6747
tree3d5af934071a1db37447bb11444217cdeff00ce7
parent0df43b8ae5031dd83775d00b57b6bed809db0e89
SSE2 optimization for bilinear scaled 'src_8888_8888'

A primitive naive implementation of bilinear scaling using SSE2 intrinsics,
which only handles one pixel at a time. It is approximately 2x faster than
pixman general compositing path. Single pass processing without intermediate
temporary buffer contributes to ~15% and loop unrolling contributes to ~20%
of this speedup.

Benchmark on Intel Core i7 (x86-64):
 Using cairo-perf-trace:
  before: image        firefox-planet-gnome   12.566   12.610   0.23%    6/6
  after:  image        firefox-planet-gnome   10.961   11.013   0.19%    5/6

 Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
  before: op=1, src=20028888, dst=20028888, speed=70.48 MPix/s
  after:  op=1, src=20028888, dst=20028888, speed=165.38 MPix/s
pixman/pixman-sse2.c