aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-07-24 10:16:19 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-24 15:43:09 +0000
commit1c053644a844db6b6ef454db10b058072e5c4249 (patch)
tree3c1734a6b4a35b8d575057127793b6ad00e2c0b0 /src
parent8e5be413c10bc5fa816f56a8b69f9962c4565eac (diff)
Make GrProcessorTestFactory be templated on smart ptr class rather than processor class.
This is part of setting the stage for moving GrFragmentProcessor to unique_ptr ownership. Change-Id: I2dfb4977319605d56c4debe05ff0b3dc970bb4c5 Reviewed-on: https://skia-review.googlesource.com/26141 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/gpu/GrProcessor.cpp22
-rw-r--r--src/gpu/GrProcessorUnitTest.cpp2
-rw-r--r--src/gpu/GrProcessorUnitTest.h34
3 files changed, 31 insertions, 27 deletions
diff --git a/src/gpu/GrProcessor.cpp b/src/gpu/GrProcessor.cpp
index bff33489fa..52aae6854c 100644
--- a/src/gpu/GrProcessor.cpp
+++ b/src/gpu/GrProcessor.cpp
@@ -33,17 +33,15 @@ class GrGeometryProcessor;
* Originally these were both in the processor unit test header, but then it seemed to cause linker
* problems on android.
*/
-template<>
-SkTArray<GrProcessorTestFactory<GrFragmentProcessor>*, true>*
-GrProcessorTestFactory<GrFragmentProcessor>::GetFactories() {
- static SkTArray<GrProcessorTestFactory<GrFragmentProcessor>*, true> gFactories;
+template <>
+SkTArray<GrFragmentProcessorTestFactory*, true>* GrFragmentProcessorTestFactory::GetFactories() {
+ static SkTArray<GrFragmentProcessorTestFactory*, true> gFactories;
return &gFactories;
}
-template<>
-SkTArray<GrProcessorTestFactory<GrGeometryProcessor>*, true>*
-GrProcessorTestFactory<GrGeometryProcessor>::GetFactories() {
- static SkTArray<GrProcessorTestFactory<GrGeometryProcessor>*, true> gFactories;
+template <>
+SkTArray<GrGeometryProcessorTestFactory*, true>* GrGeometryProcessorTestFactory::GetFactories() {
+ static SkTArray<GrGeometryProcessorTestFactory*, true> gFactories;
return &gFactories;
}
@@ -61,8 +59,8 @@ static const int kFPFactoryCount = 42;
static const int kGPFactoryCount = 14;
static const int kXPFactoryCount = 4;
-template<>
-void GrProcessorTestFactory<GrFragmentProcessor>::VerifyFactoryCount() {
+template <>
+void GrFragmentProcessorTestFactory::VerifyFactoryCount() {
if (kFPFactoryCount != GetFactories()->count()) {
SkDebugf("\nExpected %d fragment processor factories, found %d.\n",
kFPFactoryCount, GetFactories()->count());
@@ -70,8 +68,8 @@ void GrProcessorTestFactory<GrFragmentProcessor>::VerifyFactoryCount() {
}
}
-template<>
-void GrProcessorTestFactory<GrGeometryProcessor>::VerifyFactoryCount() {
+template <>
+void GrGeometryProcessorTestFactory::VerifyFactoryCount() {
if (kGPFactoryCount != GetFactories()->count()) {
SkDebugf("\nExpected %d geometry processor factories, found %d.\n",
kGPFactoryCount, GetFactories()->count());
diff --git a/src/gpu/GrProcessorUnitTest.cpp b/src/gpu/GrProcessorUnitTest.cpp
index 71b112d20f..563fd7c843 100644
--- a/src/gpu/GrProcessorUnitTest.cpp
+++ b/src/gpu/GrProcessorUnitTest.cpp
@@ -14,7 +14,7 @@ sk_sp<GrFragmentProcessor> GrProcessorUnitTest::MakeChildFP(GrProcessorTestData*
#if SK_ALLOW_STATIC_GLOBAL_INITIALIZERS
sk_sp<GrFragmentProcessor> fp;
do {
- fp = GrProcessorTestFactory<GrFragmentProcessor>::Make(data);
+ fp = GrFragmentProcessorTestFactory::Make(data);
SkASSERT(fp);
} while (fp->numChildProcessors() != 0);
return fp;
diff --git a/src/gpu/GrProcessorUnitTest.h b/src/gpu/GrProcessorUnitTest.h
index 5a5f5d3c0f..10ba9289ca 100644
--- a/src/gpu/GrProcessorUnitTest.h
+++ b/src/gpu/GrProcessorUnitTest.h
@@ -23,6 +23,7 @@ class GrRenderTargetContext;
struct GrProcessorTestData;
class GrTexture;
class GrXPFactory;
+class GrGeometryProcessor;
namespace GrProcessorUnitTest {
@@ -75,9 +76,11 @@ private:
class GrProcessor;
class GrTexture;
-template <class Processor> class GrProcessorTestFactory : private SkNoncopyable {
+template <class ProcessorSmartPtr>
+class GrProcessorTestFactory : private SkNoncopyable {
public:
- typedef sk_sp<Processor> (*MakeProc)(GrProcessorTestData*);
+ using Processor = typename ProcessorSmartPtr::element_type;
+ using MakeProc = ProcessorSmartPtr (*)(GrProcessorTestData*);
GrProcessorTestFactory(MakeProc makeProc) {
fMakeProc = makeProc;
@@ -85,7 +88,7 @@ public:
}
/** Pick a random factory function and create a processor. */
- static sk_sp<Processor> Make(GrProcessorTestData* data) {
+ static ProcessorSmartPtr Make(GrProcessorTestData* data) {
VerifyFactoryCount();
SkASSERT(GetFactories()->count());
uint32_t idx = data->fRandom->nextRangeU(0, GetFactories()->count() - 1);
@@ -97,8 +100,8 @@ public:
/** Use factory function at Index idx to create a processor. */
static sk_sp<Processor> MakeIdx(int idx, GrProcessorTestData* data) {
- GrProcessorTestFactory<Processor>* factory = (*GetFactories())[idx];
- sk_sp<Processor> processor = factory->fMakeProc(data);
+ GrProcessorTestFactory<ProcessorSmartPtr>* factory = (*GetFactories())[idx];
+ ProcessorSmartPtr processor = factory->fMakeProc(data);
SkASSERT(processor);
return processor;
}
@@ -111,9 +114,12 @@ private:
MakeProc fMakeProc;
- static SkTArray<GrProcessorTestFactory<Processor>*, true>* GetFactories();
+ static SkTArray<GrProcessorTestFactory<ProcessorSmartPtr>*, true>* GetFactories();
};
+using GrFragmentProcessorTestFactory = GrProcessorTestFactory<sk_sp<GrFragmentProcessor>>;
+using GrGeometryProcessorTestFactory = GrProcessorTestFactory<sk_sp<GrGeometryProcessor>>;
+
class GrXPFactoryTestFactory : private SkNoncopyable {
public:
using GetFn = const GrXPFactory*(GrProcessorTestData*);
@@ -139,12 +145,12 @@ private:
/** GrProcessor subclasses should insert this macro in their declaration to be included in the
* program generation unit test.
*/
-#define GR_DECLARE_GEOMETRY_PROCESSOR_TEST \
- static GrProcessorTestFactory<GrGeometryProcessor> gTestFactory SK_UNUSED; \
+#define GR_DECLARE_GEOMETRY_PROCESSOR_TEST \
+ static GrGeometryProcessorTestFactory gTestFactory SK_UNUSED; \
static sk_sp<GrGeometryProcessor> TestCreate(GrProcessorTestData*);
-#define GR_DECLARE_FRAGMENT_PROCESSOR_TEST \
- static GrProcessorTestFactory<GrFragmentProcessor> gTestFactory SK_UNUSED; \
+#define GR_DECLARE_FRAGMENT_PROCESSOR_TEST \
+ static GrFragmentProcessorTestFactory gTestFactory SK_UNUSED; \
static sk_sp<GrFragmentProcessor> TestCreate(GrProcessorTestData*);
#define GR_DECLARE_XP_FACTORY_TEST \
@@ -155,11 +161,11 @@ private:
* also implement this static function:
* GrProcessor* TestCreate(GrProcessorTestData*);
*/
-#define GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Effect) \
- GrProcessorTestFactory<GrFragmentProcessor> Effect::gTestFactory(Effect::TestCreate)
+#define GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Effect) \
+ GrFragmentProcessorTestFactory Effect::gTestFactory(Effect::TestCreate)
-#define GR_DEFINE_GEOMETRY_PROCESSOR_TEST(Effect) \
- GrProcessorTestFactory<GrGeometryProcessor> Effect::gTestFactory(Effect::TestCreate)
+#define GR_DEFINE_GEOMETRY_PROCESSOR_TEST(Effect) \
+ GrGeometryProcessorTestFactory Effect::gTestFactory(Effect::TestCreate)
#define GR_DEFINE_XP_FACTORY_TEST(Factory) \
GrXPFactoryTestFactory Factory::gTestFactory(Factory::TestGet)