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