OLD | NEW |
1 DM is like GM, but multithreaded. It doesn't do everything GM does yet. | 1 DM is like GM, but multithreaded. It doesn't do everything GM does yet. |
2 | 2 |
3 Current approximate list of missing features: | 3 Current approximate list of missing features: |
4 --config pdf | 4 --config pdf |
5 --mismatchPath | 5 --mismatchPath |
6 --missingExpectationsPath | 6 --missingExpectationsPath |
7 --writePicturePath | 7 --writePicturePath |
8 | 8 |
9 --deferred | 9 --deferred |
10 --tiledGrid | |
11 | 10 |
12 | 11 |
13 DM's design is based around Tasks and a TaskRunner. | 12 DM's design is based around Tasks and a TaskRunner. |
14 | 13 |
15 A Task represents an independent unit of work that might fail. We make a task | 14 A Task represents an independent unit of work that might fail. We make a task |
16 for each GM/configuration pair we want to run. Tasks can kick off new tasks | 15 for each GM/configuration pair we want to run. Tasks can kick off new tasks |
17 themselves. For example, a CpuTask can kick off a ReplayTask to make sure | 16 themselves. For example, a CpuTask can kick off a ReplayTask to make sure |
18 recording and playing back an SkPicture gives the same result as direct | 17 recording and playing back an SkPicture gives the same result as direct |
19 rendering. | 18 rendering. |
20 | 19 |
21 The TaskRunner runs all tasks on one of two threadpools, whose sizes are | 20 The TaskRunner runs all tasks on one of two threadpools, whose sizes are |
22 configurable by --cpuThreads and --gpuThreads. Ideally we'd run these on a | 21 configurable by --cpuThreads and --gpuThreads. Ideally we'd run these on a |
23 single threadpool but it can swamp the GPU if we shove too much work into it at | 22 single threadpool but it can swamp the GPU if we shove too much work into it at |
24 once. --cpuThreads defaults to the number of cores on the machine. | 23 once. --cpuThreads defaults to the number of cores on the machine. |
25 --gpuThreads defaults to 1, but you may find 2 or 4 runs a little faster. | 24 --gpuThreads defaults to 1, but you may find 2 or 4 runs a little faster. |
26 | 25 |
27 So the main flow of DM is: | 26 So the main flow of DM is: |
28 | 27 |
29 for each GM: | 28 for each GM: |
30 for each configuration: | 29 for each configuration: |
31 kick off a new task | 30 kick off a new task |
32 < tasks run, maybe fail, and maybe kick off new tasks > | 31 < tasks run, maybe fail, and maybe kick off new tasks > |
33 wait for all tasks to finish | 32 wait for all tasks to finish |
34 report failures | 33 report failures |
35 | 34 |
OLD | NEW |