Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / bench / PremulAndUnpremulAlphaOpsBench.cpp
1 /*
2  * Copyright 2013 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 "bench/Benchmark.h"
9 #include "include/core/SkBitmap.h"
10 #include "include/core/SkCanvas.h"
11 #include "include/core/SkString.h"
12 #include "tools/ToolUtils.h"
13
14 class PremulAndUnpremulAlphaOpsBench : public Benchmark {
15     enum {
16         W = 256,
17         H = 256,
18     };
19     SkBitmap fBmp1, fBmp2;
20
21 public:
22     PremulAndUnpremulAlphaOpsBench(SkColorType ct) {
23         fColorType = ct;
24         fName.printf("premul_and_unpremul_alpha_%s", ToolUtils::colortype_name(ct));
25     }
26
27 protected:
28     const char* onGetName() override {
29         return fName.c_str();
30     }
31
32     void onDelayedSetup() override {
33         SkImageInfo info = SkImageInfo::Make(W, H, fColorType, kUnpremul_SkAlphaType);
34         fBmp1.allocPixels(info);   // used in writePixels
35
36         for (int h = 0; h < H; ++h) {
37             for (int w = 0; w < W; ++w) {
38                 // SkColor places A in the right slot for either RGBA or BGRA
39                 *fBmp1.getAddr32(w, h) = SkColorSetARGB(h & 0xFF, w & 0xFF, w & 0xFF, w & 0xFF);
40             }
41         }
42
43         fBmp2.allocPixels(info);    // used in readPixels()
44     }
45
46     void onDraw(int loops, SkCanvas* canvas) override {
47         canvas->clear(SK_ColorBLACK);
48
49         for (int loop = 0; loop < loops; ++loop) {
50             // Unpremul -> Premul
51             canvas->writePixels(fBmp1.info(), fBmp1.getPixels(), fBmp1.rowBytes(), 0, 0);
52             // Premul -> Unpremul
53             canvas->readPixels(fBmp2.info(), fBmp2.getPixels(), fBmp2.rowBytes(), 0, 0);
54         }
55     }
56
57 private:
58     SkColorType fColorType;
59     SkString fName;
60
61     using INHERITED = Benchmark;
62 };
63
64
65 DEF_BENCH(return new PremulAndUnpremulAlphaOpsBench(kRGBA_8888_SkColorType));
66 DEF_BENCH(return new PremulAndUnpremulAlphaOpsBench(kBGRA_8888_SkColorType));