/* * 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