aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/README
diff options
context:
space:
mode:
authorGravatar mtklein@google.com <mtklein@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-10-16 13:02:15 +0000
committerGravatar mtklein@google.com <mtklein@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-10-16 13:02:15 +0000
commitd36522d12d3e71958e50683a7eef43dc2a47d96d (patch)
tree3645838c92e0144a6e70984edb74ce0c7c3bd829 /dm/README
parentbeede90eae4b76b97722d5f576ea5cb81df98af7 (diff)
dm is like gm, but faster and with fewer features.
This is sort of the near-minimal proof-of-concept skeleton. - It can run existing GMs. - It supports most configs (just not PDF). - --replay is the only "fancy" feature it currently supports Hopefully you will be disturbed by its speed. BUG= R=epoger@google.com Review URL: https://codereview.chromium.org/22839016 git-svn-id: http://skia.googlecode.com/svn/trunk@11802 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'dm/README')
-rw-r--r--dm/README37
1 files changed, 37 insertions, 0 deletions
diff --git a/dm/README b/dm/README
new file mode 100644
index 0000000000..bce9a7e768
--- /dev/null
+++ b/dm/README
@@ -0,0 +1,37 @@
+DM is like GM, but multithreaded. It doesn't do everything GM does yet.
+
+Current approximate list of missing features:
+ --mismatchPath
+ --missingExpectationsPath
+ --writePath
+ --writePicturePath
+
+ --deferred / --pipe
+ --rtree
+ --serialize
+ --tiledGrid
+
+
+DM's design is based around Tasks and a TaskRunner.
+
+A Task represents an independent unit of work that might fail. We make a task
+for each GM/configuration pair we want to run. Tasks can kick off new tasks
+themselves. For example, a CpuTask can kick off a ReplayTask to make sure
+recording and playing back an SkPicture gives the same result as direct
+rendering.
+
+The TaskRunner runs all tasks on one of two threadpools, whose sizes are
+configurable by --cpuThreads and --gpuThreads. Ideally we'd run these on a
+single threadpool but it can swamp the GPU if we shove too much work into it at
+once. --cpuThreads defaults to the number of cores on the machine.
+--gpuThreads defaults to 1, but you may find 2 or 4 runs a little faster.
+
+So the main flow of DM is:
+
+ for each GM:
+ for each configuration:
+ kick off a new task
+ < tasks run, maybe fail, and maybe kick off new tasks >
+ wait for all tasks to finish
+ report failures
+