blob: ba8c0839d7ac3ec7e3895df24712f4b5450c7fbf [file] [log] [blame]
Mike Reed90155ed2019-03-16 11:46:36 -04001/*
2 * Copyright 2019 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
10#include "SkCanvas.h"
11#include "SkMixer.h"
12#include "SkPaint.h"
13#include "SkShader.h"
14
15class MixerLerpBench : public Benchmark {
16public:
17 MixerLerpBench() {}
18
19protected:
20 const char* onGetName() override { return "mixer-lerp"; }
21
22 void onDelayedSetup() override {
23 auto s0 = SkShader::MakeColorShader(SK_ColorRED);
24 auto s1 = SkShader::MakeColorShader(SK_ColorBLUE);
25 auto mx = SkMixer::MakeShaderLerp(SkShader::MakeColorShader(0xFF880000));
26 fShader = SkShader::MakeMixer(s0, s1, mx);
27 }
28
29 void onDraw(int loops, SkCanvas* canvas) override {
30 const SkRect r = {0, 0, 256, 256};
31 SkPaint paint;
32 paint.setShader(fShader);
33 for (int j = 0; j < 100; ++j) {
34 for (int i = 0; i < loops; i++) {
35 canvas->drawRect(r, paint);
36 }
37 }
38 }
39
40private:
41 sk_sp<SkShader> fShader;
42 typedef Benchmark INHERITED;
43};
44DEF_BENCH( return new MixerLerpBench; )