blob: 0ab5ff9bf1a7e97415448163744bc68ab8c97bd2 [file] [log] [blame]
keyar@chromium.org163b5672012-08-01 17:53:29 +00001/*
2 * Copyright 2012 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 PictureBenchmark_DEFINED
9#define PictureBenchmark_DEFINED
scroggo@google.com5239c322012-09-11 19:15:32 +000010
keyar@chromium.org163b5672012-08-01 17:53:29 +000011#include "SkTypes.h"
keyar@chromium.org163b5672012-08-01 17:53:29 +000012#include "PictureRenderer.h"
13
keyar@chromium.org77a55222012-08-20 15:03:47 +000014class BenchTimer;
scroggo@google.com9a412522012-09-07 15:21:18 +000015class SkBenchLogger;
keyar@chromium.org163b5672012-08-01 17:53:29 +000016class SkPicture;
17class SkString;
18
19namespace sk_tools {
20
scroggo@google.com5239c322012-09-11 19:15:32 +000021class PictureBenchmark {
keyar@chromium.org163b5672012-08-01 17:53:29 +000022public:
scroggo@google.com5239c322012-09-11 19:15:32 +000023 PictureBenchmark();
24
25 ~PictureBenchmark();
scroggo@google.com9a412522012-09-07 15:21:18 +000026
27 void run(SkPicture* pict);
keyar@chromium.org163b5672012-08-01 17:53:29 +000028
29 void setRepeats(int repeats) {
30 fRepeats = repeats;
31 }
32
scroggo@google.com5239c322012-09-11 19:15:32 +000033 PictureRenderer* setRenderer(PictureRenderer*);
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000034
scroggo@google.com5239c322012-09-11 19:15:32 +000035 void setDeviceType(PictureRenderer::SkDeviceTypes deviceType) {
36 if (fRenderer != NULL) {
37 fRenderer->setDeviceType(deviceType);
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000038 }
39 }
40
scroggo@google.com5239c322012-09-11 19:15:32 +000041 void setLogPerIter(bool log) { fLogPerIter = log; }
42
43 void setPrintMin(bool min) { fPrintMin = min; }
44
45 void setTimersToShow(bool wall, bool truncatedWall, bool cpu, bool truncatedCpu, bool gpu) {
46 fShowWallTime = wall;
47 fShowTruncatedWallTime = truncatedWall;
48 fShowCpuTime = cpu;
49 fShowTruncatedCpuTime = truncatedCpu;
50 fShowGpuTime = gpu;
51 }
52
scroggo@google.com9a412522012-09-07 15:21:18 +000053 void setLogger(SkBenchLogger* logger) { fLogger = logger; }
54
55private:
scroggo@google.com5239c322012-09-11 19:15:32 +000056 int fRepeats;
57 SkBenchLogger* fLogger;
58 PictureRenderer* fRenderer;
59 bool fLogPerIter;
60 bool fPrintMin;
61 bool fShowWallTime;
62 bool fShowTruncatedWallTime;
63 bool fShowCpuTime;
64 bool fShowTruncatedCpuTime;
65 bool fShowGpuTime;
scroggo@google.com9a412522012-09-07 15:21:18 +000066
67 void logProgress(const char msg[]);
68
keyar@chromium.org77a55222012-08-20 15:03:47 +000069 BenchTimer* setupTimer();
keyar@chromium.org163b5672012-08-01 17:53:29 +000070};
71
72}
73
74#endif // PictureBenchmark_DEFINED