diff options
author | 2016-02-03 09:47:46 -0800 | |
---|---|---|
committer | 2016-02-03 09:47:46 -0800 | |
commit | ef5252e48ff6c5ed2b53b87333b7ed716c8b9035 (patch) | |
tree | 10ab03edaa080ed511ea74889850c0f1a26d561a /bench/Xfer4fBench.cpp | |
parent | afb188de27d047c8327ccc7b099203e8fc2a4129 (diff) |
extend gm to test aa[] parameter on xfer4f procs
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1663643002
Review URL: https://codereview.chromium.org/1663643002
Diffstat (limited to 'bench/Xfer4fBench.cpp')
-rw-r--r-- | bench/Xfer4fBench.cpp | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/bench/Xfer4fBench.cpp b/bench/Xfer4fBench.cpp index 9c1b419ba5..6b6bbc8d23 100644 --- a/bench/Xfer4fBench.cpp +++ b/bench/Xfer4fBench.cpp @@ -10,6 +10,8 @@ #include "SkString.h" #include "SkXfermode.h" +#define USE_AA (1 << 31) // merge with Xfermode::PMFlags w/o conflict + #define INNER_LOOPS 1000 // Benchmark that draws non-AA rects or AA text with an SkXfermode::Mode. @@ -17,17 +19,27 @@ class Xfer4fBench : public Benchmark { public: Xfer4fBench(SkXfermode::Mode mode, const char name[], bool doN, uint32_t flags) : fDoN(doN) - , fFlags(flags) + , fFlags(flags & ~USE_AA) { - fProc1 = SkXfermode::GetPM4fProc1(mode, flags); - fProcN = SkXfermode::GetPM4fProcN(mode, flags); - fName.printf("xfer4f_%s_%c_%s_%s", name, fDoN ? 'N' : '1', + fProc1 = SkXfermode::GetPM4fProc1(mode, fFlags); + fProcN = SkXfermode::GetPM4fProcN(mode, fFlags); + fName.printf("xfer4f_%s_%s_%c_%s_%s", + name, + (flags & USE_AA) ? "aa" : "bw", + fDoN ? 'N' : '1', (flags & SkXfermode::kSrcIsOpaque_PM4fFlag) ? "opaque" : "alpha", (flags & SkXfermode::kDstIsSRGB_PM4fFlag) ? "srgb" : "linear"); for (int i = 0; i < N; ++i) { fSrc[i] = {{ 1, 1, 1, 1 }}; fDst[i] = 0; + fAAStorage[i] = i * 255 / (N - 1); + } + + if (flags & USE_AA) { + fAA = fAAStorage; + } else { + fAA = nullptr; } } @@ -38,13 +50,12 @@ protected: void onDraw(int loops, SkCanvas*) override { const SkXfermode::PM4fState state{ nullptr, fFlags }; - const uint8_t* aa = nullptr; for (int i = 0; i < loops * INNER_LOOPS; ++i) { if (fDoN) { - fProcN(state, fDst, fSrc, N, aa); + fProcN(state, fDst, fSrc, N, fAA); } else { - fProc1(state, fDst, fSrc[0], N, aa); + fProc1(state, fDst, fSrc[0], N, fAA); } } } @@ -53,6 +64,7 @@ private: SkString fName; SkXfermode::PM4fProc1 fProc1; SkXfermode::PM4fProcN fProcN; + const SkAlpha* fAA; bool fDoN; uint32_t fFlags; @@ -61,6 +73,7 @@ private: }; SkPM4f fSrc[N]; SkPMColor fDst[N]; + uint8_t fAAStorage[N]; typedef Benchmark INHERITED; }; @@ -79,3 +92,13 @@ DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", true, F DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", true, F00); ) DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", true, F11); ) DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", true, F01); ) + +DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", false, F10 | USE_AA); ) +DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", false, F00 | USE_AA); ) +DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", false, F11 | USE_AA); ) +DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", false, F01 | USE_AA); ) + +DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", true, F10 | USE_AA); ) +DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", true, F00 | USE_AA); ) +DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", true, F11 | USE_AA); ) +DEF_BENCH( return new Xfer4fBench(SkXfermode::kSrcOver_Mode, "srcover", true, F01 | USE_AA); ) |