17f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett/* 27f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett * Copyright 2015 Google Inc. 37f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett * 47f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett * Use of this source code is governed by a BSD-style license that can be 57f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett * found in the LICENSE file. 67f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett */ 77f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett 87f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett#ifndef BitmapRegionDecoderBench_DEFINED 97f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett#define BitmapRegionDecoderBench_DEFINED 107f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett 117f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett#include "Benchmark.h" 125cb4885b4cd1ac5eb3fc92dac5f5509d7c810464msarett#include "SkBitmapRegionDecoder.h" 137f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett#include "SkData.h" 147f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett#include "SkImageInfo.h" 157f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett#include "SkRefCnt.h" 167f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett#include "SkString.h" 177f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett 187f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett/** 197f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett * Benchmark Android's BitmapRegionDecoder for a particular colorType, sampleSize, and subset. 207f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett * 217f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett * nanobench.cpp handles creating benchmarks for interesting scaled subsets. We strive to test 227f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett * on real use cases. 237f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett */ 247f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarettclass BitmapRegionDecoderBench : public Benchmark { 257f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarettpublic: 267f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett // Calls encoded->ref() 27d1227a7417922ce26252d55815d0d1e98f0eb070msarett BitmapRegionDecoderBench(const char* basename, SkData* encoded, SkColorType colorType, 287f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett uint32_t sampleSize, const SkIRect& subset); 297f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett 307f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarettprotected: 317f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett const char* onGetName() override; 327f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett bool isSuitableFor(Backend backend) override; 33a1ebeb25e9acfcd801e089e063311d716b83b8a5mtklein void onDraw(int n, SkCanvas* canvas) override; 348a6697af95b340aad6dee7e6228048fa305c1e59joshualitt void onDelayedSetup() override; 357f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett 367f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarettprivate: 377f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett SkString fName; 38145dbcd165d9d27298eb8888bc240e2d06a95464Ben Wagner std::unique_ptr<SkBitmapRegionDecoder> fBRD; 39ffae30db4ade45b469ac3432ec373b6f6daee6e7bungeman sk_sp<SkData> fData; 407f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett const SkColorType fColorType; 417f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett const uint32_t fSampleSize; 427f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett const SkIRect fSubset; 437f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett typedef Benchmark INHERITED; 447f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett}; 457f69144aaabbedf51ad2a1feddc9e0689f2c5ee9msarett#endif // BitmapRegionDecoderBench_DEFINED 46