| Index: bench/nanobench.cpp
|
| diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp
|
| index c2bcb4950ac6b6ac6f5896412deb3cb8ccf44fee..7b3756267cbfc066804471e75813fa358c98a90b 100644
|
| --- a/bench/nanobench.cpp
|
| +++ b/bench/nanobench.cpp
|
| @@ -112,6 +112,11 @@ DEFINE_bool(gpuStats, false, "Print GPU stats after each gpu benchmark?");
|
| DEFINE_bool(gpuStatsDump, false, "Dump GPU states after each benchmark to json");
|
| DEFINE_bool(keepAlive, false, "Print a message every so often so that we don't time out");
|
|
|
| +DEFINE_string(sourceType, "",
|
| + "Apply usual --match rules to source type: bench, gm, skp, image, etc.");
|
| +DEFINE_string(benchType, "",
|
| + "Apply usual --match rules to bench type: micro, recording, playback, skcodec, etc.");
|
| +
|
| static double now_ms() { return SkTime::GetNSecs() * 1e-6; }
|
|
|
| static SkString humanize(double ms) {
|
| @@ -628,6 +633,18 @@ public:
|
| }
|
|
|
| Benchmark* next() {
|
| + SkAutoTDelete<Benchmark> bench;
|
| + do {
|
| + bench.reset(this->rawNext());
|
| + if (!bench) {
|
| + return nullptr;
|
| + }
|
| + } while(SkCommandLineFlags::ShouldSkip(FLAGS_sourceType, fSourceType) ||
|
| + SkCommandLineFlags::ShouldSkip(FLAGS_benchType, fBenchType));
|
| + return bench.detach();
|
| + }
|
| +
|
| + Benchmark* rawNext() {
|
| if (fBenches) {
|
| Benchmark* bench = fBenches->factory()(nullptr);
|
| fBenches = fBenches->next();
|
|
|