diff options
author | mtklein <mtklein@chromium.org> | 2016-01-08 06:32:52 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-08 06:32:52 -0800 |
commit | 55c86abedc7dcc76f5f04a256e46bb3bb065b2cb (patch) | |
tree | a9e615f5405cda747c22b663e7ae90c57898a919 /bench/SwizzleBench.cpp | |
parent | 06dd0a8222cc97236a2d20d563e27995983e6e0c (diff) |
test+bench new swizzle SkOpts
BUG=skia:skia:4767
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1564233002
Review URL: https://codereview.chromium.org/1564233002
Diffstat (limited to 'bench/SwizzleBench.cpp')
-rw-r--r-- | bench/SwizzleBench.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/bench/SwizzleBench.cpp b/bench/SwizzleBench.cpp new file mode 100644 index 0000000000..13b2003f9a --- /dev/null +++ b/bench/SwizzleBench.cpp @@ -0,0 +1,32 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "Benchmark.h" +#include "SkOpts.h" + +class SwizzleBench : public Benchmark { +public: + SwizzleBench(const char* name, SkOpts::Swizzle_8888_8888 fn) : fName(name), fFn(fn) {} + + bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; } + const char* onGetName() override { return fName; } + void onDraw(int loops, SkCanvas*) override { + static const int K = 1023; // Arbitrary, but nice to be a non-power-of-two to trip up SIMD. + uint32_t dst[K], src[K]; + while (loops --> 0) { + fFn(dst, src, K); + } + } +private: + const char* fName; + SkOpts::Swizzle_8888_8888 fFn; +}; + + +DEF_BENCH(return new SwizzleBench("SkOpts::premul_xxxa", SkOpts::premul_xxxa)); +DEF_BENCH(return new SwizzleBench("SkOpts::swaprb_xxxa", SkOpts::swaprb_xxxa)); +DEF_BENCH(return new SwizzleBench("SkOpts::premul_swaprb_xxxa", SkOpts::premul_swaprb_xxxa)); |