diff options
author | Mike Reed <reed@google.com> | 2016-10-03 18:02:50 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-10-03 18:03:29 +0000 |
commit | ce02e7175872abde3721df9e5d3ec0ab8384cd8e (patch) | |
tree | 620eec63e1082137df3111d09cd2bf1eb7ebd180 /bench | |
parent | 6fb592e6afb0061c9c0af15ddf599e2903f508f1 (diff) |
Revert "replace SkXfermode obj with SkBlendMode enum in paints"
This reverts commit I4fb489ba6b3f77b458f7e4a99f79c7ad10859135.
Reason for revert: <INSERT REASONING HERE>
Original change's description:
> replace SkXfermode obj with SkBlendMode enum in paints
>
> BUG=skia:5814
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2714
>
> Change-Id: I4fb489ba6b3f77b458f7e4a99f79c7ad10859135
> Reviewed-on: https://skia-review.googlesource.com/2714
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
>
TBR=bsalomon@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I3e43f79ef5c1709929663fe63cc1f67cd78270b7
Reviewed-on: https://skia-review.googlesource.com/2871
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'bench')
-rw-r--r-- | bench/RectBench.cpp | 8 | ||||
-rw-r--r-- | bench/RotatedRectBench.cpp | 82 | ||||
-rw-r--r-- | bench/XfermodeBench.cpp | 99 |
3 files changed, 107 insertions, 82 deletions
diff --git a/bench/RectBench.cpp b/bench/RectBench.cpp index 48764cabdf..46a515de29 100644 --- a/bench/RectBench.cpp +++ b/bench/RectBench.cpp @@ -85,7 +85,7 @@ private: class SrcModeRectBench : public RectBench { public: SrcModeRectBench() : INHERITED(1, 0) { - fMode = SkBlendMode::kSrc; + fMode = SkXfermode::Make(SkXfermode::kSrc_Mode); } protected: @@ -93,7 +93,7 @@ protected: this->INHERITED::setupPaint(paint); // srcmode is most interesting when we're not opaque paint->setAlpha(0x80); - paint->setBlendMode(fMode); + paint->setXfermode(fMode); } const char* onGetName() override { @@ -103,8 +103,8 @@ protected: } private: - SkString fName; - SkBlendMode fMode; + SkString fName; + sk_sp<SkXfermode> fMode; typedef RectBench INHERITED; }; diff --git a/bench/RotatedRectBench.cpp b/bench/RotatedRectBench.cpp index f81bfb1d10..23e044330c 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, SkBlendMode mode) + RotRectBench(bool aa, ColorType ct, SkXfermode::Mode 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.setBlendMode(fMode); + paint.setXfermodeMode(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; - SkBlendMode fMode; - SkString fName; + bool fAA; + ColorType fColorType; + SkXfermode::Mode 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, 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);) +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);) diff --git a/bench/XfermodeBench.cpp b/bench/XfermodeBench.cpp index 9e148d4317..60879d603e 100644 --- a/bench/XfermodeBench.cpp +++ b/bench/XfermodeBench.cpp @@ -15,8 +15,10 @@ // Benchmark that draws non-AA rects or AA text with an SkXfermode::Mode. class XfermodeBench : public Benchmark { public: - XfermodeBench(SkBlendMode mode, bool aa) : fBlendMode(mode) { + XfermodeBench(SkXfermode::Mode mode, bool aa) { + fXfermode = SkXfermode::Make(mode); fAA = aa; + SkASSERT(fXfermode.get() || SkXfermode::kSrcOver_Mode == mode); fName.printf("Xfermode_%s%s", SkXfermode::ModeName(mode), aa ? "_aa" : ""); } @@ -30,7 +32,7 @@ protected: SkRandom random; for (int i = 0; i < loops; ++i) { SkPaint paint; - paint.setBlendMode(fBlendMode); + paint.setXfermode(fXfermode); paint.setColor(random.nextU()); if (fAA) { // Draw text to exercise AA code paths. @@ -59,48 +61,71 @@ protected: } private: - SkBlendMode fBlendMode; - SkString fName; - bool fAA; + sk_sp<SkXfermode> fXfermode; + 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(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) +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;) |