• Home
Name Date Size #Lines LOC

..--

DM.cppD03-May-20247.8 KiB250212

DMCpuGMTask.cppD03-May-20242.2 KiB6251

DMCpuGMTask.hD03-May-2024935 3928

DMGpuGMTask.cppD03-May-20241.7 KiB5546

DMGpuGMTask.hD03-May-20241,008 4232

DMGpuSupport.hD03-May-20241.8 KiB7246

DMPDFRasterizeTask.cppD03-May-2024887 3926

DMPDFRasterizeTask.hD03-May-2024998 4225

DMPDFTask.cppD03-May-20243.1 KiB10779

DMPDFTask.hD03-May-20241 KiB4833

DMPipeTask.cppD03-May-20242.3 KiB8471

DMPipeTask.hD03-May-20241 KiB4230

DMQuiltTask.cppD03-May-20243.7 KiB12296

DMQuiltTask.hD03-May-20241.1 KiB4635

DMReporter.cppD03-May-20241.2 KiB4736

DMReporter.hD03-May-2024839 3724

DMSKPTask.cppD03-May-2024945 3224

DMSKPTask.hD03-May-2024698 3121

DMSerializeTask.cppD03-May-20241.6 KiB5443

DMSerializeTask.hD03-May-2024873 4029

DMTask.cppD03-May-20242.6 KiB9269

DMTask.hD03-May-20241.6 KiB7548

DMTaskRunner.cppD03-May-2024376 1813

DMTaskRunner.hD03-May-2024467 3021

DMTestTask.cppD03-May-20241.5 KiB5644

DMTestTask.hD03-May-20241.4 KiB6245

DMUtil.cppD03-May-20243.7 KiB12097

DMUtil.hD03-May-20241.3 KiB4621

DMWriteTask.cppD03-May-20246.1 KiB202164

DMWriteTask.hD03-May-20241.3 KiB4933

READMED03-May-20241 KiB2619

README

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