aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-10-03 15:44:23 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-10-03 20:02:20 +0000
commit70cdb396eb5ffbbed128b902532e9292b5ec0e9d (patch)
treed6a3bc707ac55d6823f7966adfacd88c6f23d903 /bench
parentafb48b62272e280d766f8e97c9cdd3417961a546 (diff)
Revert "Revert "replace SkXfermode obj with SkBlendMode enum in paints""
This reverts commit ce02e7175872abde3721df9e5d3ec0ab8384cd8e. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2878 Change-Id: I86875511a13497112827cbaed1dbd7639e9e3d10 Reviewed-on: https://skia-review.googlesource.com/2878 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'bench')
-rw-r--r--bench/RectBench.cpp8
-rw-r--r--bench/RotatedRectBench.cpp82
-rw-r--r--bench/XfermodeBench.cpp99
3 files changed, 82 insertions, 107 deletions
diff --git a/bench/RectBench.cpp b/bench/RectBench.cpp
index 46a515de29..48764cabdf 100644
--- a/bench/RectBench.cpp
+++ b/bench/RectBench.cpp
@@ -85,7 +85,7 @@ private:
class SrcModeRectBench : public RectBench {
public:
SrcModeRectBench() : INHERITED(1, 0) {
- fMode = SkXfermode::Make(SkXfermode::kSrc_Mode);
+ fMode = SkBlendMode::kSrc;
}
protected:
@@ -93,7 +93,7 @@ protected:
this->INHERITED::setupPaint(paint);
// srcmode is most interesting when we're not opaque
paint->setAlpha(0x80);
- paint->setXfermode(fMode);
+ paint->setBlendMode(fMode);
}
const char* onGetName() override {
@@ -103,8 +103,8 @@ protected:
}
private:
- SkString fName;
- sk_sp<SkXfermode> fMode;
+ SkString fName;
+ SkBlendMode fMode;
typedef RectBench INHERITED;
};
diff --git a/bench/RotatedRectBench.cpp b/bench/RotatedRectBench.cpp
index 23e044330c..f81bfb1d10 100644
--- a/bench/RotatedRectBench.cpp
+++ b/bench/RotatedRectBench.cpp
@@ -67,7 +67,7 @@ static SkString to_lower(const char* str) {
class RotRectBench: public Benchmark {
public:
- RotRectBench(bool aa, ColorType ct, SkXfermode::Mode mode)
+ RotRectBench(bool aa, ColorType ct, SkBlendMode mode)
: fAA(aa)
, fColorType(ct)
, fMode(mode) {
@@ -80,7 +80,7 @@ protected:
void onDraw(int loops, SkCanvas* canvas) override {
SkPaint paint;
paint.setAntiAlias(fAA);
- paint.setXfermodeMode(fMode);
+ paint.setBlendMode(fMode);
SkColor color = start_color(fColorType);
int w = this->getSize().x();
@@ -147,48 +147,48 @@ private:
fName.appendf("_%s", to_lower(SkXfermode::ModeName(fMode)).c_str());
}
- bool fAA;
- ColorType fColorType;
- SkXfermode::Mode fMode;
- SkString fName;
+ bool fAA;
+ ColorType fColorType;
+ SkBlendMode fMode;
+ SkString fName;
typedef Benchmark INHERITED;
};
// Choose kSrcOver because it always allows coverage and alpha to be conflated. kSrc only allows
// conflation when opaque, and kDarken because it isn't possilbe with standard GL blending.
-DEF_BENCH(return new RotRectBench(true, kConstantOpaque_ColorType, SkXfermode::kSrcOver_Mode);)
-DEF_BENCH(return new RotRectBench(true, kConstantTransparent_ColorType, SkXfermode::kSrcOver_Mode);)
-DEF_BENCH(return new RotRectBench(true, kChangingOpaque_ColorType, SkXfermode::kSrcOver_Mode);)
-DEF_BENCH(return new RotRectBench(true, kChangingTransparent_ColorType, SkXfermode::kSrcOver_Mode);)
-DEF_BENCH(return new RotRectBench(true, kAlternatingOpaqueAndTransparent_ColorType, SkXfermode::kSrcOver_Mode);)
-
-DEF_BENCH(return new RotRectBench(false, kConstantOpaque_ColorType, SkXfermode::kSrcOver_Mode);)
-DEF_BENCH(return new RotRectBench(false, kConstantTransparent_ColorType, SkXfermode::kSrcOver_Mode);)
-DEF_BENCH(return new RotRectBench(false, kChangingOpaque_ColorType, SkXfermode::kSrcOver_Mode);)
-DEF_BENCH(return new RotRectBench(false, kChangingTransparent_ColorType, SkXfermode::kSrcOver_Mode);)
-DEF_BENCH(return new RotRectBench(false, kAlternatingOpaqueAndTransparent_ColorType, SkXfermode::kSrcOver_Mode);)
-
-DEF_BENCH(return new RotRectBench(true, kConstantOpaque_ColorType, SkXfermode::kSrc_Mode);)
-DEF_BENCH(return new RotRectBench(true, kConstantTransparent_ColorType, SkXfermode::kSrc_Mode);)
-DEF_BENCH(return new RotRectBench(true, kChangingOpaque_ColorType, SkXfermode::kSrc_Mode);)
-DEF_BENCH(return new RotRectBench(true, kChangingTransparent_ColorType, SkXfermode::kSrc_Mode);)
-DEF_BENCH(return new RotRectBench(true, kAlternatingOpaqueAndTransparent_ColorType, SkXfermode::kSrc_Mode);)
-
-DEF_BENCH(return new RotRectBench(false, kConstantOpaque_ColorType, SkXfermode::kSrc_Mode);)
-DEF_BENCH(return new RotRectBench(false, kConstantTransparent_ColorType, SkXfermode::kSrc_Mode);)
-DEF_BENCH(return new RotRectBench(false, kChangingOpaque_ColorType, SkXfermode::kSrc_Mode);)
-DEF_BENCH(return new RotRectBench(false, kChangingTransparent_ColorType, SkXfermode::kSrc_Mode);)
-DEF_BENCH(return new RotRectBench(false, kAlternatingOpaqueAndTransparent_ColorType, SkXfermode::kSrc_Mode);)
-
-DEF_BENCH(return new RotRectBench(true, kConstantOpaque_ColorType, SkXfermode::kDarken_Mode);)
-DEF_BENCH(return new RotRectBench(true, kConstantTransparent_ColorType, SkXfermode::kDarken_Mode);)
-DEF_BENCH(return new RotRectBench(true, kChangingOpaque_ColorType, SkXfermode::kDarken_Mode);)
-DEF_BENCH(return new RotRectBench(true, kChangingTransparent_ColorType, SkXfermode::kDarken_Mode);)
-DEF_BENCH(return new RotRectBench(true, kAlternatingOpaqueAndTransparent_ColorType, SkXfermode::kDarken_Mode);)
-
-DEF_BENCH(return new RotRectBench(false, kConstantOpaque_ColorType, SkXfermode::kDarken_Mode);)
-DEF_BENCH(return new RotRectBench(false, kConstantTransparent_ColorType, SkXfermode::kDarken_Mode);)
-DEF_BENCH(return new RotRectBench(false, kChangingOpaque_ColorType, SkXfermode::kDarken_Mode);)
-DEF_BENCH(return new RotRectBench(false, kChangingTransparent_ColorType, SkXfermode::kDarken_Mode);)
-DEF_BENCH(return new RotRectBench(false, kAlternatingOpaqueAndTransparent_ColorType, SkXfermode::kDarken_Mode);)
+DEF_BENCH(return new RotRectBench(true, kConstantOpaque_ColorType, SkBlendMode::kSrcOver);)
+DEF_BENCH(return new RotRectBench(true, kConstantTransparent_ColorType, SkBlendMode::kSrcOver);)
+DEF_BENCH(return new RotRectBench(true, kChangingOpaque_ColorType, SkBlendMode::kSrcOver);)
+DEF_BENCH(return new RotRectBench(true, kChangingTransparent_ColorType, SkBlendMode::kSrcOver);)
+DEF_BENCH(return new RotRectBench(true, kAlternatingOpaqueAndTransparent_ColorType, SkBlendMode::kSrcOver);)
+
+DEF_BENCH(return new RotRectBench(false, kConstantOpaque_ColorType, SkBlendMode::kSrcOver);)
+DEF_BENCH(return new RotRectBench(false, kConstantTransparent_ColorType, SkBlendMode::kSrcOver);)
+DEF_BENCH(return new RotRectBench(false, kChangingOpaque_ColorType, SkBlendMode::kSrcOver);)
+DEF_BENCH(return new RotRectBench(false, kChangingTransparent_ColorType, SkBlendMode::kSrcOver);)
+DEF_BENCH(return new RotRectBench(false, kAlternatingOpaqueAndTransparent_ColorType, SkBlendMode::kSrcOver);)
+
+DEF_BENCH(return new RotRectBench(true, kConstantOpaque_ColorType, SkBlendMode::kSrc);)
+DEF_BENCH(return new RotRectBench(true, kConstantTransparent_ColorType, SkBlendMode::kSrc);)
+DEF_BENCH(return new RotRectBench(true, kChangingOpaque_ColorType, SkBlendMode::kSrc);)
+DEF_BENCH(return new RotRectBench(true, kChangingTransparent_ColorType, SkBlendMode::kSrc);)
+DEF_BENCH(return new RotRectBench(true, kAlternatingOpaqueAndTransparent_ColorType, SkBlendMode::kSrc);)
+
+DEF_BENCH(return new RotRectBench(false, kConstantOpaque_ColorType, SkBlendMode::kSrc);)
+DEF_BENCH(return new RotRectBench(false, kConstantTransparent_ColorType, SkBlendMode::kSrc);)
+DEF_BENCH(return new RotRectBench(false, kChangingOpaque_ColorType, SkBlendMode::kSrc);)
+DEF_BENCH(return new RotRectBench(false, kChangingTransparent_ColorType, SkBlendMode::kSrc);)
+DEF_BENCH(return new RotRectBench(false, kAlternatingOpaqueAndTransparent_ColorType, SkBlendMode::kSrc);)
+
+DEF_BENCH(return new RotRectBench(true, kConstantOpaque_ColorType, SkBlendMode::kDarken);)
+DEF_BENCH(return new RotRectBench(true, kConstantTransparent_ColorType, SkBlendMode::kDarken);)
+DEF_BENCH(return new RotRectBench(true, kChangingOpaque_ColorType, SkBlendMode::kDarken);)
+DEF_BENCH(return new RotRectBench(true, kChangingTransparent_ColorType, SkBlendMode::kDarken);)
+DEF_BENCH(return new RotRectBench(true, kAlternatingOpaqueAndTransparent_ColorType, SkBlendMode::kDarken);)
+
+DEF_BENCH(return new RotRectBench(false, kConstantOpaque_ColorType, SkBlendMode::kDarken);)
+DEF_BENCH(return new RotRectBench(false, kConstantTransparent_ColorType, SkBlendMode::kDarken);)
+DEF_BENCH(return new RotRectBench(false, kChangingOpaque_ColorType, SkBlendMode::kDarken);)
+DEF_BENCH(return new RotRectBench(false, kChangingTransparent_ColorType, SkBlendMode::kDarken);)
+DEF_BENCH(return new RotRectBench(false, kAlternatingOpaqueAndTransparent_ColorType, SkBlendMode::kDarken);)
diff --git a/bench/XfermodeBench.cpp b/bench/XfermodeBench.cpp
index 60879d603e..9e148d4317 100644
--- a/bench/XfermodeBench.cpp
+++ b/bench/XfermodeBench.cpp
@@ -15,10 +15,8 @@
// Benchmark that draws non-AA rects or AA text with an SkXfermode::Mode.
class XfermodeBench : public Benchmark {
public:
- XfermodeBench(SkXfermode::Mode mode, bool aa) {
- fXfermode = SkXfermode::Make(mode);
+ XfermodeBench(SkBlendMode mode, bool aa) : fBlendMode(mode) {
fAA = aa;
- SkASSERT(fXfermode.get() || SkXfermode::kSrcOver_Mode == mode);
fName.printf("Xfermode_%s%s", SkXfermode::ModeName(mode), aa ? "_aa" : "");
}
@@ -32,7 +30,7 @@ protected:
SkRandom random;
for (int i = 0; i < loops; ++i) {
SkPaint paint;
- paint.setXfermode(fXfermode);
+ paint.setBlendMode(fBlendMode);
paint.setColor(random.nextU());
if (fAA) {
// Draw text to exercise AA code paths.
@@ -61,71 +59,48 @@ protected:
}
private:
- sk_sp<SkXfermode> fXfermode;
- SkString fName;
- bool fAA;
+ SkBlendMode fBlendMode;
+ SkString fName;
+ bool fAA;
typedef Benchmark INHERITED;
};
-class XferCreateBench : public Benchmark {
-public:
- bool isSuitableFor(Backend backend) override {
- return backend == kNonRendering_Backend;
- }
-
-protected:
- const char* onGetName() override { return "xfermode_create"; }
-
- void onDraw(int loops, SkCanvas* canvas) override {
- for (int outer = 0; outer < loops * 10; ++outer) {
- for (int i = 0; i <= SkXfermode::kLastMode; ++i) {
- (void)SkXfermode::Make(SkXfermode::Mode(i));
- }
- }
- }
-
-private:
- typedef Benchmark INHERITED;
-};
-
//////////////////////////////////////////////////////////////////////////////
#define BENCH(...) \
DEF_BENCH( return new XfermodeBench(__VA_ARGS__, true); ) \
DEF_BENCH( return new XfermodeBench(__VA_ARGS__, false); )
-BENCH(SkXfermode::kClear_Mode)
-BENCH(SkXfermode::kSrc_Mode)
-BENCH(SkXfermode::kDst_Mode)
-BENCH(SkXfermode::kSrcOver_Mode)
-BENCH(SkXfermode::kDstOver_Mode)
-BENCH(SkXfermode::kSrcIn_Mode)
-BENCH(SkXfermode::kDstIn_Mode)
-BENCH(SkXfermode::kSrcOut_Mode)
-BENCH(SkXfermode::kDstOut_Mode)
-BENCH(SkXfermode::kSrcATop_Mode)
-BENCH(SkXfermode::kDstATop_Mode)
-BENCH(SkXfermode::kXor_Mode)
-
-BENCH(SkXfermode::kPlus_Mode)
-BENCH(SkXfermode::kModulate_Mode)
-BENCH(SkXfermode::kScreen_Mode)
-
-BENCH(SkXfermode::kOverlay_Mode)
-BENCH(SkXfermode::kDarken_Mode)
-BENCH(SkXfermode::kLighten_Mode)
-BENCH(SkXfermode::kColorDodge_Mode)
-BENCH(SkXfermode::kColorBurn_Mode)
-BENCH(SkXfermode::kHardLight_Mode)
-BENCH(SkXfermode::kSoftLight_Mode)
-BENCH(SkXfermode::kDifference_Mode)
-BENCH(SkXfermode::kExclusion_Mode)
-BENCH(SkXfermode::kMultiply_Mode)
-
-BENCH(SkXfermode::kHue_Mode)
-BENCH(SkXfermode::kSaturation_Mode)
-BENCH(SkXfermode::kColor_Mode)
-BENCH(SkXfermode::kLuminosity_Mode)
-
-DEF_BENCH(return new XferCreateBench;)
+BENCH(SkBlendMode::kClear)
+BENCH(SkBlendMode::kSrc)
+BENCH(SkBlendMode::kDst)
+BENCH(SkBlendMode::kSrcOver)
+BENCH(SkBlendMode::kDstOver)
+BENCH(SkBlendMode::kSrcIn)
+BENCH(SkBlendMode::kDstIn)
+BENCH(SkBlendMode::kSrcOut)
+BENCH(SkBlendMode::kDstOut)
+BENCH(SkBlendMode::kSrcATop)
+BENCH(SkBlendMode::kDstATop)
+BENCH(SkBlendMode::kXor)
+
+BENCH(SkBlendMode::kPlus)
+BENCH(SkBlendMode::kModulate)
+BENCH(SkBlendMode::kScreen)
+
+BENCH(SkBlendMode::kOverlay)
+BENCH(SkBlendMode::kDarken)
+BENCH(SkBlendMode::kLighten)
+BENCH(SkBlendMode::kColorDodge)
+BENCH(SkBlendMode::kColorBurn)
+BENCH(SkBlendMode::kHardLight)
+BENCH(SkBlendMode::kSoftLight)
+BENCH(SkBlendMode::kDifference)
+BENCH(SkBlendMode::kExclusion)
+BENCH(SkBlendMode::kMultiply)
+
+BENCH(SkBlendMode::kHue)
+BENCH(SkBlendMode::kSaturation)
+BENCH(SkBlendMode::kColor)
+BENCH(SkBlendMode::kLuminosity)