blob: 4f4d55e0605c167c8b0c66ea2c5756d3c559fbac [file] [log] [blame]
msarett7f691442015-09-22 11:56:16 -07001/*
2 * Copyright 2015 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#ifndef BitmapRegionDecoderBench_DEFINED
9#define BitmapRegionDecoderBench_DEFINED
10
11#include "Benchmark.h"
12#include "SkBitmapRegionDecoderInterface.h"
13#include "SkData.h"
14#include "SkImageInfo.h"
15#include "SkRefCnt.h"
16#include "SkString.h"
17
18/**
19 * Benchmark Android's BitmapRegionDecoder for a particular colorType, sampleSize, and subset.
20 *
21 * fStrategy determines which of various implementations is to be used.
22 *
23 * nanobench.cpp handles creating benchmarks for interesting scaled subsets. We strive to test
24 * on real use cases.
25 */
26class BitmapRegionDecoderBench : public Benchmark {
27public:
28 // Calls encoded->ref()
29 BitmapRegionDecoderBench(const char* basename, SkData* encoded,
30 SkBitmapRegionDecoderInterface::Strategy strategy, SkColorType colorType,
31 uint32_t sampleSize, const SkIRect& subset);
32
33protected:
34 const char* onGetName() override;
35 bool isSuitableFor(Backend backend) override;
36 void onDraw(const int n, SkCanvas* canvas) override;
joshualitt8a6697a2015-09-30 12:11:07 -070037 void onDelayedSetup() override;
msarett7f691442015-09-22 11:56:16 -070038
39private:
40 SkString fName;
41 SkAutoTDelete<SkBitmapRegionDecoderInterface> fBRD;
42 SkAutoTUnref<SkData> fData;
43 const SkBitmapRegionDecoderInterface::Strategy fStrategy;
44 const SkColorType fColorType;
45 const uint32_t fSampleSize;
46 const SkIRect fSubset;
47 typedef Benchmark INHERITED;
48};
49#endif // BitmapRegionDecoderBench_DEFINED