BlurRectBench.cpp revision b3ec29d2d81ae391e433fbdf8aabc791e426ee38
16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright 2013 Google Inc.
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Use of this source code is governed by a BSD-style license that can be
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * found in the LICENSE file.
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "SkBenchmark.h"
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "SkCanvas.h"
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "SkPaint.h"
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "SkRandom.h"
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "SkShader.h"
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "SkString.h"
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "SkBlurMask.h"
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SMALL   SkIntToScalar(2)
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define REAL    SkFloatToScalar(1.5f)
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic const SkScalar kMedium = SkIntToScalar(5);
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define BIG     SkIntToScalar(10)
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic const SkScalar kMedBig = SkIntToScalar(20);
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define REALBIG SkFloatToScalar(30.5f)
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass BlurRectBench: public SkBenchmark {
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    int         fLoopCount;
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    SkScalar    fRadius;
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    SkString    fName;
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    BlurRectBench(void *param, SkScalar rad) : INHERITED(param) {
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        fRadius = rad;
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        if (fRadius > SkIntToScalar(25)) {
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            fLoopCount = 100;
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        } else if (fRadius > SkIntToScalar(5)) {
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            fLoopCount = 1000;
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        } else {
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            fLoopCount = 10000;
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        }
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprotected:
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual const char* onGetName() {
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        return fName.c_str();
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    SkScalar radius() const {
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        return fRadius;
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void setName(const SkString& name) {
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        fName = name;
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void onDraw(SkCanvas*) {
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkPaint paint;
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        this->setupPaint(&paint);
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        paint.setAntiAlias(true);
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkScalar pad = fRadius*3/2 + SK_Scalar1;
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkRect r = SkRect::MakeWH(2 * pad + SK_Scalar1, 2 * pad + SK_Scalar1);
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        preBenchSetup(r);
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        for (int i = 0; i < SkBENCHLOOP(fLoopCount); i++) {
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            makeBlurryRect(r);
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        }
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void makeBlurryRect(const SkRect&) = 0;
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void preBenchSetup(const SkRect&) {}
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate:
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    typedef SkBenchmark INHERITED;
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass BlurRectDirectBench: public BlurRectBench {
786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org public:
796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    BlurRectDirectBench(void *param, SkScalar rad) : INHERITED(param, rad) {
806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkString name;
816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        if (SkScalarFraction(rad) != 0) {
836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            name.printf("blurrect_direct_%.2f", SkScalarToFloat(rad));
846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        } else {
856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            name.printf("blurrect_direct_%d", SkScalarRoundToInt(rad));
866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        }
876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        this->setName(name);
896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprotected:
916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void makeBlurryRect(const SkRect& r) SK_OVERRIDE {
926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkMask mask;
936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkBlurMask::BlurRect(SkBlurMask::ConvertRadiusToSigma(this->radius()),
946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                             &mask, r, SkBlurMask::kNormal_Style);
956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkMask::FreeImage(mask.fImage);
966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate:
986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    typedef BlurRectBench INHERITED;
996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass BlurRectSeparableBench: public BlurRectBench {
1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    BlurRectSeparableBench(void *param, SkScalar rad) : INHERITED(param, rad) {
1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        fSrcMask.fImage = NULL;
1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ~BlurRectSeparableBench() {
1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkMask::FreeImage(fSrcMask.fImage);
1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprotected:
1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void preBenchSetup(const SkRect& r) SK_OVERRIDE {
1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkMask::FreeImage(fSrcMask.fImage);
1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        r.roundOut(&fSrcMask.fBounds);
1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        fSrcMask.fFormat = SkMask::kA8_Format;
1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        fSrcMask.fRowBytes = fSrcMask.fBounds.width();
1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        fSrcMask.fImage = SkMask::AllocImage(fSrcMask.computeTotalImageSize());
1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        memset(fSrcMask.fImage, 0xff, fSrcMask.computeTotalImageSize());
1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    SkMask fSrcMask;
1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate:
1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    typedef BlurRectBench INHERITED;
1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass BlurRectBoxFilterBench: public BlurRectSeparableBench {
1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    BlurRectBoxFilterBench(void *param, SkScalar rad) : INHERITED(param, rad) {
1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkString name;
1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        if (SkScalarFraction(rad) != 0) {
1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            name.printf("blurrect_boxfilter_%.2f", SkScalarToFloat(rad));
1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        } else {
1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            name.printf("blurrect_boxfilter_%d", SkScalarRoundToInt(rad));
1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        }
1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        this->setName(name);
1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprotected:
1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void makeBlurryRect(const SkRect&) SK_OVERRIDE {
1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkMask mask;
1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        mask.fImage = NULL;
1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkBlurMask::BoxBlur(&mask, fSrcMask, SkBlurMask::ConvertRadiusToSigma(this->radius()),
1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                            SkBlurMask::kNormal_Style,
1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                            SkBlurMask::kHigh_Quality);
1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkMask::FreeImage(mask.fImage);
1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate:
1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    typedef BlurRectSeparableBench INHERITED;
1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass BlurRectGaussianBench: public BlurRectSeparableBench {
1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    BlurRectGaussianBench(void *param, SkScalar rad) : INHERITED(param, rad) {
1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkString name;
1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        if (SkScalarFraction(rad) != 0) {
1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            name.printf("blurrect_gaussian_%.2f", SkScalarToFloat(rad));
1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        } else {
1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            name.printf("blurrect_gaussian_%d", SkScalarRoundToInt(rad));
1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        }
1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        this->setName(name);
1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprotected:
1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void makeBlurryRect(const SkRect&) SK_OVERRIDE {
1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkMask mask;
1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        mask.fImage = NULL;
1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkBlurMask::BlurGroundTruth(SkBlurMask::ConvertRadiusToSigma(this->radius()),
1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                                    &mask, fSrcMask, SkBlurMask::kNormal_Style);
1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        SkMask::FreeImage(mask.fImage);
1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate:
1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    typedef BlurRectSeparableBench INHERITED;
1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectBoxFilterBench(p, SMALL);)
1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectBoxFilterBench(p, BIG);)
1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectBoxFilterBench(p, REALBIG);)
1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectBoxFilterBench(p, REAL);)
1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SMALL);)
1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, BIG);)
1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, REALBIG);)
1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, REAL);)
1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectDirectBench(p, SMALL);)
1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectDirectBench(p, BIG);)
1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectDirectBench(p, REALBIG);)
1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectDirectBench(p, REAL);)
1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectDirectBench(p, kMedium);)
1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectDirectBench(p, kMedBig);)
1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectBoxFilterBench(p, kMedium);)
2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectBoxFilterBench(p, kMedBig);)
2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if 0
2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// disable Gaussian benchmarks; the algorithm works well enough
2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// and serves as a baseline for ground truth, but it's too slow
2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// to use in production for non-trivial radii, so no real point
2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// in having the bots benchmark it all the time.
2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(1));)
2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(2));)
2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(3));)
2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(4));)
2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(5));)
2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(6));)
2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(7));)
2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(8));)
2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(9));)
2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(10));)
2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(11));)
2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(12));)
2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(13));)
2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(14));)
2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(15));)
2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(16));)
2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(17));)
2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(18));)
2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(19));)
2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgDEF_BENCH(return new BlurRectGaussianBench(p, SkIntToScalar(20));)
2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif
2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org