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