• Home
Name Date Size #Lines LOC

..--

DM.cppD03-May-202410.4 KiB283246

DMBenchTask.cppD03-May-20242.7 KiB8468

DMBenchTask.hD03-May-20241.7 KiB6549

DMCpuGMTask.cppD03-May-20242.1 KiB6454

DMCpuGMTask.hD03-May-20241 KiB4231

DMExpectations.hD03-May-20241.2 KiB4732

DMExpectationsTask.cppD03-May-2024547 2217

DMExpectationsTask.hD03-May-2024772 3020

DMGpuGMTask.cppD03-May-20241.7 KiB5242

DMGpuGMTask.hD03-May-20241 KiB4333

DMGpuSupport.hD03-May-20241.5 KiB6137

DMPDFRasterizeTask.cppD03-May-2024897 3825

DMPDFRasterizeTask.hD03-May-2024942 4125

DMPDFTask.cppD03-May-20242.9 KiB10274

DMPDFTask.hD03-May-20241.1 KiB4934

DMPipeTask.cppD03-May-20242.3 KiB8370

DMPipeTask.hD03-May-20241 KiB4230

DMQuiltTask.cppD03-May-20242 KiB6954

DMQuiltTask.hD03-May-2024901 3423

DMRecordTask.cppD03-May-20241.6 KiB6449

DMRecordTask.hD03-May-2024937 4029

DMReplayTask.cppD03-May-20241.4 KiB5646

DMReplayTask.hD03-May-20241,006 4029

DMReporter.cppD03-May-20241.2 KiB4533

DMReporter.hD03-May-2024839 3724

DMSKPTask.cppD03-May-2024791 2418

DMSKPTask.hD03-May-2024686 3121

DMSerializeTask.cppD03-May-20241.2 KiB4434

DMSerializeTask.hD03-May-2024753 3423

DMTask.cppD03-May-20242.3 KiB8764

DMTask.hD03-May-20241.7 KiB7447

DMTaskRunner.cppD03-May-2024734 2212

DMTaskRunner.hD03-May-2024719 3321

DMTestTask.cppD03-May-20241.9 KiB6247

DMTestTask.hD03-May-20241.5 KiB6346

DMUtil.cppD03-May-20243.2 KiB10383

DMUtil.hD03-May-20241.2 KiB4320

DMWriteTask.cppD03-May-20246.5 KiB196147

DMWriteTask.hD03-May-20241.3 KiB5235

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