aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@google.com>2014-09-03 14:17:48 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-09-03 14:17:48 -0700
commit2460bbdfbb1d55ef307c3189c661e65de1a7affb (patch)
tree62342a335023875d1482447bea9e29e8a0ba22fb /tools
parent9c7207b5dc71dc5a96a2eb107d401133333d5b6f (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.cpp7
-rw-r--r--tools/flags/SkCommonFlags.h1
-rw-r--r--tools/iOSShell.cpp1
-rw-r--r--tools/skpdiff/SkDiffContext.cpp17
-rw-r--r--tools/valgrind.supp9
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
-}