Home | History | Annotate | Download | only in bench
      1 /*
      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 "SkBitmapRegionDecoder.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  */
     26 class BitmapRegionDecoderBench : public Benchmark {
     27 public:
     28     // Calls encoded->ref()
     29     BitmapRegionDecoderBench(const char* basename, SkData* encoded,
     30             SkBitmapRegionDecoder::Strategy strategy, SkColorType colorType,
     31             uint32_t sampleSize, const SkIRect& subset);
     32 
     33 protected:
     34     const char* onGetName() override;
     35     bool isSuitableFor(Backend backend) override;
     36     void onDraw(int n, SkCanvas* canvas) override;
     37     void onDelayedSetup() override;
     38 
     39 private:
     40     SkString                                       fName;
     41     SkAutoTDelete<SkBitmapRegionDecoder>           fBRD;
     42     SkAutoTUnref<SkData>                           fData;
     43     const SkBitmapRegionDecoder::Strategy          fStrategy;
     44     const SkColorType                              fColorType;
     45     const uint32_t                                 fSampleSize;
     46     const SkIRect                                  fSubset;
     47     typedef Benchmark INHERITED;
     48 };
     49 #endif // BitmapRegionDecoderBench_DEFINED
     50