Report data from bench_pictures in the same fashion as bench.
Move SkBenchLogger into separate files and make bench_pictures use it.
Remove sk_tools::print_msg, since SkBenchLogger is now used instead.
Combine picture_benchmark with bench_pictures, since that is the
only project that uses it.
Refactor the aggregator for bench timer data into its own class and
make bench_pictures use it.
Consolidate the various virtual PictureBenchmark::run functions
into one for reuse.
BUG=https://code.google.com/p/skia/issues/detail?id=822
Review URL: https://codereview.appspot.com/6488086
git-svn-id: http://skia.googlecode.com/svn/trunk@5432 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/PictureBenchmark.h b/tools/PictureBenchmark.h
index 2a14ea2..c3767e1 100644
--- a/tools/PictureBenchmark.h
+++ b/tools/PictureBenchmark.h
@@ -12,6 +12,7 @@
#include "PictureRenderer.h"
class BenchTimer;
+class SkBenchLogger;
class SkPicture;
class SkString;
@@ -19,16 +20,16 @@
class PictureBenchmark : public SkRefCnt {
public:
- virtual void run(SkPicture* pict) = 0;
+ PictureBenchmark()
+ : fRepeats(1)
+ , fLogger(NULL) {}
+
+ void run(SkPicture* pict);
void setRepeats(int repeats) {
fRepeats = repeats;
}
- int getRepeats() const {
- return fRepeats;
- }
-
void setDeviceType(PictureRenderer::SkDeviceTypes deviceType) {
sk_tools::PictureRenderer* renderer = getRenderer();
@@ -37,54 +38,58 @@
}
}
+ void setLogger(SkBenchLogger* logger) { fLogger = logger; }
+
+private:
+ int fRepeats;
+ SkBenchLogger* fLogger;
+
+ void logProgress(const char msg[]);
+
+ virtual sk_tools::PictureRenderer* getRenderer() = 0;
+
BenchTimer* setupTimer();
-protected:
- int fRepeats;
-
-private:
typedef SkRefCnt INHERITED;
-
- virtual sk_tools::PictureRenderer* getRenderer() {
- return NULL;
- }
};
+// TODO: Use just one PictureBenchmark with different renderers.
+
class PipePictureBenchmark : public PictureBenchmark {
-public:
- virtual void run(SkPicture* pict) SK_OVERRIDE;
private:
PipePictureRenderer fRenderer;
- typedef PictureBenchmark INHERITED;
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
return &fRenderer;
}
+
+ typedef PictureBenchmark INHERITED;
};
class RecordPictureBenchmark : public PictureBenchmark {
-public:
- virtual void run(SkPicture* pict) SK_OVERRIDE;
private:
+ RecordPictureRenderer fRenderer;
+
+ virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
+ return &fRenderer;
+ }
+
typedef PictureBenchmark INHERITED;
};
class SimplePictureBenchmark : public PictureBenchmark {
-public:
- virtual void run(SkPicture* pict) SK_OVERRIDE;
private:
SimplePictureRenderer fRenderer;
- typedef PictureBenchmark INHERITED;
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
return &fRenderer;
}
+
+ typedef PictureBenchmark INHERITED;
};
class TiledPictureBenchmark : public PictureBenchmark {
public:
- virtual void run(SkPicture* pict) SK_OVERRIDE;
-
void setTileWidth(int width) {
fRenderer.setTileWidth(width);
}
@@ -135,17 +140,22 @@
private:
TiledPictureRenderer fRenderer;
- typedef PictureBenchmark INHERITED;
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
return &fRenderer;
}
+
+ typedef PictureBenchmark INHERITED;
};
-class UnflattenPictureBenchmark : public PictureBenchmark {
-public:
- virtual void run(SkPicture* pict) SK_OVERRIDE;
+class PlaybackCreationBenchmark : public PictureBenchmark {
private:
+ PlaybackCreationRenderer fRenderer;
+
+ virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
+ return &fRenderer;
+ }
+
typedef PictureBenchmark INHERITED;
};