| 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 24 matching lines...) Expand all Loading... |
| 35 "'matrix' or 'upright' in config."); | 35 "'matrix' or 'upright' in config."); |
| 36 DEFINE_bool(gpu_threading, false, "Allow GPU work to run on multiple threads?"); | 36 DEFINE_bool(gpu_threading, false, "Allow GPU work to run on multiple threads?"); |
| 37 | 37 |
| 38 DEFINE_string(blacklist, "", | 38 DEFINE_string(blacklist, "", |
| 39 "Space-separated config/src/srcOptions/name quadruples to blacklist. '_
' matches anything. E.g. \n" | 39 "Space-separated config/src/srcOptions/name quadruples to blacklist. '_
' matches anything. E.g. \n" |
| 40 "'--blacklist gpu skp _ _' will blacklist all SKPs drawn into the gpu co
nfig.\n" | 40 "'--blacklist gpu skp _ _' will blacklist all SKPs drawn into the gpu co
nfig.\n" |
| 41 "'--blacklist gpu skp _ _ 8888 gm _ aarects' will also blacklist the aar
ects GM on 8888."); | 41 "'--blacklist gpu skp _ _ 8888 gm _ aarects' will also blacklist the aar
ects GM on 8888."); |
| 42 | 42 |
| 43 DEFINE_string2(readPath, r, "", "If set check for equality with golden results i
n this directory."); | 43 DEFINE_string2(readPath, r, "", "If set check for equality with golden results i
n this directory."); |
| 44 | 44 |
| 45 DEFINE_string(uninterestingHashesFile, "", |
| 46 "File containing a list of uninteresting hashes. If a result hashes to s
omething in " |
| 47 "this list, no image is written for that result."); |
| 48 |
| 45 __SK_FORCE_IMAGE_DECODER_LINKING; | 49 __SK_FORCE_IMAGE_DECODER_LINKING; |
| 46 using namespace DM; | 50 using namespace DM; |
| 47 | 51 |
| 48 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ | 52 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ |
| 49 | 53 |
| 50 SK_DECLARE_STATIC_MUTEX(gFailuresMutex); | 54 SK_DECLARE_STATIC_MUTEX(gFailuresMutex); |
| 51 static SkTArray<SkString> gFailures; | 55 static SkTArray<SkString> gFailures; |
| 52 | 56 |
| 53 static void fail(ImplicitString err) { | 57 static void fail(ImplicitString err) { |
| 54 SkAutoMutexAcquire lock(gFailuresMutex); | 58 SkAutoMutexAcquire lock(gFailuresMutex); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 SkString path(FLAGS_readPath[0]); | 134 SkString path(FLAGS_readPath[0]); |
| 131 path.append("/dm.json"); | 135 path.append("/dm.json"); |
| 132 if (!JsonWriter::ReadJson(path.c_str(), add_gold)) { | 136 if (!JsonWriter::ReadJson(path.c_str(), add_gold)) { |
| 133 fail(SkStringPrintf("Couldn't read %s for golden results.", path.c_s
tr())); | 137 fail(SkStringPrintf("Couldn't read %s for golden results.", path.c_s
tr())); |
| 134 } | 138 } |
| 135 } | 139 } |
| 136 } | 140 } |
| 137 | 141 |
| 138 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ | 142 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ |
| 139 | 143 |
| 144 static SkTHashSet<SkString> gUninterestingHashes; |
| 145 |
| 146 static void gather_uninteresting_hashes() { |
| 147 if (!FLAGS_uninterestingHashesFile.isEmpty()) { |
| 148 SkAutoTUnref<SkData> data(SkData::NewFromFileName(FLAGS_uninterestingHas
hesFile[0])); |
| 149 SkTArray<SkString> hashes; |
| 150 SkStrSplit((const char*)data->data(), "\n", &hashes); |
| 151 for (const SkString& hash : hashes) { |
| 152 gUninterestingHashes.add(hash); |
| 153 } |
| 154 } |
| 155 } |
| 156 |
| 157 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*/ |
| 158 |
| 140 template <typename T> | 159 template <typename T> |
| 141 struct Tagged : public SkAutoTDelete<T> { | 160 struct Tagged : public SkAutoTDelete<T> { |
| 142 const char* tag; | 161 const char* tag; |
| 143 const char* options; | 162 const char* options; |
| 144 }; | 163 }; |
| 145 | 164 |
| 146 static const bool kMemcpyOK = true; | 165 static const bool kMemcpyOK = true; |
| 147 | 166 |
| 148 static SkTArray<Tagged<Src>, kMemcpyOK> gSrcs; | 167 static SkTArray<Tagged<Src>, kMemcpyOK> gSrcs; |
| 149 static SkTArray<Tagged<Sink>, kMemcpyOK> gSinks; | 168 static SkTArray<Tagged<Sink>, kMemcpyOK> gSinks; |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 task->src.options, name, md5))) { | 447 task->src.options, name, md5))) { |
| 429 fail(SkStringPrintf("%s not found for %s %s %s %s in %s", | 448 fail(SkStringPrintf("%s not found for %s %s %s %s in %s", |
| 430 md5.c_str(), | 449 md5.c_str(), |
| 431 task->sink.tag, | 450 task->sink.tag, |
| 432 task->src.tag, | 451 task->src.tag, |
| 433 task->src.options, | 452 task->src.options, |
| 434 name.c_str(), | 453 name.c_str(), |
| 435 FLAGS_readPath[0])); | 454 FLAGS_readPath[0])); |
| 436 } | 455 } |
| 437 | 456 |
| 438 if (!FLAGS_writePath.isEmpty()) { | 457 if (!FLAGS_writePath.isEmpty() && !gUninterestingHashes.contains(md5
)) { |
| 439 const char* ext = task->sink->fileExtension(); | 458 const char* ext = task->sink->fileExtension(); |
| 440 if (data->getLength()) { | 459 if (data->getLength()) { |
| 441 WriteToDisk(*task, md5, ext, data, data->getLength(), NULL); | 460 WriteToDisk(*task, md5, ext, data, data->getLength(), NULL); |
| 442 SkASSERT(bitmap.drawsNothing()); | 461 SkASSERT(bitmap.drawsNothing()); |
| 443 } else if (!bitmap.drawsNothing()) { | 462 } else if (!bitmap.drawsNothing()) { |
| 444 WriteToDisk(*task, md5, ext, NULL, 0, &bitmap); | 463 WriteToDisk(*task, md5, ext, NULL, 0, &bitmap); |
| 445 } | 464 } |
| 446 } | 465 } |
| 447 } | 466 } |
| 448 timer.end(); | 467 timer.end(); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 SetupCrashHandler(); | 637 SetupCrashHandler(); |
| 619 SkAutoGraphics ag; | 638 SkAutoGraphics ag; |
| 620 SkTaskGroup::Enabler enabled(FLAGS_threads); | 639 SkTaskGroup::Enabler enabled(FLAGS_threads); |
| 621 if (FLAGS_leaks) { | 640 if (FLAGS_leaks) { |
| 622 SkInstCountPrintLeaksOnExit(); | 641 SkInstCountPrintLeaksOnExit(); |
| 623 } | 642 } |
| 624 | 643 |
| 625 start_keepalive(); | 644 start_keepalive(); |
| 626 | 645 |
| 627 gather_gold(); | 646 gather_gold(); |
| 647 gather_uninteresting_hashes(); |
| 628 | 648 |
| 629 gather_srcs(); | 649 gather_srcs(); |
| 630 gather_sinks(); | 650 gather_sinks(); |
| 631 gather_tests(); | 651 gather_tests(); |
| 632 | 652 |
| 633 gPending = gSrcs.count() * gSinks.count() + gThreadedTests.count() + gGPUTes
ts.count(); | 653 gPending = gSrcs.count() * gSinks.count() + gThreadedTests.count() + gGPUTes
ts.count(); |
| 634 SkDebugf("%d srcs * %d sinks + %d tests == %d tasks\n", | 654 SkDebugf("%d srcs * %d sinks + %d tests == %d tasks\n", |
| 635 gSrcs.count(), gSinks.count(), gThreadedTests.count() + gGPUTests.c
ount(), gPending); | 655 gSrcs.count(), gSinks.count(), gThreadedTests.count() + gGPUTests.c
ount(), gPending); |
| 636 | 656 |
| 637 // We try to exploit as much parallelism as is safe. Most Src/Sink pairs ru
n on any thread, | 657 // We try to exploit as much parallelism as is safe. Most Src/Sink pairs ru
n on any thread, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 } | 698 } |
| 679 return 0; | 699 return 0; |
| 680 } | 700 } |
| 681 | 701 |
| 682 #if !defined(SK_BUILD_FOR_IOS) | 702 #if !defined(SK_BUILD_FOR_IOS) |
| 683 int main(int argc, char** argv) { | 703 int main(int argc, char** argv) { |
| 684 SkCommandLineFlags::Parse(argc, argv); | 704 SkCommandLineFlags::Parse(argc, argv); |
| 685 return dm_main(); | 705 return dm_main(); |
| 686 } | 706 } |
| 687 #endif | 707 #endif |
| OLD | NEW |