1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h" 9e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com#include "SkBitmap.h" 10c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com#include "SkCommandLineFlags.h" 11e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com#include "SkImageDecoder.h" 1263822639e47d08248b8f581ee707bd062bb85feecommit-bot@chromium.org#include "SkOSFile.h" 13e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com#include "SkString.h" 14bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereed#include "sk_tool_utils.h" 15e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com 16c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.comDEFINE_string(decodeBenchFilename, "resources/CMYK.jpeg", "Path to image for DecodeBench."); 17c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com 18f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass DecodeBench : public Benchmark { 19bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereed const SkColorType fPrefColorType; 20bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereed SkString fName; 21e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.compublic: 22bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereed DecodeBench(SkColorType ct) : fPrefColorType(ct) { 23a8e2e1504b9af6ba791637f228debaa23953064atfarina SkString fname = SkOSPath::Basename(FLAGS_decodeBenchFilename[0]); 24bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereed fName.printf("decode_%s_%s", sk_tool_utils::colortype_name(ct), fname.c_str()); 25644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org } 26644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org 27644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { 28644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org return backend == kNonRendering_Backend; 29e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com } 30e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com 31e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comprotected: 32e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com virtual const char* onGetName() { 33e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com return fName.c_str(); 34e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com } 35e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com 363361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org virtual void onDraw(const int loops, SkCanvas*) { 373361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org for (int i = 0; i < loops; i++) { 38c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com SkBitmap bm; 39bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereed SkImageDecoder::DecodeFile(FLAGS_decodeBenchFilename[0], &bm, fPrefColorType, 40c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com SkImageDecoder::kDecodePixels_Mode); 41e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com } 42e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com } 43e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com 44e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comprivate: 45f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina typedef Benchmark INHERITED; 46e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com}; 47e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com 48bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereedDEF_BENCH( return new DecodeBench(kN32_SkColorType); ) 49bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereedDEF_BENCH( return new DecodeBench(kRGB_565_SkColorType); ) 50bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereedDEF_BENCH( return new DecodeBench(kARGB_4444_SkColorType); ) 51