| /* |
| * Copyright 2012 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef PictureBenchmark_DEFINED |
| #define PictureBenchmark_DEFINED |
| |
| #include "PictureRenderer.h" |
| #include "PictureResultsWriter.h" |
| #include "SkTypes.h" |
| #include "TimerData.h" |
| |
| class SkPicture; |
| class Timer; |
| |
| namespace sk_tools { |
| |
| class PictureBenchmark { |
| public: |
| PictureBenchmark(); |
| |
| ~PictureBenchmark(); |
| |
| /** |
| * Draw the provided SkPicture fRepeats times while collecting timing data, and log the output |
| * via fWriter. |
| */ |
| void run(SkPicture* pict); |
| |
| void setRepeats(int repeats) { |
| fRepeats = repeats; |
| } |
| |
| /** |
| * If true, tells run to log separate timing data for each individual tile. Each tile will be |
| * drawn fRepeats times. Requires the PictureRenderer set by setRenderer to be a |
| * TiledPictureRenderer. |
| */ |
| void setTimeIndividualTiles(bool indiv) { fTimeIndividualTiles = indiv; } |
| bool timeIndividualTiles() const { return fTimeIndividualTiles; } |
| |
| void setPurgeDecodedTex(bool purgeDecodedTex) { fPurgeDecodedTex = purgeDecodedTex; } |
| bool purgeDecodedText() const { return fPurgeDecodedTex; } |
| |
| void setPreprocess(bool preprocess) { fPreprocess = preprocess; } |
| bool preprocess() const { return fPreprocess; } |
| |
| PictureRenderer* setRenderer(PictureRenderer*); |
| |
| void setTimerResultType(TimerData::Result resultType) { fTimerResult = resultType; } |
| |
| void setTimersToShow(bool wall, bool truncatedWall, bool cpu, bool truncatedCpu, bool gpu); |
| |
| void setWriter(PictureResultsWriter* writer) { fWriter = writer; } |
| |
| private: |
| int fRepeats; |
| PictureRenderer* fRenderer; |
| TimerData::Result fTimerResult; |
| uint32_t fTimerTypes; // bitfield of TimerData::TimerFlags values |
| bool fTimeIndividualTiles; |
| bool fPurgeDecodedTex; |
| bool fPreprocess; |
| |
| PictureResultsWriter* fWriter; |
| |
| Timer* setupTimer(bool useGLTimer = true); |
| }; |
| |
| } |
| |
| #endif // PictureBenchmark_DEFINED |