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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
112 DEFINE_bool(bbh, true, "Build a BBH for SKPs?"); | 112 DEFINE_bool(bbh, true, "Build a BBH for SKPs?"); |
113 DEFINE_bool(mpd, true, "Use MultiPictureDraw for the SKPs?"); | 113 DEFINE_bool(mpd, true, "Use MultiPictureDraw for the SKPs?"); |
114 DEFINE_bool(loopSKP, true, "Loop SKPs like we do for micro benches?"); | 114 DEFINE_bool(loopSKP, true, "Loop SKPs like we do for micro benches?"); |
115 DEFINE_int32(flushEvery, 10, "Flush --outResultsFile every Nth run."); | 115 DEFINE_int32(flushEvery, 10, "Flush --outResultsFile every Nth run."); |
116 DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test ."); | 116 DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test ."); |
117 DEFINE_bool(gpuStats, false, "Print GPU stats after each gpu benchmark?"); | 117 DEFINE_bool(gpuStats, false, "Print GPU stats after each gpu benchmark?"); |
118 DEFINE_bool(gpuStatsDump, false, "Dump GPU states after each benchmark to json") ; | 118 DEFINE_bool(gpuStatsDump, false, "Dump GPU states after each benchmark to json") ; |
119 DEFINE_bool(keepAlive, false, "Print a message every so often so that we don't t ime out"); | 119 DEFINE_bool(keepAlive, false, "Print a message every so often so that we don't t ime out"); |
120 DEFINE_string(useThermalManager, "0,1,10,1000", "enabled,threshold,sleepTimeMs,T imeoutMs for " | 120 DEFINE_string(useThermalManager, "0,1,10,1000", "enabled,threshold,sleepTimeMs,T imeoutMs for " |
121 "thermalManager\n"); | 121 "thermalManager\n"); |
122 DEFINE_bool(simpleCodec, false, "Only decode images to N32 opaque or premul"); | |
122 | 123 |
123 DEFINE_string(sourceType, "", | 124 DEFINE_string(sourceType, "", |
124 "Apply usual --match rules to source type: bench, gm, skp, image, etc.") ; | 125 "Apply usual --match rules to source type: bench, gm, skp, image, etc.") ; |
125 DEFINE_string(benchType, "", | 126 DEFINE_string(benchType, "", |
126 "Apply usual --match rules to bench type: micro, recording, playback, sk codec, etc."); | 127 "Apply usual --match rules to bench type: micro, recording, playback, sk codec, etc."); |
127 | 128 |
128 static double now_ms() { return SkTime::GetNSecs() * 1e-6; } | 129 static double now_ms() { return SkTime::GetNSecs() * 1e-6; } |
129 | 130 |
130 static SkString humanize(double ms) { | 131 static SkString humanize(double ms) { |
131 if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6)); | 132 if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6)); |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
612 | 613 |
613 // Prepare the images for decoding | 614 // Prepare the images for decoding |
614 if (!CollectImages(FLAGS_images, &fImages)) { | 615 if (!CollectImages(FLAGS_images, &fImages)) { |
615 exit(1); | 616 exit(1); |
616 } | 617 } |
617 if (!CollectImages(FLAGS_colorImages, &fColorImages)) { | 618 if (!CollectImages(FLAGS_colorImages, &fColorImages)) { |
618 exit(1); | 619 exit(1); |
619 } | 620 } |
620 | 621 |
621 // Choose the candidate color types for image decoding | 622 // Choose the candidate color types for image decoding |
622 const SkColorType colorTypes[] = | 623 if (FLAGS_simpleCodec) { |
scroggo
2016/06/21 14:52:48
Alternatively, you could always reset fColorTypes
| |
623 { kN32_SkColorType, | 624 const SkColorType colorTypes[] = { |
624 kRGB_565_SkColorType, | 625 kN32_SkColorType, |
625 kAlpha_8_SkColorType, | 626 }; |
626 kIndex_8_SkColorType, | 627 |
627 kGray_8_SkColorType }; | 628 fColorTypes.reset(colorTypes, SK_ARRAY_COUNT(colorTypes)); |
628 fColorTypes.reset(colorTypes, SK_ARRAY_COUNT(colorTypes)); | 629 } else { |
630 const SkColorType colorTypes[] = { | |
631 kN32_SkColorType, | |
632 kRGB_565_SkColorType, | |
633 kAlpha_8_SkColorType, | |
634 kIndex_8_SkColorType, | |
635 kGray_8_SkColorType, | |
636 }; | |
637 | |
638 fColorTypes.reset(colorTypes, SK_ARRAY_COUNT(colorTypes)); | |
639 } | |
629 } | 640 } |
630 | 641 |
631 static sk_sp<SkPicture> ReadPicture(const char* path) { | 642 static sk_sp<SkPicture> ReadPicture(const char* path) { |
632 // Not strictly necessary, as it will be checked again later, | 643 // Not strictly necessary, as it will be checked again later, |
633 // but helps to avoid a lot of pointless work if we're going to skip it. | 644 // but helps to avoid a lot of pointless work if we're going to skip it. |
634 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, SkOSPath::Basename(path) .c_str())) { | 645 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, SkOSPath::Basename(path) .c_str())) { |
635 return nullptr; | 646 return nullptr; |
636 } | 647 } |
637 | 648 |
638 SkAutoTDelete<SkStream> stream(SkStream::NewFromFile(path)); | 649 SkAutoTDelete<SkStream> stream(SkStream::NewFromFile(path)); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
756 if (!codec) { | 767 if (!codec) { |
757 // Nothing to time. | 768 // Nothing to time. |
758 SkDebugf("Cannot find codec for %s\n", path.c_str()); | 769 SkDebugf("Cannot find codec for %s\n", path.c_str()); |
759 continue; | 770 continue; |
760 } | 771 } |
761 | 772 |
762 while (fCurrentColorType < fColorTypes.count()) { | 773 while (fCurrentColorType < fColorTypes.count()) { |
763 const SkColorType colorType = fColorTypes[fCurrentColorType]; | 774 const SkColorType colorType = fColorTypes[fCurrentColorType]; |
764 | 775 |
765 SkAlphaType alphaType = codec->getInfo().alphaType(); | 776 SkAlphaType alphaType = codec->getInfo().alphaType(); |
766 switch (alphaType) { | 777 if (FLAGS_simpleCodec) { |
767 case kOpaque_SkAlphaType: | 778 if (kUnpremul_SkAlphaType == alphaType) { |
768 // We only need to test one alpha type (opaque). | 779 alphaType = kPremul_SkAlphaType; |
769 fCurrentColorType++; | 780 } |
770 break; | 781 |
771 case kUnpremul_SkAlphaType: | 782 fCurrentColorType++; |
772 case kPremul_SkAlphaType: | 783 } else { |
773 if (0 == fCurrentAlphaType) { | 784 switch (alphaType) { |
774 // Test unpremul first. | 785 case kOpaque_SkAlphaType: |
775 alphaType = kUnpremul_SkAlphaType; | 786 // We only need to test one alpha type (opaque). |
776 fCurrentAlphaType++; | |
777 } else { | |
778 // Test premul. | |
779 alphaType = kPremul_SkAlphaType; | |
780 fCurrentAlphaType = 0; | |
781 fCurrentColorType++; | 787 fCurrentColorType++; |
782 } | 788 break; |
783 break; | 789 case kUnpremul_SkAlphaType: |
784 default: | 790 case kPremul_SkAlphaType: |
785 SkASSERT(false); | 791 if (0 == fCurrentAlphaType) { |
786 fCurrentColorType++; | 792 // Test unpremul first. |
787 break; | 793 alphaType = kUnpremul_SkAlphaType; |
794 fCurrentAlphaType++; | |
795 } else { | |
796 // Test premul. | |
797 alphaType = kPremul_SkAlphaType; | |
798 fCurrentAlphaType = 0; | |
799 fCurrentColorType++; | |
800 } | |
801 break; | |
802 default: | |
803 SkASSERT(false); | |
804 fCurrentColorType++; | |
805 break; | |
806 } | |
788 } | 807 } |
789 | 808 |
790 // Make sure we can decode to this color type and alpha type. | 809 // Make sure we can decode to this color type and alpha type. |
791 SkImageInfo info = | 810 SkImageInfo info = |
792 codec->getInfo().makeColorType(colorType).makeAlphaType( alphaType); | 811 codec->getInfo().makeColorType(colorType).makeAlphaType( alphaType); |
793 const size_t rowBytes = info.minRowBytes(); | 812 const size_t rowBytes = info.minRowBytes(); |
794 SkAutoMalloc storage(info.getSafeSize(rowBytes)); | 813 SkAutoMalloc storage(info.getSafeSize(rowBytes)); |
795 | 814 |
796 // Used if fCurrentColorType is kIndex_8_SkColorType | 815 // Used if fCurrentColorType is kIndex_8_SkColorType |
797 int colorCount = 256; | 816 int colorCount = 256; |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1290 | 1309 |
1291 return 0; | 1310 return 0; |
1292 } | 1311 } |
1293 | 1312 |
1294 #if !defined SK_BUILD_FOR_IOS | 1313 #if !defined SK_BUILD_FOR_IOS |
1295 int main(int argc, char** argv) { | 1314 int main(int argc, char** argv) { |
1296 SkCommandLineFlags::Parse(argc, argv); | 1315 SkCommandLineFlags::Parse(argc, argv); |
1297 return nanobench_main(); | 1316 return nanobench_main(); |
1298 } | 1317 } |
1299 #endif | 1318 #endif |
OLD | NEW |