| Index: tests/PathOpsSkpClipTest.cpp
|
| diff --git a/tests/PathOpsSkpClipTest.cpp b/tests/PathOpsSkpClipTest.cpp
|
| index 076914168558283fd32d61d3861e0f1d537b6f8e..cdc3c1fcd910d8e2c2062e078126cb9c84b80bab 100755
|
| --- a/tests/PathOpsSkpClipTest.cpp
|
| +++ b/tests/PathOpsSkpClipTest.cpp
|
| @@ -20,8 +20,8 @@
|
| #include "SkString.h"
|
| #include "SkTArray.h"
|
| #include "SkTDArray.h"
|
| -#include "SkTaskGroup.h"
|
| #include "SkTemplates.h"
|
| +#include "SkThreadPool.h"
|
| #include "SkTime.h"
|
|
|
| __SK_FORCE_IMAGE_DECODER_LINKING;
|
| @@ -90,14 +90,14 @@
|
| }
|
| if (filename) {
|
| path.appendf("%s%s", PATH_SLASH, filename);
|
| - if (!sk_exists(path.c_str())) {
|
| + if (!sk_exists(path.c_str())) {
|
| SkDebugf("could not read %s\n", path.c_str());
|
| return SkString();
|
| }
|
| }
|
| return path;
|
| }
|
| -
|
| +
|
| static void make_recursive_dir(const SkString& path) {
|
| if (sk_exists(path.c_str())) {
|
| return;
|
| @@ -129,7 +129,7 @@
|
| make_recursive_dir(path);
|
| return path;
|
| }
|
| -
|
| +
|
| static SkString get_sum_path(const char* dirName) {
|
| SkString path;
|
| SkASSERT(dirName);
|
| @@ -166,12 +166,12 @@
|
| fTestStep = kCompareBits;
|
| fScale = 1;
|
| }
|
| -
|
| +
|
| void init(int dirNo, const SkString& filename) {
|
| fDirNo = dirNo;
|
| strcpy(fFilename, filename.c_str());
|
| fTestStep = kCompareBits;
|
| - fScale = 1;
|
| + fScale = 1;
|
| }
|
|
|
| SkString status() {
|
| @@ -204,7 +204,7 @@
|
| }
|
|
|
| void testOne();
|
| -
|
| +
|
| char fFilename[kMaxLength];
|
| TestStep fTestStep;
|
| int fDirNo;
|
| @@ -245,8 +245,13 @@
|
| };
|
|
|
| struct TestRunner {
|
| + TestRunner(int threadCount)
|
| + : fNumThreads(threadCount) {
|
| + }
|
| +
|
| ~TestRunner();
|
| void render();
|
| + int fNumThreads;
|
| SkTDArray<class TestRunnable*> fRunnables;
|
| };
|
|
|
| @@ -295,9 +300,9 @@
|
| }
|
|
|
| void TestRunner::render() {
|
| - SkTaskGroup tg;
|
| + SkThreadPool pool(fNumThreads);
|
| for (int index = 0; index < fRunnables.count(); ++ index) {
|
| - tg.add(fRunnables[index]);
|
| + pool.add(fRunnables[index]);
|
| }
|
| }
|
|
|
| @@ -526,10 +531,16 @@
|
| DEFINE_string2(skp, s, NULL, "skp to test");
|
| DEFINE_bool2(single, z, false, "run tests on a single thread internally.");
|
| DEFINE_int32(testIndex, 0, "override local test index (PathOpsSkpClipOneOff only).");
|
| +DEFINE_int32(threads, SkThreadPool::kThreadPerCore,
|
| + "Run threadsafe tests on a threadpool with this many threads.");
|
| DEFINE_bool2(verbose, v, false, "enable verbose output.");
|
|
|
| static bool verbose() {
|
| return FLAGS_verbose;
|
| +}
|
| +
|
| +static int getThreadCount() {
|
| + return FLAGS_single ? 1 : FLAGS_threads;
|
| }
|
|
|
| class Dirs {
|
| @@ -605,7 +616,7 @@
|
| }
|
| return NULL;
|
| }
|
| -
|
| +
|
| void set(const SkCommandLineFlags::StringArray& names) {
|
| fNames = &names;
|
| }
|
| @@ -615,7 +626,7 @@
|
| const SkCommandLineFlags::StringArray* fNames;
|
| } gNames;
|
|
|
| -static bool buildTestDir(int dirNo, int firstDirNo,
|
| +static bool buildTestDir(int dirNo, int firstDirNo,
|
| SkTDArray<TestResult>* tests, SkTDArray<SortByName*>* sorted) {
|
| SkString dirName = get_out_path(dirNo, outStatusDir);
|
| if (!dirName.size()) {
|
| @@ -781,7 +792,8 @@
|
| }
|
| }
|
| }
|
| - TestRunner testRunner;
|
| + int threadCount = getThreadCount();
|
| + TestRunner testRunner(threadCount);
|
| for (int index = 0; index < state.fPixelWorst.count(); ++index) {
|
| const TestResult& result = state.fPixelWorst[index];
|
| SkString filename(result.fFilename);
|
| @@ -853,7 +865,8 @@
|
| DEF_TEST(PathOpsSkpClipThreaded) {
|
| gDirs.setDefault();
|
| initTest();
|
| - TestRunner testRunner;
|
| + int threadCount = getThreadCount();
|
| + TestRunner testRunner(threadCount);
|
| int dirNo;
|
| gDirs.reset();
|
| while ((dirNo = gDirs.next()) > 0) {
|
| @@ -876,7 +889,7 @@
|
| }
|
| encodeFound(state);
|
| }
|
| -
|
| +
|
| static bool buildTests(SkTDArray<TestResult>* tests, SkTDArray<SortByName*>* sorted) {
|
| int firstDirNo = gDirs.first();
|
| int dirNo;
|
| @@ -899,7 +912,8 @@
|
| if (!buildTests(tests.get(), sorted.get())) {
|
| return;
|
| }
|
| - TestRunner testRunner;
|
| + int threadCount = getThreadCount();
|
| + TestRunner testRunner(threadCount);
|
| int dirNo;
|
| gDirs.reset();
|
| while ((dirNo = gDirs.next()) > 0) {
|
|
|