8 #ifndef GrProcessorUnitTest_DEFINED
9 #define GrProcessorUnitTest_DEFINED
11 #include "../private/SkTArray.h"
12 #include "GrTestUtils.h"
21 namespace GrProcessorUnitTest {
25 kSkiaPMTextureIdx = 0,
51 , fDrawContext(drawContext) {
52 fTextures[0] = textures[0];
53 fTextures[1] = textures[1];
62 #if SK_ALLOW_STATIC_GLOBAL_INITIALIZERS
67 template <
class Processor>
class GrProcessorTestFactory : SkNoncopyable {
71 GrProcessorTestFactory(MakeProc makeProc) {
73 GetFactories()->push_back(
this);
79 SkASSERT(GetFactories()->count());
80 uint32_t idx = data->fRandom->nextRangeU(0, GetFactories()->count() - 1);
81 return MakeIdx(idx, data);
85 static int Count() {
return GetFactories()->count(); }
89 GrProcessorTestFactory<Processor>* factory = (*GetFactories())[idx];
90 return factory->fMakeProc(data);
96 static void VerifyFactoryCount();
101 static SkTArray<GrProcessorTestFactory<Processor>*,
true>* GetFactories();
107 #define GR_DECLARE_GEOMETRY_PROCESSOR_TEST \
108 static GrProcessorTestFactory<GrGeometryProcessor> gTestFactory SK_UNUSED; \
109 static sk_sp<GrGeometryProcessor> TestCreate(GrProcessorTestData*)
111 #define GR_DECLARE_FRAGMENT_PROCESSOR_TEST \
112 static GrProcessorTestFactory<GrFragmentProcessor> gTestFactory SK_UNUSED; \
113 static sk_sp<GrFragmentProcessor> TestCreate(GrProcessorTestData*)
115 #define GR_DECLARE_XP_FACTORY_TEST \
116 static GrProcessorTestFactory<GrXPFactory> gTestFactory SK_UNUSED; \
117 static sk_sp<GrXPFactory> TestCreate(GrProcessorTestData*)
123 #define GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Effect) \
124 GrProcessorTestFactory<GrFragmentProcessor> Effect :: gTestFactory(Effect :: TestCreate)
126 #define GR_DEFINE_XP_FACTORY_TEST(Factory) \
127 GrProcessorTestFactory<GrXPFactory> Factory :: gTestFactory(Factory :: TestCreate)
129 #define GR_DEFINE_GEOMETRY_PROCESSOR_TEST(Effect) \
130 GrProcessorTestFactory<GrGeometryProcessor> Effect :: gTestFactory(Effect :: TestCreate)
132 #else // !SK_ALLOW_STATIC_GLOBAL_INITIALIZERS
136 #define GR_DECLARE_FRAGMENT_PROCESSOR_TEST \
137 static sk_sp<GrFragmentProcessor> TestCreate(GrProcessorTestData*)
138 #define GR_DEFINE_FRAGMENT_PROCESSOR_TEST(X)
142 #define GR_DECLARE_XP_FACTORY_TEST \
143 static sk_sp<GrXPFactory> TestCreate(GrProcessorTestData*)
144 #define GR_DEFINE_XP_FACTORY_TEST(X)
148 #define GR_DECLARE_GEOMETRY_PROCESSOR_TEST \
149 static sk_sp<GrGeometryProcessor> TestCreate(GrProcessorTestData*)
150 #define GR_DEFINE_GEOMETRY_PROCESSOR_TEST(X)
152 #endif // !SK_ALLOW_STATIC_GLOBAL_INITIALIZERS
Represents the capabilities of a GrContext.
Definition: GrCaps.h:130
The SkMatrix class holds a 3x3 matrix for transforming coordinates.
Definition: SkMatrix.h:26
Shared pointer class to wrap classes that support a ref()/unref() interface.
Definition: SkRefCnt.h:258
Definition: GrDrawContext.h:51
Definition: GrContext.h:48
Definition: GrProcessorUnitTest.h:42
Provides custom shader code to the Ganesh shading pipeline.
Definition: GrProcessor.h:60
Definition: GrTexture.h:19