• Eugene Ingerman's avatar
    Add antialiasing to createThumbnailDevice · 2a1987a8
    Eugene Ingerman authored
    1. Added oversampling/antialising to createThumbnailDevice. Interpolation is done using KisTransformWorker with bilinear interpolation. Added parameter that controls oversampling ratio.
    2. Added benchmark for new thumbnail code. Results for 6Kx8K image turned into 640px thumbnail see below. About 2x hit in time for 2x oversampling. Quality with 2x oversampling is much better than no oversampling. 4x oversampling slightly better, but not dramatically. See below.
    3. Changed oversampling for overview widget to 2x.
    4. Fixed caching of oversampled thumbnails.
    5. Fixed up functions calls to createThumbnail.
    No Oversampling
    2x Oversampling
    4x Oversampling
    PASS   : KisThumbnailBenchmark::benchmarkCreateThumbnail()
    RESULT : KisThumbnailBenchmark::benchmarkCreateThumbnail():
         161 msecs per iteration (total: 161, iterations: 1)
    PASS   : KisThumbnailBenchmark::benchmarkCreateThumbnailCached()
    RESULT : KisThumbnailBenchmark::benchmarkCreateThumbnailCached():
         0.000059 msecs per iteration (total: 62, iterations: 1048576)
    PASS   : KisThumbnailBenchmark::benchmarkCreateThumbnailHiQ()
    RESULT : KisThumbnailBenchmark::benchmarkCreateThumbnailHiQ():
         3,962 msecs per iteration (total: 3,962, iterations: 1)
    PASS   : KisThumbnailBenchmark::benchmarkCreateThumbnailHiQcreateThumbOversample2x()
    RESULT : KisThumbnailBenchmark::benchmarkCreateThumbnailHiQcreateThumbOversample2x():
         269 msecs per iteration (total: 269, iterations: 1)
    PASS   : KisThumbnailBenchmark::benchmarkCreateThumbnailHiQcreateThumbOversample3x()
    RESULT : KisThumbnailBenchmark::benchmarkCreateThumbnailHiQcreateThumbOversample3x():
         489 msecs per iteration (total: 489, iterations: 1)
    PASS   : KisThumbnailBenchmark::benchmarkCreateThumbnailHiQcreateThumbOversample4x()
    RESULT : KisThumbnailBenchmark::benchmarkCreateThumbnailHiQcreateThumbOversample4x():
         701 msecs per iteration (total: 701, iterations: 1)
    Test Plan: Run KisThumbnailBenchmark.
    Reviewers: rempt, dkazakov, woltherav
    Reviewed By: rempt, woltherav
    Subscribers: woltherav
    Differential Revision: https://phabricator.kde.org/D1979