406654be7a
SkTaskGroup is like SkThreadPool except the threads stay in one global pool. Each SkTaskGroup itself is tiny (4 bytes) and its wait() method applies only to tasks add()ed to that instance, not the whole thread pool. This means we don't need to bring up new thread pools when tests themselves want to use multithreading (e.g. pathops, quilt). We just create a new SkTaskGroup and wait for that to complete. This should be more efficient, and allow us to expand where we use threads to really latency sensitive places. E.g. we can probably now use these in nanobench for CPU .skp rendering. Now that all threads are sharing the same pool, I think we can remove most of the custom mechanism pathops tests use to control threading. They'll just ride on the global pool with all other tests now. This (temporarily?) removes the GPU multithreading feature from DM, which we don't use. On my desktop, DM runs a little faster (57s -> 55s) in Debug, and a lot faster in Release (36s -> 24s). The bots show speedups of similar proportions, cutting more than a minute off the N4/Release and Win7/Debug runtimes. BUG=skia: Committed: https://skia.googlesource.com/skia/+/9c7207b5dc71dc5a96a2eb107d401133333d5b6f R=caryclark@google.com, bsalomon@google.com, bungeman@google.com, mtklein@google.com, reed@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/531653002
54 lines
2.2 KiB
C++
54 lines
2.2 KiB
C++
/*
|
|
* Copyright 2014 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#include "SkCommonFlags.h"
|
|
|
|
DEFINE_string(config, "565 8888 pdf gpu nonrendering angle",
|
|
"Options: 565 8888 pdf gpu nonrendering msaa4 msaa16 nvprmsaa4 nvprmsaa16 "
|
|
"gpunull gpudebug angle mesa");
|
|
|
|
DEFINE_bool(cpu, true, "master switch for running CPU-bound work.");
|
|
|
|
DEFINE_bool(dryRun, false,
|
|
"just print the tests that would be run, without actually running them.");
|
|
|
|
DEFINE_bool(gpu, true, "master switch for running GPU-bound work.");
|
|
|
|
DEFINE_string(gpuAPI, "", "Force use of specific gpu API. Using \"gl\" "
|
|
"forces OpenGL API. Using \"gles\" forces OpenGL ES API. "
|
|
"Defaults to empty string, which selects the API native to the "
|
|
"system.");
|
|
|
|
DEFINE_bool2(leaks, l, false, "show leaked ref cnt'd objects.");
|
|
|
|
DEFINE_string2(match, m, NULL,
|
|
"[~][^]substring[$] [...] of GM name to run.\n"
|
|
"Multiple matches may be separated by spaces.\n"
|
|
"~ causes a matching GM to always be skipped\n"
|
|
"^ requires the start of the GM to match\n"
|
|
"$ requires the end of the GM to match\n"
|
|
"^ and $ requires an exact match\n"
|
|
"If a GM does not match any list entry,\n"
|
|
"it is skipped unless some list entry starts with ~");
|
|
|
|
DEFINE_bool2(quiet, q, false, "if true, don't print status updates.");
|
|
|
|
DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test.");
|
|
DEFINE_bool(abandonGpuContext, false, "Abandon the GrContext after running each test. "
|
|
"Implies --resetGpuContext.");
|
|
|
|
DEFINE_string(skps, "skps", "Directory to read skps from.");
|
|
|
|
DEFINE_int32(threads, 0, "Run threadsafe tests on a threadpool with this many threads, "
|
|
"defaulting to one thread per core.");
|
|
|
|
DEFINE_bool2(verbose, v, false, "enable verbose output from the test driver.");
|
|
|
|
DEFINE_bool2(veryVerbose, V, false, "tell individual tests to be verbose.");
|
|
|
|
DEFINE_string2(writePath, w, "", "If set, write bitmaps here as .pngs.");
|