2 * Copyright 2012 Google Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
8 #ifndef PictureBenchmark_DEFINED
9 #define PictureBenchmark_DEFINED
11 #include "PictureRenderer.h"
12 #include "PictureResultsWriter.h"
14 #include "TimerData.h"
21 class PictureBenchmark {
28 * Draw the provided SkPicture fRepeats times while collecting timing data, and log the output
31 void run(SkPicture* pict, bool useMultiPictureDraw);
33 void setRepeats(int repeats) {
38 * If true, tells run to log separate timing data for each individual tile. Each tile will be
39 * drawn fRepeats times. Requires the PictureRenderer set by setRenderer to be a
40 * TiledPictureRenderer.
42 void setTimeIndividualTiles(bool indiv) { fTimeIndividualTiles = indiv; }
43 bool timeIndividualTiles() const { return fTimeIndividualTiles; }
45 void setPurgeDecodedTex(bool purgeDecodedTex) { fPurgeDecodedTex = purgeDecodedTex; }
46 bool purgeDecodedText() const { return fPurgeDecodedTex; }
48 PictureRenderer* setRenderer(PictureRenderer*);
49 PictureRenderer* renderer() { return fRenderer; }
51 void setTimerResultType(TimerData::Result resultType) { fTimerResult = resultType; }
53 void setTimersToShow(bool wall, bool truncatedWall, bool cpu, bool truncatedCpu, bool gpu);
55 void setWriter(PictureResultsWriter* writer) { fWriter = writer; }
59 PictureRenderer* fRenderer;
60 TimerData::Result fTimerResult;
61 uint32_t fTimerTypes; // bitfield of TimerData::TimerFlags values
62 bool fTimeIndividualTiles;
63 bool fPurgeDecodedTex;
65 PictureResultsWriter* fWriter;
67 Timer* setupTimer(bool useGLTimer = true);
72 #endif // PictureBenchmark_DEFINED