Chromium Code Reviews| Index: bench/nanobench.cpp |
| diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp |
| index 99483ebd99003f3f0bea47792080174217f02c4d..602d6137ca77c1332faeebbb1a4665d57e424615 100644 |
| --- a/bench/nanobench.cpp |
| +++ b/bench/nanobench.cpp |
| @@ -107,6 +107,7 @@ DEFINE_bool(loopSKP, true, "Loop SKPs like we do for micro benches?"); |
| DEFINE_int32(flushEvery, 10, "Flush --outResultsFile every Nth run."); |
| DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test."); |
| DEFINE_bool(gpuStats, false, "Print GPU stats after each gpu benchmark?"); |
| +DEFINE_bool(gpuStatsDump, false, "Dump GPU states after each benchmark to json"); |
| static double now_ms() { return SkTime::GetNSecs() * 1e-6; } |
| @@ -1184,6 +1185,16 @@ int nanobench_main() { |
| } |
| } |
| +#if SK_SUPPORT_GPU |
| + SkTArray<SkString> keys; |
| + SkTArray<double> values; |
| + bool gpuStatsDump = FLAGS_gpuStatsDump && Benchmark::kGPU_Backend == configs[i].backend; |
| + if (gpuStatsDump) { |
| + // TODO cache stats |
| + bench->getGpuStats(canvas, &keys, &values); |
| + } |
| +#endif |
| + |
| bench->perCanvasPostDraw(canvas); |
| if (Benchmark::kNonRendering_Backend != target->config.backend && |
| @@ -1206,6 +1217,16 @@ int nanobench_main() { |
| benchStream.fillCurrentOptions(log.get()); |
| target->fillOptions(log.get()); |
| log->metric("min_ms", stats.min); |
| +#if SK_SUPPORT_GPU |
| + if (gpuStatsDump) { |
| + // dump to json, only SKPBench currently returns valid keys / values |
| + SkASSERT(keys.count() == values.count()); |
| + for (int i = 0; i < keys.count(); i++) { |
| + log->metric(keys[i].c_str(), values[i]); |
| + } |
| + } |
| +#endif |
| + |
| if (runs++ % FLAGS_flushEvery == 0) { |
|
bsalomon
2015/12/02 15:44:26
why move this?
joshualitt
2015/12/02 15:53:06
I accidentally moved it in my initial CL, its back
|
| log->flush(); |
| } |
| @@ -1240,13 +1261,14 @@ int nanobench_main() { |
| , bench->getUniqueName() |
| ); |
| } |
| + |
| #if SK_SUPPORT_GPU |
| - if (FLAGS_gpuStats && |
| - Benchmark::kGPU_Backend == configs[i].backend) { |
| + if (FLAGS_gpuStats && Benchmark::kGPU_Backend == configs[i].backend) { |
| gGrFactory->get(configs[i].ctxType)->printCacheStats(); |
| gGrFactory->get(configs[i].ctxType)->printGpuStats(); |
| } |
| #endif |
| + |
| if (FLAGS_verbose) { |
| SkDebugf("Samples: "); |
| for (int i = 0; i < samples.count(); i++) { |