| OLD | NEW |
| 1 // Main binary for DM. | 1 // Main binary for DM. |
| 2 // For a high-level overview, please see dm/README. | 2 // For a high-level overview, please see dm/README. |
| 3 | 3 |
| 4 #include "CrashHandler.h" | 4 #include "CrashHandler.h" |
| 5 #include "SkCommonFlags.h" | 5 #include "SkCommonFlags.h" |
| 6 #include "SkForceLinking.h" | 6 #include "SkForceLinking.h" |
| 7 #include "SkGraphics.h" | 7 #include "SkGraphics.h" |
| 8 #include "SkPicture.h" | 8 #include "SkPicture.h" |
| 9 #include "SkString.h" | 9 #include "SkString.h" |
| 10 #include "Test.h" | 10 #include "Test.h" |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 for (int i = 0; i < tests.count(); i++) { | 112 for (int i = 0; i < tests.count(); i++) { |
| 113 SkAutoTDelete<Test> test(tests[i](NULL)); | 113 SkAutoTDelete<Test> test(tests[i](NULL)); |
| 114 if (test->isGPUTest()) { | 114 if (test->isGPUTest()) { |
| 115 tasks->add(SkNEW_ARGS(DM::GpuTestTask, (reporter, tasks, tests[i])))
; | 115 tasks->add(SkNEW_ARGS(DM::GpuTestTask, (reporter, tasks, tests[i])))
; |
| 116 } else { | 116 } else { |
| 117 tasks->add(SkNEW_ARGS(DM::CpuTestTask, (reporter, tasks, tests[i])))
; | 117 tasks->add(SkNEW_ARGS(DM::CpuTestTask, (reporter, tasks, tests[i])))
; |
| 118 } | 118 } |
| 119 } | 119 } |
| 120 } | 120 } |
| 121 | 121 |
| 122 static void kick_off_skps(DM::Reporter* reporter, DM::TaskRunner* tasks) { | 122 static void find_skps(SkTArray<SkString>* skps) { |
| 123 if (FLAGS_skps.isEmpty()) { | 123 if (FLAGS_skps.isEmpty()) { |
| 124 return; | 124 return; |
| 125 } | 125 } |
| 126 | 126 |
| 127 SkOSFile::Iter it(FLAGS_skps[0], ".skp"); | 127 SkOSFile::Iter it(FLAGS_skps[0], ".skp"); |
| 128 SkString filename; | 128 SkString filename; |
| 129 while (it.next(&filename)) { | 129 while (it.next(&filename)) { |
| 130 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, filename.c_str())) { | 130 if (!SkCommandLineFlags::ShouldSkip(FLAGS_match, filename.c_str())) { |
| 131 continue; | 131 skps->push_back( |
| 132 SkOSPath::SkPathJoin(FLAGS_skps[0], filename.c_str())); |
| 132 } | 133 } |
| 134 } |
| 135 } |
| 133 | 136 |
| 134 const SkString path = SkOSPath::SkPathJoin(FLAGS_skps[0], filename.c_str
()); | 137 static void kick_off_skps(const SkTArray<SkString>& skps, |
| 135 | 138 DM::Reporter* reporter, DM::TaskRunner* tasks) { |
| 136 SkAutoTDelete<SkStream> stream(SkStream::NewFromFile(path.c_str())); | 139 for (int i = 0; i < skps.count(); ++i) { |
| 140 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(skps[i].c_str())); |
| 137 if (stream.get() == NULL) { | 141 if (stream.get() == NULL) { |
| 138 SkDebugf("Could not read %s.\n", path.c_str()); | 142 SkDebugf("Could not read %s.\n", skps[i].c_str()); |
| 139 exit(1); | 143 exit(1); |
| 140 } | 144 } |
| 141 SkAutoTUnref<SkPicture> pic(SkPicture::CreateFromStream(stream.get())); | 145 SkAutoTUnref<SkPicture> pic(SkPicture::CreateFromStream(stream.get())); |
| 142 if (pic.get() == NULL) { | 146 if (pic.get() == NULL) { |
| 143 SkDebugf("Could not read %s as an SkPicture.\n", path.c_str()); | 147 SkDebugf("Could not read %s as an SkPicture.\n", skps[i].c_str()); |
| 144 exit(1); | 148 exit(1); |
| 145 } | 149 } |
| 146 | 150 |
| 151 SkString filename = SkOSPath::SkBasename(skps[i].c_str()); |
| 147 tasks->add(SkNEW_ARGS(DM::SKPTask, (reporter, tasks, pic, filename))); | 152 tasks->add(SkNEW_ARGS(DM::SKPTask, (reporter, tasks, pic, filename))); |
| 148 tasks->add(SkNEW_ARGS(DM::PDFTask, (reporter, tasks, pic, filename, | 153 tasks->add(SkNEW_ARGS(DM::PDFTask, (reporter, tasks, pic, filename, |
| 149 RASTERIZE_PDF_PROC))); | 154 RASTERIZE_PDF_PROC))); |
| 150 } | 155 } |
| 151 } | 156 } |
| 152 | 157 |
| 153 static void report_failures(const SkTArray<SkString>& failures) { | 158 static void report_failures(const SkTArray<SkString>& failures) { |
| 154 if (failures.count() == 0) { | 159 if (failures.count() == 0) { |
| 155 return; | 160 return; |
| 156 } | 161 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 expectations.reset(SkNEW_ARGS(DM::JsonExpectations, (path))); | 219 expectations.reset(SkNEW_ARGS(DM::JsonExpectations, (path))); |
| 215 } | 220 } |
| 216 } | 221 } |
| 217 } | 222 } |
| 218 | 223 |
| 219 SkTDArray<TestRegistry::Factory> tests; | 224 SkTDArray<TestRegistry::Factory> tests; |
| 220 if (FLAGS_tests) { | 225 if (FLAGS_tests) { |
| 221 append_matching_factories<Test>(TestRegistry::Head(), &tests); | 226 append_matching_factories<Test>(TestRegistry::Head(), &tests); |
| 222 } | 227 } |
| 223 | 228 |
| 224 SkDebugf("%d GMs x %d configs, %d tests\n", | 229 SkTArray<SkString> skps; |
| 225 gms.count(), configs.count(), tests.count()); | 230 find_skps(&skps); |
| 231 |
| 232 SkDebugf("%d GMs x %d configs, %d tests, %d pictures\n", |
| 233 gms.count(), configs.count(), tests.count(), skps.count()); |
| 226 DM::Reporter reporter; | 234 DM::Reporter reporter; |
| 227 DM::TaskRunner tasks(FLAGS_threads, FLAGS_gpuThreads); | 235 DM::TaskRunner tasks(FLAGS_threads, FLAGS_gpuThreads); |
| 228 kick_off_gms(gms, configs, gpuAPI, *expectations, &reporter, &tasks); | 236 kick_off_gms(gms, configs, gpuAPI, *expectations, &reporter, &tasks); |
| 229 kick_off_tests(tests, &reporter, &tasks); | 237 kick_off_tests(tests, &reporter, &tasks); |
| 230 kick_off_skps(&reporter, &tasks); | 238 kick_off_skps(skps, &reporter, &tasks); |
| 231 tasks.wait(); | 239 tasks.wait(); |
| 232 | 240 |
| 233 SkDebugf("\n"); | 241 SkDebugf("\n"); |
| 234 | 242 |
| 235 SkTArray<SkString> failures; | 243 SkTArray<SkString> failures; |
| 236 reporter.getFailures(&failures); | 244 reporter.getFailures(&failures); |
| 237 report_failures(failures); | 245 report_failures(failures); |
| 238 return failures.count() > 0; | 246 return failures.count() > 0; |
| 239 } | 247 } |
| 240 | 248 |
| 241 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 249 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) |
| 242 int main(int argc, char** argv) { | 250 int main(int argc, char** argv) { |
| 243 SkCommandLineFlags::Parse(argc, argv); | 251 SkCommandLineFlags::Parse(argc, argv); |
| 244 return dm_main(); | 252 return dm_main(); |
| 245 } | 253 } |
| 246 #endif | 254 #endif |
| OLD | NEW |