blob: b03f8980cd1d89437f4f3f6d047b28089b13635b [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
tfarinaf168b862014-06-19 12:32:29 -07008#include "Benchmark.h"
reed@android.come9d00602009-09-02 21:12:42 +00009#include "SkBitmap.h"
mtklein@google.comc2897432013-09-10 19:23:38 +000010#include "SkCommandLineFlags.h"
reed@android.come9d00602009-09-02 21:12:42 +000011#include "SkImageDecoder.h"
commit-bot@chromium.org63822632014-02-20 15:41:17 +000012#include "SkOSFile.h"
reed@android.come9d00602009-09-02 21:12:42 +000013#include "SkString.h"
reedbfefc7c2014-06-12 17:40:00 -070014#include "sk_tool_utils.h"
reed@android.come9d00602009-09-02 21:12:42 +000015
mtklein@google.comc2897432013-09-10 19:23:38 +000016DEFINE_string(decodeBenchFilename, "resources/CMYK.jpeg", "Path to image for DecodeBench.");
17
tfarinaf168b862014-06-19 12:32:29 -070018class DecodeBench : public Benchmark {
reedbfefc7c2014-06-12 17:40:00 -070019 const SkColorType fPrefColorType;
20 SkString fName;
reed@android.come9d00602009-09-02 21:12:42 +000021public:
reedbfefc7c2014-06-12 17:40:00 -070022 DecodeBench(SkColorType ct) : fPrefColorType(ct) {
tfarinaa8e2e152014-07-28 19:26:58 -070023 SkString fname = SkOSPath::Basename(FLAGS_decodeBenchFilename[0]);
reedbfefc7c2014-06-12 17:40:00 -070024 fName.printf("decode_%s_%s", sk_tool_utils::colortype_name(ct), fname.c_str());
commit-bot@chromium.org644629c2013-11-21 06:21:58 +000025 }
26
27 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE {
28 return backend == kNonRendering_Backend;
reed@android.come9d00602009-09-02 21:12:42 +000029 }
30
31protected:
32 virtual const char* onGetName() {
33 return fName.c_str();
34 }
35
commit-bot@chromium.org33614712013-12-03 18:17:16 +000036 virtual void onDraw(const int loops, SkCanvas*) {
37 for (int i = 0; i < loops; i++) {
mtklein@google.comc2897432013-09-10 19:23:38 +000038 SkBitmap bm;
reedbfefc7c2014-06-12 17:40:00 -070039 SkImageDecoder::DecodeFile(FLAGS_decodeBenchFilename[0], &bm, fPrefColorType,
mtklein@google.comc2897432013-09-10 19:23:38 +000040 SkImageDecoder::kDecodePixels_Mode);
reed@android.come9d00602009-09-02 21:12:42 +000041 }
42 }
43
44private:
tfarinaf168b862014-06-19 12:32:29 -070045 typedef Benchmark INHERITED;
reed@android.come9d00602009-09-02 21:12:42 +000046};
47
reedbfefc7c2014-06-12 17:40:00 -070048DEF_BENCH( return new DecodeBench(kN32_SkColorType); )
49DEF_BENCH( return new DecodeBench(kRGB_565_SkColorType); )
50DEF_BENCH( return new DecodeBench(kARGB_4444_SkColorType); )