1 /*
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.
6  *
7  */
8 
9 #ifndef VisualBenchmarkStream_DEFINED
10 #define VisualBenchmarkStream_DEFINED
11 
12 #include "Benchmark.h"
13 #include "gm.h"
14 #include "SkCommandLineFlags.h"
15 #include "SkPicture.h"
16 
17 DECLARE_string(match);
18 
19 class VisualBenchmarkStream {
20 public:
21     VisualBenchmarkStream(const SkSurfaceProps&, bool justSKP = false);
22 
23     static bool ReadPicture(const char* path, SkAutoTUnref<SkPicture>* pic);
24 
25     Benchmark* next();
current()26     Benchmark* current() { return fBenchmark.get(); }
27 
28 private:
29     Benchmark* innerNext();
30 
31     SkSurfaceProps fSurfaceProps;
32     const BenchRegistry* fBenches;
33     const skiagm::GMRegistry* fGMs;
34     SkTArray<SkString> fSKPs;
35     SkAutoTUnref<Benchmark> fBenchmark;
36 
37     const char* fSourceType;  // What we're benching: bench, GM, SKP, ...
38     const char* fBenchType;   // How we bench it: micro, playback, ...
39     int fCurrentSKP;
40     bool fIsWarmedUp;
41 };
42 
43 #endif
44