• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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
10 
11 #include "SkTypes.h"
12 #include "PictureRenderer.h"
13 #include "TimerData.h"
14 
15 class BenchTimer;
16 class SkBenchLogger;
17 class SkPicture;
18 class SkString;
19 
20 namespace sk_tools {
21 
22 class PictureBenchmark {
23 public:
24     PictureBenchmark();
25 
26     ~PictureBenchmark();
27 
28     /**
29      * Draw the provided SkPicture fRepeats times while collecting timing data, and log the output
30      * via fLogger.
31      */
32     void run(SkPicture* pict);
33 
setRepeats(int repeats)34     void setRepeats(int repeats) {
35         fRepeats = repeats;
36     }
37 
38     /**
39      * If true, tells run to log separate timing data for each individual tile. Each tile will be
40      * drawn fRepeats times. Requires the PictureRenderer set by setRenderer to be a
41      * TiledPictureRenderer.
42      */
setTimeIndividualTiles(bool indiv)43     void setTimeIndividualTiles(bool indiv) { fTimeIndividualTiles = indiv; }
44 
timeIndividualTiles()45     bool timeIndividualTiles() { return fTimeIndividualTiles; }
46 
47     PictureRenderer* setRenderer(PictureRenderer*);
48 
setTimerResultType(TimerData::Result resultType)49     void setTimerResultType(TimerData::Result resultType) { fTimerResult = resultType; }
50 
51     void setTimersToShow(bool wall, bool truncatedWall, bool cpu, bool truncatedCpu, bool gpu);
52 
setLogger(SkBenchLogger * logger)53     void setLogger(SkBenchLogger* logger) { fLogger = logger; }
54 
55 private:
56     int               fRepeats;
57     SkBenchLogger*    fLogger;
58     PictureRenderer*  fRenderer;
59     TimerData::Result fTimerResult;
60     uint32_t          fTimerTypes; // bitfield of TimerData::TimerFlags values
61     bool              fTimeIndividualTiles;
62 
63     void logProgress(const char msg[]);
64 
65     BenchTimer* setupTimer(bool useGLTimer = true);
66 };
67 
68 }
69 
70 #endif  // PictureBenchmark_DEFINED
71