2012-08-01 21:53:29 +04:00
|
|
|
/*
|
|
|
|
* 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
|
2012-09-11 23:15:32 +04:00
|
|
|
|
2012-08-01 21:53:29 +04:00
|
|
|
#include "SkTypes.h"
|
|
|
|
#include "PictureRenderer.h"
|
|
|
|
|
2012-08-20 19:03:47 +04:00
|
|
|
class BenchTimer;
|
2012-09-07 19:21:18 +04:00
|
|
|
class SkBenchLogger;
|
2012-08-01 21:53:29 +04:00
|
|
|
class SkPicture;
|
|
|
|
class SkString;
|
|
|
|
|
|
|
|
namespace sk_tools {
|
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
class PictureBenchmark {
|
2012-08-01 21:53:29 +04:00
|
|
|
public:
|
2012-09-11 23:15:32 +04:00
|
|
|
PictureBenchmark();
|
|
|
|
|
|
|
|
~PictureBenchmark();
|
2012-09-07 19:21:18 +04:00
|
|
|
|
Provide an option to bench drawing individual tiles in bench_pictures.
Provides output like the following:
running bench [1236 12045] androidpolice.skp
tile_256x256: tile [0,0] out of [5,48]: msecs = 1.00
tile_256x256: tile [1,0] out of [5,48]: msecs = 1.50
tile_256x256: tile [2,0] out of [5,48]: msecs = 1.00
tile_256x256: tile [3,0] out of [5,48]: msecs = 1.50
tile_256x256: tile [4,0] out of [5,48]: msecs = 2.50
tile_256x256: tile [0,1] out of [5,48]: msecs = 2.00
tile_256x256: tile [1,1] out of [5,48]: msecs = 3.50
tile_256x256: tile [2,1] out of [5,48]: msecs = 3.50
tile_256x256: tile [3,1] out of [5,48]: msecs = 6.00
tile_256x256: tile [4,1] out of [5,48]: msecs = 2.50
tile_256x256: tile [0,2] out of [5,48]: msecs = 2.00
BUG=https://code.google.com/p/skia/issues/detail?id=1016
Review URL: https://codereview.appspot.com/6937047
git-svn-id: http://skia.googlecode.com/svn/trunk@6805 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-14 02:09:28 +04:00
|
|
|
/**
|
|
|
|
* Draw the provided SkPicture fRepeats times while collecting timing data, and log the output
|
|
|
|
* via fLogger.
|
|
|
|
*/
|
2012-09-07 19:21:18 +04:00
|
|
|
void run(SkPicture* pict);
|
2012-08-01 21:53:29 +04:00
|
|
|
|
|
|
|
void setRepeats(int repeats) {
|
|
|
|
fRepeats = repeats;
|
|
|
|
}
|
|
|
|
|
Provide an option to bench drawing individual tiles in bench_pictures.
Provides output like the following:
running bench [1236 12045] androidpolice.skp
tile_256x256: tile [0,0] out of [5,48]: msecs = 1.00
tile_256x256: tile [1,0] out of [5,48]: msecs = 1.50
tile_256x256: tile [2,0] out of [5,48]: msecs = 1.00
tile_256x256: tile [3,0] out of [5,48]: msecs = 1.50
tile_256x256: tile [4,0] out of [5,48]: msecs = 2.50
tile_256x256: tile [0,1] out of [5,48]: msecs = 2.00
tile_256x256: tile [1,1] out of [5,48]: msecs = 3.50
tile_256x256: tile [2,1] out of [5,48]: msecs = 3.50
tile_256x256: tile [3,1] out of [5,48]: msecs = 6.00
tile_256x256: tile [4,1] out of [5,48]: msecs = 2.50
tile_256x256: tile [0,2] out of [5,48]: msecs = 2.00
BUG=https://code.google.com/p/skia/issues/detail?id=1016
Review URL: https://codereview.appspot.com/6937047
git-svn-id: http://skia.googlecode.com/svn/trunk@6805 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-14 02:09:28 +04:00
|
|
|
/**
|
|
|
|
* 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 = true; }
|
|
|
|
|
|
|
|
bool timeIndividualTiles() { return fTimeIndividualTiles; }
|
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
PictureRenderer* setRenderer(PictureRenderer*);
|
2012-08-20 19:03:41 +04:00
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
void setDeviceType(PictureRenderer::SkDeviceTypes deviceType) {
|
|
|
|
if (fRenderer != NULL) {
|
|
|
|
fRenderer->setDeviceType(deviceType);
|
2012-08-20 19:03:41 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
void setLogPerIter(bool log) { fLogPerIter = log; }
|
2012-08-01 21:53:29 +04:00
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
void setPrintMin(bool min) { fPrintMin = min; }
|
2012-08-20 19:03:41 +04:00
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
void setTimersToShow(bool wall, bool truncatedWall, bool cpu, bool truncatedCpu, bool gpu) {
|
|
|
|
fShowWallTime = wall;
|
|
|
|
fShowTruncatedWallTime = truncatedWall;
|
|
|
|
fShowCpuTime = cpu;
|
|
|
|
fShowTruncatedCpuTime = truncatedCpu;
|
|
|
|
fShowGpuTime = gpu;
|
2012-08-20 19:03:41 +04:00
|
|
|
}
|
2012-09-07 19:21:18 +04:00
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
void setLogger(SkBenchLogger* logger) { fLogger = logger; }
|
2012-08-01 21:53:29 +04:00
|
|
|
|
2012-08-07 21:11:33 +04:00
|
|
|
private:
|
2012-09-11 23:15:32 +04:00
|
|
|
int fRepeats;
|
|
|
|
SkBenchLogger* fLogger;
|
|
|
|
PictureRenderer* fRenderer;
|
|
|
|
bool fLogPerIter;
|
|
|
|
bool fPrintMin;
|
|
|
|
bool fShowWallTime;
|
|
|
|
bool fShowTruncatedWallTime;
|
|
|
|
bool fShowCpuTime;
|
|
|
|
bool fShowTruncatedCpuTime;
|
|
|
|
bool fShowGpuTime;
|
Provide an option to bench drawing individual tiles in bench_pictures.
Provides output like the following:
running bench [1236 12045] androidpolice.skp
tile_256x256: tile [0,0] out of [5,48]: msecs = 1.00
tile_256x256: tile [1,0] out of [5,48]: msecs = 1.50
tile_256x256: tile [2,0] out of [5,48]: msecs = 1.00
tile_256x256: tile [3,0] out of [5,48]: msecs = 1.50
tile_256x256: tile [4,0] out of [5,48]: msecs = 2.50
tile_256x256: tile [0,1] out of [5,48]: msecs = 2.00
tile_256x256: tile [1,1] out of [5,48]: msecs = 3.50
tile_256x256: tile [2,1] out of [5,48]: msecs = 3.50
tile_256x256: tile [3,1] out of [5,48]: msecs = 6.00
tile_256x256: tile [4,1] out of [5,48]: msecs = 2.50
tile_256x256: tile [0,2] out of [5,48]: msecs = 2.00
BUG=https://code.google.com/p/skia/issues/detail?id=1016
Review URL: https://codereview.appspot.com/6937047
git-svn-id: http://skia.googlecode.com/svn/trunk@6805 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-14 02:09:28 +04:00
|
|
|
bool fTimeIndividualTiles;
|
2012-09-07 19:21:18 +04:00
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
void logProgress(const char msg[]);
|
2012-09-07 19:21:18 +04:00
|
|
|
|
2012-09-11 23:15:32 +04:00
|
|
|
BenchTimer* setupTimer();
|
2012-08-01 21:53:29 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // PictureBenchmark_DEFINED
|