OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright 2016 Google Inc. |
| 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. |
| 6 */ |
| 7 |
| 8 #include "Benchmark.h" |
| 9 #include "SkOpts.h" |
| 10 |
| 11 class SwizzleBench : public Benchmark { |
| 12 public: |
| 13 SwizzleBench(const char* name, SkOpts::Swizzle_8888_8888 fn) : fName(name),
fFn(fn) {} |
| 14 |
| 15 bool isSuitableFor(Backend backend) override { return backend == kNonRenderi
ng_Backend; } |
| 16 const char* onGetName() override { return fName; } |
| 17 void onDraw(int loops, SkCanvas*) override { |
| 18 static const int K = 1023; // Arbitrary, but nice to be a non-power-of-t
wo to trip up SIMD. |
| 19 uint32_t dst[K], src[K]; |
| 20 while (loops --> 0) { |
| 21 fFn(dst, src, K); |
| 22 } |
| 23 } |
| 24 private: |
| 25 const char* fName; |
| 26 SkOpts::Swizzle_8888_8888 fFn; |
| 27 }; |
| 28 |
| 29 |
| 30 DEF_BENCH(return new SwizzleBench("SkOpts::premul_xxxa", SkOpts::premul_xxxa)); |
| 31 DEF_BENCH(return new SwizzleBench("SkOpts::swaprb_xxxa", SkOpts::swaprb_xxxa)); |
| 32 DEF_BENCH(return new SwizzleBench("SkOpts::premul_swaprb_xxxa", SkOpts::premul_s
waprb_xxxa)); |
OLD | NEW |