[cairo] Concerns about using filters for downscaling
Krzysztof Kosiński
tweenk.pl at gmail.com
Mon Mar 24 15:04:01 PDT 2014
2014-03-24 22:04 GMT+01:00 Owen Taylor <otaylor at redhat.com>:
> On Sun, 2014-03-23 at 02:30 +0100, Søren Sandmann wrote:
>> Owen Taylor <otaylor at redhat.com> writes:
>>
>> > (Søren pointed out on IRC that the pixman implemention of convolution
>> > is not SIMD optimized, so their would be future opportunity to improve
>> > what we can do within the constraints of 5-10x slower.)
>
> I took a stab at implementing a pretty straightforward port of the
> pixman-fast-path.c code to SSE2 - attached. I was able to get roughly
> a 2x speedup:
>
>> scale NEAREST BILINEAR GOOD BEST
>> ---- ------ -------- ----- ------
>> 1.1 656 2860 15163 149147
>> 1.5 350 1574 7918 108820
>> 1.9 220 965 7176 89324
>> 2.0 51 873 6397 95665
>> 2.5 34 114 4331 71975
>> 3.0 25 392 4074 67211
>> 3.5 66 290 3101 60168
>> 4.0 15 223 3135 59207
>> 4.5 12 37 2524 58586
>> 5.0 34 143 2643 56798
>
> scale NEAREST BILINEAR GOOD BEST MIPMAP
> ----- ------- -------- ---- ---- ------
> 1.1 478 3073 10267 74341 3022
> 1.5 264 1662 5549 53639 1680
> 1.9 171 1053 3467 50495 1058
> 2.0 60 943 3080 46139 151
> 2.5 40 115 2709 40281 729
> 3.0 29 431 1907 37104 556
> 3.5 55 324 1878 35542 439
> 4.0 19 244 1515 34569 173
> 4.5 16 39 1451 33327 364
> 5.0 30 157 1219 33239 330
>
> I've added another column which is an implementation (in my test
> program) of the technique of creating a temporary power-of-two scaled
> down image and bilinear-filtering from that. As you can see, even
> tossing away the mipmaps, the performance is much better than with
> convolution - even though either way we have to touch all the pixels in
> the source image, it's much easier to write fast, cache friendly
> average-of-four-pixels code, then convolution code.
FWIW, the optimal method for Inkscape would be trilinear interpolation
from a mipmap or a ripmap. This would give the best interactive
transformation performance while maintaining good quality.
Regards, Krzysztof
More information about the cairo
mailing list