BlurRectBench.cpp revision 3361471a3504ecd0351ff70f4c42d8d6fee963d4
14ee2ad04344446e610172a0e73949212923014dfSebastian Redl/*
22cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor * Copyright 2013 Google Inc.
32cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor *
42cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor * Use of this source code is governed by a BSD-style license that can be
52cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor * found in the LICENSE file.
62cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor */
72cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
82cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "SkBenchmark.h"
92cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "SkCanvas.h"
10a4232eb646d89e7d52424bb42eb87d9061f39e63Sebastian Redl#include "SkPaint.h"
112cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "SkRandom.h"
122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "SkShader.h"
132cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "SkString.h"
147faa2ec03a7ef120ac165bb45b6c70a8b20c9f1cSebastian Redl#include "SkBlurMask.h"
150eca89e9890db4d8336ce762a5b359a1d58ca02bArgyrios Kyrtzidis
16e737f5041a36d0befb39ffeed8d50ba15916d3daDouglas Gregor#define SMALL   SkIntToScalar(2)
17e737f5041a36d0befb39ffeed8d50ba15916d3daDouglas Gregor#define REAL    1.5f
182cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorstatic const SkScalar kMedium = SkIntToScalar(5);
192cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#define BIG     SkIntToScalar(10)
202cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorstatic const SkScalar kMedBig = SkIntToScalar(20);
212a7fb27913999d132cf9e10e03dc5271faa2e9d3John McCall#define REALBIG 30.5f
2289eaf3af92c72c0c1aae807644e39cabc461d685Argyrios Kyrtzidis
230b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorclass BlurRectBench: public SkBenchmark {
247a1fad38256eb4c5129359be85ba1ea1678eb5c9John McCall    int         fLoopCount;
252cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    SkScalar    fRadius;
26a1ee0c548b8aa4aaf93d1917e304e3da13171a08John McCall    SkString    fName;
276ab7cd853e9c15cf986a8a7c3db1f8d20e275409Sebastian Redl
287c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattnerpublic:
296a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor    BlurRectBench(SkScalar rad) {
307c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner        fRadius = rad;
3183d63c78810556d26b62ac4cbae2eda6cdd2570cSteve Naroff
3214f79002e58556798e86168c63e48d533287eda5Douglas Gregor        if (fRadius > SkIntToScalar(25)) {
3310e286aa8d39fb51a21412850265d9dae74613eeChris Lattner            fLoopCount = 100;
343251ceb90b3fec68e86d6dcfa58836e20a7205c3Douglas Gregor        } else if (fRadius > SkIntToScalar(5)) {
3514f79002e58556798e86168c63e48d533287eda5Douglas Gregor            fLoopCount = 1000;
36bd94500d3aa60092fb0f1e90f53fb0d03fa502a8Douglas Gregor        } else {
372bec0410d268779f601bd509e0302a500af7ac6aDouglas Gregor            fLoopCount = 10000;
3857016dda61498294120b1a881d9e6606337b29d9Douglas Gregor        }
39ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor    }
400a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregor
4117fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregorprotected:
4217fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor    virtual const char* onGetName() {
432596e429a61602312bdd149786045b8a90cd2d10Daniel Dunbar        return fName.c_str();
442cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
45fbfd180495e7800975c6d9bdc6d24e706ef70e34Michael J. Spencer
4614f79002e58556798e86168c63e48d533287eda5Douglas Gregor    SkScalar radius() const {
4703013fa9a0bf1ef4b907f5fec006c8f4000fdd21Michael J. Spencer        return fRadius;
48f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor    }
493c304bd9ec2b4611572d4cbae9e1727bbecb5dc9Chris Lattner
50cfbf1c7536e016dc275139dd842d4a5f059a749fDouglas Gregor    void setName(const SkString& name) {
51f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor        fName = name;
522cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
538538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl
542cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    virtual void onDraw(const int loops, SkCanvas*) {
55ade5000c8763f4bec41f452d7efa3a9b2a6d4712Sebastian Redl        SkPaint paint;
565f9e272e632e951b1efe824cd16acb4d96077930Chris Lattner        this->setupPaint(&paint);
575f9e272e632e951b1efe824cd16acb4d96077930Chris Lattner
585f9e272e632e951b1efe824cd16acb4d96077930Chris Lattner        paint.setAntiAlias(true);
596e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer
60ade5000c8763f4bec41f452d7efa3a9b2a6d4712Sebastian Redl        SkScalar pad = fRadius*3/2 + SK_Scalar1;
616e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer        SkRect r = SkRect::MakeWH(2 * pad + SK_Scalar1, 2 * pad + SK_Scalar1);
626e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer
635f9e272e632e951b1efe824cd16acb4d96077930Chris Lattner        preBenchSetup(r);
645f9e272e632e951b1efe824cd16acb4d96077930Chris Lattner
656e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer        for (int i = 0; i < loops; i++) {
66ade5000c8763f4bec41f452d7efa3a9b2a6d4712Sebastian Redl            makeBlurryRect(r);
67ade5000c8763f4bec41f452d7efa3a9b2a6d4712Sebastian Redl        }
682cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
692cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
702cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    virtual void makeBlurryRect(const SkRect&) = 0;
7112b1c7615d4f9a2edc544be499f895f16ac100edChris Lattner    virtual void preBenchSetup(const SkRect&) {}
722cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorprivate:
733397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl    typedef SkBenchmark INHERITED;
74a4232eb646d89e7d52424bb42eb87d9061f39e63Sebastian Redl};
7589eaf3af92c72c0c1aae807644e39cabc461d685Argyrios Kyrtzidis
762cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
772cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorclass BlurRectDirectBench: public BlurRectBench {
782cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor public:
798538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl    BlurRectDirectBench(SkScalar rad) : INHERITED(rad) {
802cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        SkString name;
8189eaf3af92c72c0c1aae807644e39cabc461d685Argyrios Kyrtzidis
828538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl        if (SkScalarFraction(rad) != 0) {
832cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor            name.printf("blurrect_direct_%.2f", SkScalarToFloat(rad));
842cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        } else {
852cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor            name.printf("blurrect_direct_%d", SkScalarRoundToInt(rad));
862cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        }
872cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
882cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        this->setName(name);
892cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
902cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorprotected:
912cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    virtual void makeBlurryRect(const SkRect& r) SK_OVERRIDE {
922cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        SkMask mask;
932cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        SkBlurMask::BlurRect(SkBlurMask::ConvertRadiusToSigma(this->radius()),
943397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl                             &mask, r, SkBlurMask::kNormal_Style);
95b219cfc4d75f0a03630b7c4509ef791b7e97b2c8David Blaikie        SkMask::FreeImage(mask.fImage);
962cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
972cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorprivate:
983397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl    typedef BlurRectBench INHERITED;
992cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor};
1008538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl
1012cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorclass BlurRectSeparableBench: public BlurRectBench {
1022cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
1033397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redlpublic:
1042cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    BlurRectSeparableBench(SkScalar rad) : INHERITED(rad) {
1058538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl        fSrcMask.fImage = NULL;
1062cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
1072cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
1083397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl    ~BlurRectSeparableBench() {
1091eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        SkMask::FreeImage(fSrcMask.fImage);
1108538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl    }
1112cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
1122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorprotected:
1133397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl    virtual void preBenchSetup(const SkRect& r) SK_OVERRIDE {
114df1550fc59b51681d37225934fe4e3acac321621Richard Smith        SkMask::FreeImage(fSrcMask.fImage);
115df1550fc59b51681d37225934fe4e3acac321621Richard Smith
1168538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl        r.roundOut(&fSrcMask.fBounds);
1172cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        fSrcMask.fFormat = SkMask::kA8_Format;
1182cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        fSrcMask.fRowBytes = fSrcMask.fBounds.width();
1193397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl        fSrcMask.fImage = SkMask::AllocImage(fSrcMask.computeTotalImageSize());
120df1550fc59b51681d37225934fe4e3acac321621Richard Smith
1218538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl        memset(fSrcMask.fImage, 0xff, fSrcMask.computeTotalImageSize());
1222cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
1232cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
1243397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl    SkMask fSrcMask;
1251eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpprivate:
1261eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    typedef BlurRectBench INHERITED;
1278538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl};
1282cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
1292cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorclass BlurRectBoxFilterBench: public BlurRectSeparableBench {
1303397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redlpublic:
1312cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    BlurRectBoxFilterBench(SkScalar rad) : INHERITED(rad) {
1322cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        SkString name;
1330953e767ff7817f97b3ab20896b229891eeff45bJohn McCall
1342cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        if (SkScalarFraction(rad) != 0) {
1352cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor            name.printf("blurrect_boxfilter_%.2f", SkScalarToFloat(rad));
1363397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl        } else {
1372cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor            name.printf("blurrect_boxfilter_%d", SkScalarRoundToInt(rad));
1382cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        }
1398538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl
1402cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        this->setName(name);
1412cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
1423397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl
1432cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorprotected:
1448538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl
1452cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    virtual void makeBlurryRect(const SkRect&) SK_OVERRIDE {
1462cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        SkMask mask;
1473397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl        mask.fImage = NULL;
1482cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        SkBlurMask::BoxBlur(&mask, fSrcMask, SkBlurMask::ConvertRadiusToSigma(this->radius()),
1497e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor                            SkBlurMask::kNormal_Style,
1507e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor                            SkBlurMask::kHigh_Quality);
151c9490c000f515c29f200a1215328d8ab9a0f3818Douglas Gregor        SkMask::FreeImage(mask.fImage);
1528538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl    }
1532cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorprivate:
1542cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    typedef BlurRectSeparableBench INHERITED;
1553397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl};
1562cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
1572cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregorclass BlurRectGaussianBench: public BlurRectSeparableBench {
158e86d78cf4754a6aef2cf9a33d847aa15338e276fBob Wilsonpublic:
1598538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl    BlurRectGaussianBench(SkScalar rad) : INHERITED(rad) {
1602cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        SkString name;
1612cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor
1623397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl        if (SkScalarFraction(rad) != 0) {
1632cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor            name.printf("blurrect_gaussian_%.2f", SkScalarToFloat(rad));
1648538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl        } else {
1652cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor            name.printf("blurrect_gaussian_%d", SkScalarRoundToInt(rad));
1662cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        }
1673397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl
1682cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        this->setName(name);
169264ba48dc98f3f843935a485d5b086f7e0fdc4f1Rafael Espindola    }
170264ba48dc98f3f843935a485d5b086f7e0fdc4f1Rafael Espindola
171a49218e17bcbb1acde0245773173e2c0c42f4f19Eli Friedmanprotected:
172425ef72306d4ff6b3698b744353e5f0e56b4b884Rafael Espindola
173ab8bbf4ebd3e3e6eab913cb044772a62b7581941Douglas Gregor    virtual void makeBlurryRect(const SkRect&) SK_OVERRIDE {
174264ba48dc98f3f843935a485d5b086f7e0fdc4f1Rafael Espindola        SkMask mask;
175f85e193739c953358c865005855253af4f68a497John McCall        mask.fImage = NULL;
1762cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor        SkBlurMask::BlurGroundTruth(SkBlurMask::ConvertRadiusToSigma(this->radius()),
1772cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor                                    &mask, fSrcMask, SkBlurMask::kNormal_Style);
1783397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl        SkMask::FreeImage(mask.fImage);
1792cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    }
1808538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redlprivate:
1812cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor    typedef BlurRectSeparableBench INHERITED;
1822cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor};
1833397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl
1842cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectBoxFilterBench(SMALL);)
1852cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectBoxFilterBench(BIG);)
1862cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectBoxFilterBench(REALBIG);)
1872cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectBoxFilterBench(REAL);)
1882cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(SMALL);)
189eefb3d5b49c844347f212073a7e975b8118fe8e9Richard SmithDEF_BENCH(return new BlurRectGaussianBench(BIG);)
1902cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(REALBIG);)
191c938c1668b4fd12af154e965dd935a89e4801a70Douglas GregorDEF_BENCH(return new BlurRectGaussianBench(REAL);)
19260618fa7f88d5162bb5b40988b6b38d4d75d6fc6Sebastian RedlDEF_BENCH(return new BlurRectDirectBench(SMALL);)
19360618fa7f88d5162bb5b40988b6b38d4d75d6fc6Sebastian RedlDEF_BENCH(return new BlurRectDirectBench(BIG);)
19460618fa7f88d5162bb5b40988b6b38d4d75d6fc6Sebastian RedlDEF_BENCH(return new BlurRectDirectBench(REALBIG);)
19560618fa7f88d5162bb5b40988b6b38d4d75d6fc6Sebastian RedlDEF_BENCH(return new BlurRectDirectBench(REAL);)
19660618fa7f88d5162bb5b40988b6b38d4d75d6fc6Sebastian Redl
19760618fa7f88d5162bb5b40988b6b38d4d75d6fc6Sebastian RedlDEF_BENCH(return new BlurRectDirectBench(kMedium);)
19860618fa7f88d5162bb5b40988b6b38d4d75d6fc6Sebastian RedlDEF_BENCH(return new BlurRectDirectBench(kMedBig);)
1997bb698aa054de4c0e0aa23973b2c62dac9611262Richard Smith
2007bb698aa054de4c0e0aa23973b2c62dac9611262Richard SmithDEF_BENCH(return new BlurRectBoxFilterBench(kMedium);)
2017bb698aa054de4c0e0aa23973b2c62dac9611262Richard SmithDEF_BENCH(return new BlurRectBoxFilterBench(kMedBig);)
202b9d0b76e42fd2d4cdfd135220302458d03ad09feRichard Smith
203b9d0b76e42fd2d4cdfd135220302458d03ad09feRichard Smith#if 0
20460618fa7f88d5162bb5b40988b6b38d4d75d6fc6Sebastian Redl// disable Gaussian benchmarks; the algorithm works well enough
2058538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl// and serves as a baseline for ground truth, but it's too slow
2062cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// to use in production for non-trivial radii, so no real point
2072cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// in having the bots benchmark it all the time.
2083397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl
209ed97649e9574b9d854fa4d6109c9333ae0993554John McCallDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(1));)
2108538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian RedlDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(2));)
211ed97649e9574b9d854fa4d6109c9333ae0993554John McCallDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(3));)
212ed97649e9574b9d854fa4d6109c9333ae0993554John McCallDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(4));)
2133397c5570369f19b2d6c52e898f708d75ceede1fSebastian RedlDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(5));)
2142cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(6));)
2159763e221e16026ddf487d2564ed349d2c874a1a1Argyrios KyrtzidisDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(7));)
2169763e221e16026ddf487d2564ed349d2c874a1a1Argyrios KyrtzidisDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(8));)
2178538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian RedlDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(9));)
2182cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(10));)
2192cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(11));)
2203397c5570369f19b2d6c52e898f708d75ceede1fSebastian RedlDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(12));)
221c9490c000f515c29f200a1215328d8ab9a0f3818Douglas GregorDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(13));)
2228538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian RedlDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(14));)
2232cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(15));)
2242cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(16));)
2253397c5570369f19b2d6c52e898f708d75ceede1fSebastian RedlDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(17));)
2262cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(18));)
2278538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian RedlDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(19));)
2282cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas GregorDEF_BENCH(return new BlurRectGaussianBench(SkIntToScalar(20));)
2292cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#endif
2303397c5570369f19b2d6c52e898f708d75ceede1fSebastian Redl