OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "CrashHandler.h" | 8 #include "CrashHandler.h" |
9 #include "DMJsonWriter.h" | 9 #include "DMJsonWriter.h" |
10 #include "DMSrcSink.h" | 10 #include "DMSrcSink.h" |
(...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
916 } | 916 } |
917 | 917 |
918 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK | 918 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK |
919 VIA("androidsdk", ViaAndroidSDK, wrapped); | 919 VIA("androidsdk", ViaAndroidSDK, wrapped); |
920 #endif | 920 #endif |
921 | 921 |
922 #undef VIA | 922 #undef VIA |
923 return nullptr; | 923 return nullptr; |
924 } | 924 } |
925 | 925 |
926 static void gather_sinks() { | 926 static bool gather_sinks() { |
927 SkCommandLineConfigArray configs; | 927 SkCommandLineConfigArray configs; |
928 ParseConfigs(FLAGS_config, &configs); | 928 ParseConfigs(FLAGS_config, &configs); |
929 for (int i = 0; i < configs.count(); i++) { | 929 for (int i = 0; i < configs.count(); i++) { |
930 const SkCommandLineConfig& config = *configs[i]; | 930 const SkCommandLineConfig& config = *configs[i]; |
931 Sink* sink = create_sink(&config); | 931 Sink* sink = create_sink(&config); |
932 if (sink == nullptr) { | 932 if (sink == nullptr) { |
933 info("Skipping config %s: Don't understand '%s'.\n", config.getTag()
.c_str(), | 933 info("Skipping config %s: Don't understand '%s'.\n", config.getTag()
.c_str(), |
934 config.getTag().c_str()); | 934 config.getTag().c_str()); |
935 continue; | 935 continue; |
936 } | 936 } |
937 | 937 |
938 const SkTArray<SkString>& parts = config.getViaParts(); | 938 const SkTArray<SkString>& parts = config.getViaParts(); |
939 for (int j = parts.count(); j-- > 0;) { | 939 for (int j = parts.count(); j-- > 0;) { |
940 const SkString& part = parts[j]; | 940 const SkString& part = parts[j]; |
941 Sink* next = create_via(part, sink); | 941 Sink* next = create_via(part, sink); |
942 if (next == nullptr) { | 942 if (next == nullptr) { |
943 info("Skipping config %s: Don't understand '%s'.\n", config.getT
ag().c_str(), | 943 info("Skipping config %s: Don't understand '%s'.\n", config.getT
ag().c_str(), |
944 part.c_str()); | 944 part.c_str()); |
945 delete sink; | 945 delete sink; |
946 sink = nullptr; | 946 sink = nullptr; |
947 break; | 947 break; |
948 } | 948 } |
949 sink = next; | 949 sink = next; |
950 } | 950 } |
951 if (sink) { | 951 if (sink) { |
952 push_sink(config, sink); | 952 push_sink(config, sink); |
953 } | 953 } |
954 } | 954 } |
| 955 |
| 956 // If no configs were requested (just running tests, perhaps?), then we're o
kay. |
| 957 // Otherwise, make sure that at least one sink was constructed correctly. Th
is catches |
| 958 // the case of bots without a GPU being assigned GPU configs. |
| 959 return (configs.count() == 0) || (gSinks.count() > 0); |
955 } | 960 } |
956 | 961 |
957 static bool dump_png(SkBitmap bitmap, const char* path, const char* md5) { | 962 static bool dump_png(SkBitmap bitmap, const char* path, const char* md5) { |
958 const int w = bitmap.width(), | 963 const int w = bitmap.width(), |
959 h = bitmap.height(); | 964 h = bitmap.height(); |
960 | 965 |
961 sk_sp<SkData> encodedBitmap = sk_tools::encode_bitmap_for_png(bitmap); | 966 sk_sp<SkData> encodedBitmap = sk_tools::encode_bitmap_for_png(bitmap); |
962 if (encodedBitmap.get() == nullptr) { | 967 if (encodedBitmap.get() == nullptr) { |
963 return false; | 968 return false; |
964 } | 969 } |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1316 if (!testResource.isValid()) { | 1321 if (!testResource.isValid()) { |
1317 info("Some resources are missing. Do you need to set --resourcePath
?\n"); | 1322 info("Some resources are missing. Do you need to set --resourcePath
?\n"); |
1318 } | 1323 } |
1319 } | 1324 } |
1320 gather_gold(); | 1325 gather_gold(); |
1321 gather_uninteresting_hashes(); | 1326 gather_uninteresting_hashes(); |
1322 | 1327 |
1323 if (!gather_srcs()) { | 1328 if (!gather_srcs()) { |
1324 return 1; | 1329 return 1; |
1325 } | 1330 } |
1326 gather_sinks(); | 1331 if (!gather_sinks()) { |
| 1332 return 1; |
| 1333 } |
1327 gather_tests(); | 1334 gather_tests(); |
1328 gPending = gSrcs.count() * gSinks.count() + gParallelTests.count() + gSerial
Tests.count(); | 1335 gPending = gSrcs.count() * gSinks.count() + gParallelTests.count() + gSerial
Tests.count(); |
1329 info("%d srcs * %d sinks + %d tests == %d tasks", | 1336 info("%d srcs * %d sinks + %d tests == %d tasks", |
1330 gSrcs.count(), gSinks.count(), gParallelTests.count() + gSerialTests.co
unt(), gPending); | 1337 gSrcs.count(), gSinks.count(), gParallelTests.count() + gSerialTests.co
unt(), gPending); |
1331 SkAutoTDelete<SkThread> statusThread(start_status_thread()); | 1338 SkAutoTDelete<SkThread> statusThread(start_status_thread()); |
1332 | 1339 |
1333 // Kick off as much parallel work as we can, making note of any serial work
we'll need to do. | 1340 // Kick off as much parallel work as we can, making note of any serial work
we'll need to do. |
1334 SkTaskGroup parallel; | 1341 SkTaskGroup parallel; |
1335 SkTArray<Task> serial; | 1342 SkTArray<Task> serial; |
1336 | 1343 |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1443 #endif | 1450 #endif |
1444 } | 1451 } |
1445 } // namespace skiatest | 1452 } // namespace skiatest |
1446 | 1453 |
1447 #if !defined(SK_BUILD_FOR_IOS) | 1454 #if !defined(SK_BUILD_FOR_IOS) |
1448 int main(int argc, char** argv) { | 1455 int main(int argc, char** argv) { |
1449 SkCommandLineFlags::Parse(argc, argv); | 1456 SkCommandLineFlags::Parse(argc, argv); |
1450 return dm_main(); | 1457 return dm_main(); |
1451 } | 1458 } |
1452 #endif | 1459 #endif |
OLD | NEW |