9a4125283a
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
165 lines
3.5 KiB
C++
165 lines
3.5 KiB
C++
/*
|
|
* 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 "SkTypes.h"
|
|
#include "SkRefCnt.h"
|
|
#include "PictureRenderer.h"
|
|
|
|
class BenchTimer;
|
|
class SkBenchLogger;
|
|
class SkPicture;
|
|
class SkString;
|
|
|
|
namespace sk_tools {
|
|
|
|
class PictureBenchmark : public SkRefCnt {
|
|
public:
|
|
PictureBenchmark()
|
|
: fRepeats(1)
|
|
, fLogger(NULL) {}
|
|
|
|
void run(SkPicture* pict);
|
|
|
|
void setRepeats(int repeats) {
|
|
fRepeats = repeats;
|
|
}
|
|
|
|
void setDeviceType(PictureRenderer::SkDeviceTypes deviceType) {
|
|
sk_tools::PictureRenderer* renderer = getRenderer();
|
|
|
|
if (renderer != NULL) {
|
|
renderer->setDeviceType(deviceType);
|
|
}
|
|
}
|
|
|
|
void setLogger(SkBenchLogger* logger) { fLogger = logger; }
|
|
|
|
private:
|
|
int fRepeats;
|
|
SkBenchLogger* fLogger;
|
|
|
|
void logProgress(const char msg[]);
|
|
|
|
virtual sk_tools::PictureRenderer* getRenderer() = 0;
|
|
|
|
BenchTimer* setupTimer();
|
|
|
|
typedef SkRefCnt INHERITED;
|
|
};
|
|
|
|
// TODO: Use just one PictureBenchmark with different renderers.
|
|
|
|
class PipePictureBenchmark : public PictureBenchmark {
|
|
private:
|
|
PipePictureRenderer fRenderer;
|
|
|
|
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
|
|
return &fRenderer;
|
|
}
|
|
|
|
typedef PictureBenchmark INHERITED;
|
|
};
|
|
|
|
class RecordPictureBenchmark : public PictureBenchmark {
|
|
private:
|
|
RecordPictureRenderer fRenderer;
|
|
|
|
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
|
|
return &fRenderer;
|
|
}
|
|
|
|
typedef PictureBenchmark INHERITED;
|
|
};
|
|
|
|
class SimplePictureBenchmark : public PictureBenchmark {
|
|
private:
|
|
SimplePictureRenderer fRenderer;
|
|
|
|
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
|
|
return &fRenderer;
|
|
}
|
|
|
|
typedef PictureBenchmark INHERITED;
|
|
};
|
|
|
|
class TiledPictureBenchmark : public PictureBenchmark {
|
|
public:
|
|
void setTileWidth(int width) {
|
|
fRenderer.setTileWidth(width);
|
|
}
|
|
|
|
int getTileWidth() const {
|
|
return fRenderer.getTileWidth();
|
|
}
|
|
|
|
void setTileHeight(int height) {
|
|
fRenderer.setTileHeight(height);
|
|
}
|
|
|
|
int getTileHeight() const {
|
|
return fRenderer.getTileHeight();
|
|
}
|
|
|
|
void setTileWidthPercentage(double percentage) {
|
|
fRenderer.setTileWidthPercentage(percentage);
|
|
}
|
|
|
|
double getTileWidthPercentage() const {
|
|
return fRenderer.getTileWidthPercentage();
|
|
}
|
|
|
|
void setTileHeightPercentage(double percentage) {
|
|
fRenderer.setTileHeightPercentage(percentage);
|
|
}
|
|
|
|
double getTileHeightPercentage() const {
|
|
return fRenderer.getTileHeightPercentage();
|
|
}
|
|
|
|
void setTileMinPowerOf2Width(int width) {
|
|
fRenderer.setTileMinPowerOf2Width(width);
|
|
}
|
|
|
|
int getTileMinPowerOf2Width() {
|
|
return fRenderer.getTileMinPowerOf2Width();
|
|
}
|
|
|
|
void setThreading(bool multi) {
|
|
fRenderer.setMultiThreaded(multi);
|
|
}
|
|
|
|
void setUsePipe(bool usePipe) {
|
|
fRenderer.setUsePipe(usePipe);
|
|
}
|
|
|
|
private:
|
|
TiledPictureRenderer fRenderer;
|
|
|
|
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
|
|
return &fRenderer;
|
|
}
|
|
|
|
typedef PictureBenchmark INHERITED;
|
|
};
|
|
|
|
class PlaybackCreationBenchmark : public PictureBenchmark {
|
|
private:
|
|
PlaybackCreationRenderer fRenderer;
|
|
|
|
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
|
|
return &fRenderer;
|
|
}
|
|
|
|
typedef PictureBenchmark INHERITED;
|
|
};
|
|
|
|
}
|
|
|
|
#endif // PictureBenchmark_DEFINED
|