| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include <ctype.h> | 8 #include <ctype.h> |
| 9 | 9 |
| 10 #include "Benchmark.h" | 10 #include "Benchmark.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 DEFINE_string(outResultsFile, "", "If given, write results here as JSON."); | 68 DEFINE_string(outResultsFile, "", "If given, write results here as JSON."); |
| 69 DEFINE_int32(maxCalibrationAttempts, 3, | 69 DEFINE_int32(maxCalibrationAttempts, 3, |
| 70 "Try up to this many times to guess loops for a bench, or skip the
bench."); | 70 "Try up to this many times to guess loops for a bench, or skip the
bench."); |
| 71 DEFINE_int32(maxLoops, 1000000, "Never run a bench more times than this."); | 71 DEFINE_int32(maxLoops, 1000000, "Never run a bench more times than this."); |
| 72 DEFINE_string(clip, "0,0,1000,1000", "Clip for SKPs."); | 72 DEFINE_string(clip, "0,0,1000,1000", "Clip for SKPs."); |
| 73 DEFINE_string(scales, "1.0", "Space-separated scales for SKPs."); | 73 DEFINE_string(scales, "1.0", "Space-separated scales for SKPs."); |
| 74 DEFINE_bool(bbh, true, "Build a BBH for SKPs?"); | 74 DEFINE_bool(bbh, true, "Build a BBH for SKPs?"); |
| 75 DEFINE_bool(mpd, true, "Use MultiPictureDraw for the SKPs?"); | 75 DEFINE_bool(mpd, true, "Use MultiPictureDraw for the SKPs?"); |
| 76 DEFINE_int32(flushEvery, 10, "Flush --outResultsFile every Nth run."); | 76 DEFINE_int32(flushEvery, 10, "Flush --outResultsFile every Nth run."); |
| 77 DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test
."); | 77 DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test
."); |
| 78 DEFINE_bool(gpuStats, false, "Print GPU stats after each gpu benchmark?"); |
| 78 | 79 |
| 79 static SkString humanize(double ms) { | 80 static SkString humanize(double ms) { |
| 80 if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6)); | 81 if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6)); |
| 81 return HumanizeMs(ms); | 82 return HumanizeMs(ms); |
| 82 } | 83 } |
| 83 #define HUMANIZE(ms) humanize(ms).c_str() | 84 #define HUMANIZE(ms) humanize(ms).c_str() |
| 84 | 85 |
| 85 static double time(int loops, Benchmark* bench, SkCanvas* canvas, SkGLContext* g
l) { | 86 static double time(int loops, Benchmark* bench, SkCanvas* canvas, SkGLContext* g
l) { |
| 86 if (canvas) { | 87 if (canvas) { |
| 87 canvas->clear(SK_ColorWHITE); | 88 canvas->clear(SK_ColorWHITE); |
| (...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 759 , HUMANIZE(stats.min) | 760 , HUMANIZE(stats.min) |
| 760 , HUMANIZE(stats.median) | 761 , HUMANIZE(stats.median) |
| 761 , HUMANIZE(stats.mean) | 762 , HUMANIZE(stats.mean) |
| 762 , HUMANIZE(stats.max) | 763 , HUMANIZE(stats.max) |
| 763 , stddev_percent | 764 , stddev_percent |
| 764 , stats.plot.c_str() | 765 , stats.plot.c_str() |
| 765 , config | 766 , config |
| 766 , bench->getUniqueName() | 767 , bench->getUniqueName() |
| 767 ); | 768 ); |
| 768 } | 769 } |
| 769 #if SK_SUPPORT_GPU && GR_CACHE_STATS | 770 #if SK_SUPPORT_GPU |
| 770 if (FLAGS_veryVerbose && | 771 if (FLAGS_gpuStats && |
| 771 Benchmark::kGPU_Backend == targets[j]->config.backend) { | 772 Benchmark::kGPU_Backend == targets[j]->config.backend) { |
| 772 gGrFactory->get(targets[j]->config.ctxType)->printCacheStats(); | 773 gGrFactory->get(targets[j]->config.ctxType)->printCacheStats(); |
| 774 gGrFactory->get(targets[j]->config.ctxType)->printGpuStats(); |
| 773 } | 775 } |
| 774 #endif | 776 #endif |
| 775 } | 777 } |
| 776 targets.deleteAll(); | 778 targets.deleteAll(); |
| 777 | 779 |
| 778 #if SK_SUPPORT_GPU | 780 #if SK_SUPPORT_GPU |
| 779 if (FLAGS_abandonGpuContext) { | 781 if (FLAGS_abandonGpuContext) { |
| 780 gGrFactory->abandonContexts(); | 782 gGrFactory->abandonContexts(); |
| 781 } | 783 } |
| 782 if (FLAGS_resetGpuContext || FLAGS_abandonGpuContext) { | 784 if (FLAGS_resetGpuContext || FLAGS_abandonGpuContext) { |
| 783 gGrFactory->destroyContexts(); | 785 gGrFactory->destroyContexts(); |
| 784 } | 786 } |
| 785 #endif | 787 #endif |
| 786 } | 788 } |
| 787 | 789 |
| 788 log->bench("memory_usage", 0,0); | 790 log->bench("memory_usage", 0,0); |
| 789 log->config("meta"); | 791 log->config("meta"); |
| 790 log->metric("max_rss_mb", sk_tools::getMaxResidentSetSizeMB()); | 792 log->metric("max_rss_mb", sk_tools::getMaxResidentSetSizeMB()); |
| 791 | 793 |
| 792 return 0; | 794 return 0; |
| 793 } | 795 } |
| 794 | 796 |
| 795 #if !defined SK_BUILD_FOR_IOS | 797 #if !defined SK_BUILD_FOR_IOS |
| 796 int main(int argc, char** argv) { | 798 int main(int argc, char** argv) { |
| 797 SkCommandLineFlags::Parse(argc, argv); | 799 SkCommandLineFlags::Parse(argc, argv); |
| 798 return nanobench_main(); | 800 return nanobench_main(); |
| 799 } | 801 } |
| 800 #endif | 802 #endif |
| OLD | NEW |