summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/tools/PictureBenchmark.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/tools/PictureBenchmark.h')
-rw-r--r--chromium/third_party/skia/tools/PictureBenchmark.h75
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