blob: 7618ff2a11cc288c1917e16db84597c53ed4b3f4 [file] [log] [blame]
joshualitt189aef72015-09-08 07:08:11 -07001/*
2 * Copyright 2015 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.
joshualitt189aef72015-09-08 07:08:11 -07006 */
7
8#ifndef VisualLightweightBenchModule_DEFINED
9#define VisualLightweightBenchModule_DEFINED
10
joshualittd0f0bce2015-10-14 07:49:28 -070011#include "VisualStreamTimingModule.h"
joshualitt189aef72015-09-08 07:08:11 -070012
13#include "ResultsWriter.h"
14#include "SkPicture.h"
joshualitt189aef72015-09-08 07:08:11 -070015#include "VisualBench.h"
joshualitt189aef72015-09-08 07:08:11 -070016
17class SkCanvas;
18
19/*
20 * This module is designed to be a minimal overhead timing module for VisualBench
21 */
joshualittd0f0bce2015-10-14 07:49:28 -070022class VisualLightweightBenchModule : public VisualStreamTimingModule {
joshualitt189aef72015-09-08 07:08:11 -070023public:
24 // TODO get rid of backpointer
25 VisualLightweightBenchModule(VisualBench* owner);
26
jvanverthf5d1b2d2015-09-15 07:40:56 -070027 bool onHandleChar(SkUnichar c) override;
28
joshualitt189aef72015-09-08 07:08:11 -070029private:
joshualittd0f0bce2015-10-14 07:49:28 -070030 void renderFrame(SkCanvas*, Benchmark*, int loops) override;
31 bool timingFinished(Benchmark*, int loops, double measurement) override;
32 void printStats(Benchmark*, int loops);
joshualitt189aef72015-09-08 07:08:11 -070033
34 struct Record {
35 SkTArray<double> fMeasurements;
36 };
joshualitt189aef72015-09-08 07:08:11 -070037 int fCurrentSample;
joshualitt189aef72015-09-08 07:08:11 -070038 SkTArray<Record> fRecords;
joshualitt189aef72015-09-08 07:08:11 -070039
40 // support framework
joshualitt189aef72015-09-08 07:08:11 -070041 SkAutoTDelete<ResultsWriter> fResults;
42
joshualittd0f0bce2015-10-14 07:49:28 -070043 typedef VisualStreamTimingModule INHERITED;
joshualitt189aef72015-09-08 07:08:11 -070044};
45
46#endif