diff options
Diffstat (limited to 'chromium/third_party/skia/tools/PictureBenchmark.h')
-rw-r--r-- | chromium/third_party/skia/tools/PictureBenchmark.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/chromium/third_party/skia/tools/PictureBenchmark.h b/chromium/third_party/skia/tools/PictureBenchmark.h new file mode 100644 index 00000000000..142d52685e0 --- /dev/null +++ b/chromium/third_party/skia/tools/PictureBenchmark.h @@ -0,0 +1,75 @@ +/* + * 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 BenchTimer; +class SkPicture; + +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; + + BenchTimer* setupTimer(bool useGLTimer = true); +}; + +} + +#endif // PictureBenchmark_DEFINED |