Index: bench/BitmapRegionDecoderBench.h |
diff --git a/bench/BitmapRegionDecoderBench.h b/bench/BitmapRegionDecoderBench.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7be770f472e28768adec8aa43d2dd17d8202b7cd |
--- /dev/null |
+++ b/bench/BitmapRegionDecoderBench.h |
@@ -0,0 +1,49 @@ |
+/* |
+ * Copyright 2015 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef BitmapRegionDecoderBench_DEFINED |
+#define BitmapRegionDecoderBench_DEFINED |
+ |
+#include "Benchmark.h" |
+#include "SkBitmapRegionDecoderInterface.h" |
+#include "SkData.h" |
+#include "SkImageInfo.h" |
+#include "SkRefCnt.h" |
+#include "SkString.h" |
+ |
+/** |
+ * Benchmark Android's BitmapRegionDecoder for a particular colorType, sampleSize, and subset. |
+ * |
+ * fStrategy determines which of various implementations is to be used. |
+ * |
+ * nanobench.cpp handles creating benchmarks for interesting scaled subsets. We strive to test |
+ * on real use cases. |
+ */ |
+class BitmapRegionDecoderBench : public Benchmark { |
+public: |
+ // Calls encoded->ref() |
+ BitmapRegionDecoderBench(const char* basename, SkData* encoded, |
+ SkBitmapRegionDecoderInterface::Strategy strategy, SkColorType colorType, |
+ uint32_t sampleSize, const SkIRect& subset); |
+ |
+protected: |
+ const char* onGetName() override; |
+ bool isSuitableFor(Backend backend) override; |
+ void onDraw(const int n, SkCanvas* canvas) override; |
+ void onPreDraw() override; |
+ |
+private: |
+ SkString fName; |
+ SkAutoTDelete<SkBitmapRegionDecoderInterface> fBRD; |
+ SkAutoTUnref<SkData> fData; |
+ const SkBitmapRegionDecoderInterface::Strategy fStrategy; |
+ const SkColorType fColorType; |
+ const uint32_t fSampleSize; |
+ const SkIRect fSubset; |
+ typedef Benchmark INHERITED; |
+}; |
+#endif // BitmapRegionDecoderBench_DEFINED |