| Index: tests/skia_test.cpp
|
| diff --git a/tests/skia_test.cpp b/tests/skia_test.cpp
|
| index 48d87719d562c31c4cb7a3116f49d96fb41e4992..3ecb67673e86f611d8597ef7ce728239c350eb86 100644
|
| --- a/tests/skia_test.cpp
|
| +++ b/tests/skia_test.cpp
|
| @@ -17,6 +17,7 @@
|
|
|
| #if SK_SUPPORT_GPU
|
| #include "GrContext.h"
|
| +#include "GrContextFactory.h"
|
| #endif
|
|
|
| using namespace skiatest;
|
| @@ -29,8 +30,6 @@ DEFINE_string2(match, m, NULL, "[~][^]substring[$] [...] of test name to run.\n"
|
| "^ and $ requires an exact match\n" \
|
| "If a test does not match any list entry,\n" \
|
| "it is skipped unless some list entry starts with ~");
|
| -DEFINE_string2(tmpDir, t, NULL, "tmp directory for tests to use.");
|
| -DEFINE_string2(resourcePath, i, "resources", "directory for test resources.");
|
| DEFINE_bool2(extendedTest, x, false, "run extended tests for pathOps.");
|
| DEFINE_bool2(leaks, l, false, "show leaked ref cnt'd objects.");
|
| DEFINE_bool2(single, z, false, "run tests on a single thread internally.");
|
| @@ -40,6 +39,7 @@ DEFINE_bool(cpu, true, "whether or not to run CPU tests.");
|
| DEFINE_bool(gpu, true, "whether or not to run GPU tests.");
|
| DEFINE_int32(threads, SkThreadPool::kThreadPerCore,
|
| "Run threadsafe tests on a threadpool with this many threads.");
|
| +DEFINE_string2(resourcePath, i, "resources", "directory for test resources.");
|
|
|
| // need to explicitly declare this, or we get some weird infinite loop llist
|
| template TestRegistry* TestRegistry::gHead;
|
| @@ -98,16 +98,6 @@ private:
|
| const int fTotal;
|
| };
|
|
|
| -SkString Test::GetTmpDir() {
|
| - const char* tmpDir = FLAGS_tmpDir.isEmpty() ? NULL : FLAGS_tmpDir[0];
|
| - return SkString(tmpDir);
|
| -}
|
| -
|
| -SkString Test::GetResourcePath() {
|
| - const char* resourcePath = FLAGS_resourcePath.isEmpty() ? NULL : FLAGS_resourcePath[0];
|
| - return SkString(resourcePath);
|
| -}
|
| -
|
| // Deletes self when run.
|
| class SkTestRunnable : public SkRunnable {
|
| public:
|
| @@ -144,6 +134,7 @@ int tool_main(int argc, char** argv);
|
| int tool_main(int argc, char** argv) {
|
| SkCommandLineFlags::SetUsage("");
|
| SkCommandLineFlags::Parse(argc, argv);
|
| + Test::SetResourcePath(FLAGS_resourcePath[0]);
|
|
|
| #if SK_ENABLE_INST_COUNT
|
| if (FLAGS_leaks) {
|
| @@ -199,7 +190,7 @@ int tool_main(int argc, char** argv) {
|
| int skipCount = 0;
|
|
|
| SkThreadPool threadpool(FLAGS_threads);
|
| - SkTArray<Test*> unsafeTests; // Always passes ownership to an SkTestRunnable
|
| + SkTArray<Test*> gpuTests; // Always passes ownership to an SkTestRunnable
|
|
|
| DebugfReporter reporter(toRun);
|
| for (int i = 0; i < total; i++) {
|
| @@ -207,15 +198,23 @@ int tool_main(int argc, char** argv) {
|
| if (!should_run(test->getName(), test->isGPUTest())) {
|
| ++skipCount;
|
| } else if (test->isGPUTest()) {
|
| - unsafeTests.push_back() = test.detach();
|
| + gpuTests.push_back() = test.detach();
|
| } else {
|
| threadpool.add(SkNEW_ARGS(SkTestRunnable, (test.detach(), &failCount)));
|
| }
|
| }
|
|
|
| - // Run the tests that aren't threadsafe.
|
| - for (int i = 0; i < unsafeTests.count(); i++) {
|
| - SkNEW_ARGS(SkTestRunnable, (unsafeTests[i], &failCount))->run();
|
| +#if SK_SUPPORT_GPU
|
| + // Give GPU tests a context factory if that makes sense on this machine.
|
| + GrContextFactory grContextFactory;
|
| + for (int i = 0; i < gpuTests.count(); i++) {
|
| + gpuTests[i]->setGrContextFactory(&grContextFactory);
|
| + }
|
| +#endif
|
| +
|
| + // Run GPU tests on this thread.
|
| + for (int i = 0; i < gpuTests.count(); i++) {
|
| + SkNEW_ARGS(SkTestRunnable, (gpuTests[i], &failCount))->run();
|
| }
|
|
|
| // Block until threaded tests finish.
|
| @@ -226,7 +225,6 @@ int tool_main(int argc, char** argv) {
|
| toRun, failCount, skipCount, reporter.countTests());
|
| }
|
| SkGraphics::Term();
|
| - GpuTest::DestroyContexts();
|
|
|
| SkDebugf("\n");
|
| return (failCount == 0) ? 0 : 1;
|
|
|