diff options
author | mtklein <mtklein@google.com> | 2014-09-03 14:17:48 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-03 14:17:48 -0700 |
commit | 2460bbdfbb1d55ef307c3189c661e65de1a7affb (patch) | |
tree | 62342a335023875d1482447bea9e29e8a0ba22fb /tools | |
parent | 9c7207b5dc71dc5a96a2eb107d401133333d5b6f (diff) |
Revert of SkThreadPool ~~> SkTaskGroup (patchset #4 id:60001 of https://codereview.chromium.org/531653002/)
Reason for revert:
Leaks, leaks, leaks.
Original issue's description:
> SkThreadPool ~~> SkTaskGroup
>
> 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, reed@google.com, mtklein@chromium.org
TBR=bsalomon@google.com, bungeman@google.com, caryclark@google.com, mtklein@chromium.org, reed@google.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Author: mtklein@google.com
Review URL: https://codereview.chromium.org/533393002
Diffstat (limited to 'tools')
-rw-r--r-- | tools/flags/SkCommonFlags.cpp | 7 | ||||
-rw-r--r-- | tools/flags/SkCommonFlags.h | 1 | ||||
-rw-r--r-- | tools/iOSShell.cpp | 1 | ||||
-rw-r--r-- | tools/skpdiff/SkDiffContext.cpp | 17 | ||||
-rw-r--r-- | tools/valgrind.supp | 9 |
5 files changed, 18 insertions, 17 deletions
diff --git a/tools/flags/SkCommonFlags.cpp b/tools/flags/SkCommonFlags.cpp index 7776c36a59..4d08ba6340 100644 --- a/tools/flags/SkCommonFlags.cpp +++ b/tools/flags/SkCommonFlags.cpp @@ -6,6 +6,7 @@ */ #include "SkCommonFlags.h" +#include "SkThreadPool.h" DEFINE_string(config, "565 8888 pdf gpu nonrendering angle", "Options: 565 8888 pdf gpu nonrendering msaa4 msaa16 nvprmsaa4 nvprmsaa16 " @@ -41,10 +42,12 @@ 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_bool2(single, z, false, "run tests on a single thread internally."); + 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_int32(threads, SkThreadPool::kThreadPerCore, + "run threadsafe tests on a threadpool with this many threads."); DEFINE_bool2(verbose, v, false, "enable verbose output from the test driver."); diff --git a/tools/flags/SkCommonFlags.h b/tools/flags/SkCommonFlags.h index ecd4148448..b45ef0738a 100644 --- a/tools/flags/SkCommonFlags.h +++ b/tools/flags/SkCommonFlags.h @@ -20,6 +20,7 @@ DECLARE_string(match); DECLARE_bool(quiet); DECLARE_bool(resetGpuContext); DECLARE_bool(abandonGpuContext); +DECLARE_bool(single); DECLARE_string(skps); DECLARE_int32(threads); DECLARE_string(resourcePath); diff --git a/tools/iOSShell.cpp b/tools/iOSShell.cpp index 8656e645aa..49be34d65b 100644 --- a/tools/iOSShell.cpp +++ b/tools/iOSShell.cpp @@ -12,6 +12,7 @@ #include "SkCanvas.h" #include "SkCommonFlags.h" #include "SkGraphics.h" +#include "SkThreadPool.h" #include "SkWindow.h" #include "sk_tool_utils.h" diff --git a/tools/skpdiff/SkDiffContext.cpp b/tools/skpdiff/SkDiffContext.cpp index 78d8400968..42d20de19d 100644 --- a/tools/skpdiff/SkDiffContext.cpp +++ b/tools/skpdiff/SkDiffContext.cpp @@ -12,7 +12,7 @@ #include "SkSize.h" #include "SkStream.h" #include "SkTDict.h" -#include "SkTaskGroup.h" +#include "SkThreadPool.h" // from the tools directory for replace_char(...) #include "picture_utils.h" @@ -24,6 +24,7 @@ SkDiffContext::SkDiffContext() { fDiffers = NULL; fDifferCount = 0; + fThreadCount = SkThreadPool::kThreadPerCore; } SkDiffContext::~SkDiffContext() { @@ -86,7 +87,7 @@ static SkString get_common_prefix(const SkString& a, const SkString& b) { } static SkString get_combined_name(const SkString& a, const SkString& b) { - // Note (stephana): We must keep this function in sync with + // Note (stephana): We must keep this function in sync with // getImageDiffRelativeUrl() in static/loader.js (under rebaseline_server). SkString result = a; result.append("-vs-"); @@ -237,7 +238,7 @@ void SkDiffContext::diffDirectories(const char baselinePath[], const char testPa return; } - SkTaskGroup tg; + SkThreadPool threadPool(fThreadCount); SkTArray<SkThreadedDiff> runnableDiffs; runnableDiffs.reset(baselineEntries.count()); @@ -252,11 +253,13 @@ void SkDiffContext::diffDirectories(const char baselinePath[], const char testPa if (sk_exists(testFile.c_str()) && !sk_isdir(testFile.c_str())) { // Queue up the comparison with the differ runnableDiffs[x].setup(this, baselineFile, testFile); - tg.add(&runnableDiffs[x]); + threadPool.add(&runnableDiffs[x]); } else { SkDebugf("Baseline file \"%s\" has no corresponding test file\n", baselineFile.c_str()); } } + + threadPool.wait(); } @@ -281,14 +284,16 @@ void SkDiffContext::diffPatterns(const char baselinePattern[], const char testPa return; } - SkTaskGroup tg; + SkThreadPool threadPool(fThreadCount); SkTArray<SkThreadedDiff> runnableDiffs; runnableDiffs.reset(baselineEntries.count()); for (int x = 0; x < baselineEntries.count(); x++) { runnableDiffs[x].setup(this, baselineEntries[x], testEntries[x]); - tg.add(&runnableDiffs[x]); + threadPool.add(&runnableDiffs[x]); } + + threadPool.wait(); } void SkDiffContext::outputRecords(SkWStream& stream, bool useJSONP) { diff --git a/tools/valgrind.supp b/tools/valgrind.supp index f0331ed4cb..d96ada04e7 100644 --- a/tools/valgrind.supp +++ b/tools/valgrind.supp @@ -213,12 +213,3 @@ Memcheck:Addr2 fun:_ZN22GrAAConvexPathRenderer10onDrawPathERK6SkPathRK11SkStrokeRecP12GrDrawTargetb } - -{ - sk_task_group_thread_pool_intentionally_leaks_in_Release_mode - Memcheck:Leak - ... - fun:_ZN8SkThreadC1EPFvPvES0_ - ... - fun:_ZN11SkTaskGroup3addEP10SkRunnable -} |