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 |