• Eugene Ingerman's avatar
    Add antialiasing to createThumbnailDevice · 2a1987a8
    Eugene Ingerman authored
    Summary:
    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.
    
    {F156583}
    No Oversampling
    
    {F156585}
    2x Oversampling
    
    {F156586}
    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
    2a1987a8
kis_thumbnail_benchmark.h 1.57 KB