| 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 "nanobench.h" | 10 #include "nanobench.h" |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 DEFINE_string(clip, "0,0,1000,1000", "Clip for SKPs."); | 104 DEFINE_string(clip, "0,0,1000,1000", "Clip for SKPs."); |
| 105 DEFINE_string(scales, "1.0", "Space-separated scales for SKPs."); | 105 DEFINE_string(scales, "1.0", "Space-separated scales for SKPs."); |
| 106 DEFINE_string(zoom, "1.0,0", "Comma-separated zoomMax,zoomPeriodMs factors for a
periodic SKP zoom " | 106 DEFINE_string(zoom, "1.0,0", "Comma-separated zoomMax,zoomPeriodMs factors for a
periodic SKP zoom " |
| 107 "function that ping-pongs between 1.0 and zoomMax."
); | 107 "function that ping-pongs between 1.0 and zoomMax."
); |
| 108 DEFINE_bool(bbh, true, "Build a BBH for SKPs?"); | 108 DEFINE_bool(bbh, true, "Build a BBH for SKPs?"); |
| 109 DEFINE_bool(mpd, true, "Use MultiPictureDraw for the SKPs?"); | 109 DEFINE_bool(mpd, true, "Use MultiPictureDraw for the SKPs?"); |
| 110 DEFINE_bool(loopSKP, true, "Loop SKPs like we do for micro benches?"); | 110 DEFINE_bool(loopSKP, true, "Loop SKPs like we do for micro benches?"); |
| 111 DEFINE_int32(flushEvery, 10, "Flush --outResultsFile every Nth run."); | 111 DEFINE_int32(flushEvery, 10, "Flush --outResultsFile every Nth run."); |
| 112 DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test
."); | 112 DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test
."); |
| 113 DEFINE_bool(gpuStats, false, "Print GPU stats after each gpu benchmark?"); | 113 DEFINE_bool(gpuStats, false, "Print GPU stats after each gpu benchmark?"); |
| 114 DEFINE_bool(pngBuildTileIndex, false, "If supported, use png buildTileIndex/deco
deSubset."); |
| 114 | 115 |
| 115 static SkString humanize(double ms) { | 116 static SkString humanize(double ms) { |
| 116 if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6)); | 117 if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6)); |
| 117 return HumanizeMs(ms); | 118 return HumanizeMs(ms); |
| 118 } | 119 } |
| 119 #define HUMANIZE(ms) humanize(ms).c_str() | 120 #define HUMANIZE(ms) humanize(ms).c_str() |
| 120 | 121 |
| 121 bool Target::init(SkImageInfo info, Benchmark* bench) { | 122 bool Target::init(SkImageInfo info, Benchmark* bench) { |
| 122 if (Benchmark::kRaster_Backend == config.backend) { | 123 if (Benchmark::kRaster_Backend == config.backend) { |
| 123 this->surface.reset(SkSurface::NewRaster(info)); | 124 this->surface.reset(SkSurface::NewRaster(info)); |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 } | 502 } |
| 502 | 503 |
| 503 /* | 504 /* |
| 504 * We only run our subset benches on files that are supported by BitmapRegionDec
oder: | 505 * We only run our subset benches on files that are supported by BitmapRegionDec
oder: |
| 505 * i.e. PNG, JPEG, and WEBP. We do *not* test WEBP when using codec, since we do
not | 506 * i.e. PNG, JPEG, and WEBP. We do *not* test WEBP when using codec, since we do
not |
| 506 * have a scanline decoder for WEBP, which is necessary for running the subset b
ench. | 507 * have a scanline decoder for WEBP, which is necessary for running the subset b
ench. |
| 507 * (Another bench must be used to test WEBP, which decodes subsets natively.) | 508 * (Another bench must be used to test WEBP, which decodes subsets natively.) |
| 508 */ | 509 */ |
| 509 static bool run_subset_bench(const SkString& path, bool useCodec) { | 510 static bool run_subset_bench(const SkString& path, bool useCodec) { |
| 510 static const char* const exts[] = { | 511 static const char* const exts[] = { |
| 511 "jpg", "jpeg", "png", | 512 "jpg", "jpeg", |
| 512 "JPG", "JPEG", "PNG", | 513 "JPG", "JPEG", |
| 513 }; | 514 }; |
| 514 | 515 |
| 515 for (uint32_t i = 0; i < SK_ARRAY_COUNT(exts); i++) { | 516 for (uint32_t i = 0; i < SK_ARRAY_COUNT(exts); i++) { |
| 516 if (path.endsWith(exts[i])) { | 517 if (path.endsWith(exts[i])) { |
| 517 return true; | 518 return true; |
| 518 } | 519 } |
| 519 } | 520 } |
| 520 | 521 |
| 521 return !useCodec && (path.endsWith("webp") || path.endsWith("WEBP")); | 522 // Test png in SkCodec, and optionally on SkImageDecoder. SkImageDecoder is |
| 523 // disabled by default because it leaks memory. |
| 524 // skbug.com/4360 |
| 525 if ((useCodec || FLAGS_pngBuildTileIndex) && (path.endsWith("png") || path.e
ndsWith("PNG"))) { |
| 526 return true; |
| 527 } |
| 528 |
| 529 if (!useCodec && (path.endsWith("webp") || path.endsWith("WEBP"))) { |
| 530 return true; |
| 531 } |
| 532 |
| 533 return false; |
| 522 } | 534 } |
| 523 | 535 |
| 524 /* | 536 /* |
| 525 * Returns true if set up for a subset decode succeeds, false otherwise | 537 * Returns true if set up for a subset decode succeeds, false otherwise |
| 526 * If the set-up succeeds, the width and height parameters will be set | 538 * If the set-up succeeds, the width and height parameters will be set |
| 527 */ | 539 */ |
| 528 static bool valid_subset_bench(const SkString& path, SkColorType colorType, bool
useCodec, | 540 static bool valid_subset_bench(const SkString& path, SkColorType colorType, bool
useCodec, |
| 529 int* width, int* height) { | 541 int* width, int* height) { |
| 530 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(path.c_str())); | 542 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(path.c_str())); |
| 531 SkAutoTDelete<SkMemoryStream> stream(new SkMemoryStream(encoded)); | 543 SkAutoTDelete<SkMemoryStream> stream(new SkMemoryStream(encoded)); |
| (...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1327 | 1339 |
| 1328 return 0; | 1340 return 0; |
| 1329 } | 1341 } |
| 1330 | 1342 |
| 1331 #if !defined SK_BUILD_FOR_IOS | 1343 #if !defined SK_BUILD_FOR_IOS |
| 1332 int main(int argc, char** argv) { | 1344 int main(int argc, char** argv) { |
| 1333 SkCommandLineFlags::Parse(argc, argv); | 1345 SkCommandLineFlags::Parse(argc, argv); |
| 1334 return nanobench_main(); | 1346 return nanobench_main(); |
| 1335 } | 1347 } |
| 1336 #endif | 1348 #endif |
| OLD | NEW |