diff options
author | 2015-07-08 14:26:19 -0700 | |
---|---|---|
committer | 2015-07-08 14:26:19 -0700 | |
commit | 0067ff5e0f85084dd2b5ad9886b526482b89a116 (patch) | |
tree | 6c213906df65de39425352f329876e6336a301ac /include/gpu/GrProcessorUnitTest.h | |
parent | 8e0da72ba890de395c9946ec6639c9e1e7b16027 (diff) |
fix up test create functions
TBR=bsalomon@google.com
BUG=skia:
Review URL: https://codereview.chromium.org/1213623022
Diffstat (limited to 'include/gpu/GrProcessorUnitTest.h')
-rw-r--r-- | include/gpu/GrProcessorUnitTest.h | 82 |
1 files changed, 39 insertions, 43 deletions
diff --git a/include/gpu/GrProcessorUnitTest.h b/include/gpu/GrProcessorUnitTest.h index 13b6fc0756..741685a2c7 100644 --- a/include/gpu/GrProcessorUnitTest.h +++ b/include/gpu/GrProcessorUnitTest.h @@ -14,6 +14,7 @@ class SkMatrix; class GrCaps; +class GrContext; namespace GrProcessorUnitTest { // Used to access the dummy textures in TestCreate procs. @@ -24,9 +25,35 @@ enum { } +/* + * GrProcessorTestData is an argument struct to TestCreate functions + * fTextures are valid textures that can optionally be used to construct + * GrTextureAccesses. The first texture has config kSkia8888_GrPixelConfig and the second has + * kAlpha_8_GrPixelConfig. TestCreate functions are also free to create additional textures using + * the GrContext. + */ +struct GrProcessorTestData { + GrProcessorTestData(SkRandom* random, + GrContext* context, + GrShaderDataManager* shaderDataManager, + const GrCaps* caps, + GrTexture* textures[2]) + : fRandom(random) + , fContext(context) + , fShaderDataManager(shaderDataManager) + , fCaps(caps) { + fTextures[0] = textures[0]; + fTextures[1] = textures[1]; + } + SkRandom* fRandom; + GrContext* fContext; + GrShaderDataManager* fShaderDataManager; + const GrCaps* fCaps; + GrTexture* fTextures[2]; +}; + #if SK_ALLOW_STATIC_GLOBAL_INITIALIZERS -class GrContext; class GrProcessor; class GrTexture; @@ -34,25 +61,19 @@ template <class Processor> class GrProcessorTestFactory : SkNoncopyable { public: - typedef Processor* (*CreateProc)(SkRandom*, - GrContext*, - const GrCaps& caps, - GrTexture* dummyTextures[]); + typedef Processor* (*CreateProc)(GrProcessorTestData*); GrProcessorTestFactory(CreateProc createProc) { fCreateProc = createProc; GetFactories()->push_back(this); } - static Processor* CreateStage(SkRandom* random, - GrContext* context, - const GrCaps& caps, - GrTexture* dummyTextures[]) { + static Processor* CreateStage(GrProcessorTestData* data) { VerifyFactoryCount(); SkASSERT(GetFactories()->count()); - uint32_t idx = random->nextRangeU(0, GetFactories()->count() - 1); + uint32_t idx = data->fRandom->nextRangeU(0, GetFactories()->count() - 1); GrProcessorTestFactory<Processor>* factory = (*GetFactories())[idx]; - return factory->fCreateProc(random, context, caps, dummyTextures); + return factory->fCreateProc(data); } /* @@ -71,36 +92,20 @@ private: */ #define GR_DECLARE_GEOMETRY_PROCESSOR_TEST \ static GrProcessorTestFactory<GrGeometryProcessor> gTestFactory SK_UNUSED; \ - static GrGeometryProcessor* TestCreate(SkRandom*, \ - GrContext*, \ - const GrCaps&, \ - GrTexture* dummyTextures[2]) + static GrGeometryProcessor* TestCreate(GrProcessorTestData*) #define GR_DECLARE_FRAGMENT_PROCESSOR_TEST \ static GrProcessorTestFactory<GrFragmentProcessor> gTestFactory SK_UNUSED; \ - static GrFragmentProcessor* TestCreate(SkRandom*, \ - GrContext*, \ - const GrCaps&, \ - GrTexture* dummyTextures[2]) + static GrFragmentProcessor* TestCreate(GrProcessorTestData*) #define GR_DECLARE_XP_FACTORY_TEST \ static GrProcessorTestFactory<GrXPFactory> gTestFactory SK_UNUSED; \ - static GrXPFactory* TestCreate(SkRandom*, \ - GrContext*, \ - const GrCaps&, \ - GrTexture* dummyTextures[2]) + static GrXPFactory* TestCreate(GrProcessorTestData*) /** GrProcessor subclasses should insert this macro in their implementation file. They must then * also implement this static function: - * GrProcessor* TestCreate(SkRandom*, - * GrContext*, - * const GrCaps&, - * GrTexture* dummyTextures[2]); - * dummyTextures[] are valid textures that can optionally be used to construct GrTextureAccesses. - * The first texture has config kSkia8888_GrPixelConfig and the second has - * kAlpha_8_GrPixelConfig. TestCreate functions are also free to create additional textures using - * the GrContext. + * GrProcessor* TestCreate(GrProcessorTestData*); */ #define GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Effect) \ GrProcessorTestFactory<GrFragmentProcessor> Effect :: gTestFactory(Effect :: TestCreate) @@ -116,28 +121,19 @@ private: // The unit test relies on static initializers. Just declare the TestCreate function so that // its definitions will compile. #define GR_DECLARE_FRAGMENT_PROCESSOR_TEST \ - static GrFragmentProcessor* TestCreate(SkRandom*, \ - GrContext*, \ - const GrCaps&, \ - GrTexture* dummyTextures[2]) + static GrFragmentProcessor* TestCreate(GrProcessorTestData*) #define GR_DEFINE_FRAGMENT_PROCESSOR_TEST(X) // The unit test relies on static initializers. Just declare the TestCreate function so that // its definitions will compile. #define GR_DECLARE_XP_FACTORY_TEST \ - static GrXPFactory* TestCreate(SkRandom*, \ - GrContext*, \ - const GrCaps&, \ - GrTexture* dummyTextures[2]) + static GrXPFactory* TestCreate(GrProcessorTestData*) #define GR_DEFINE_XP_FACTORY_TEST(X) // The unit test relies on static initializers. Just declare the TestCreate function so that // its definitions will compile. #define GR_DECLARE_GEOMETRY_PROCESSOR_TEST \ - static GrGeometryProcessor* TestCreate(SkRandom*, \ - GrContext*, \ - const GrCaps&, \ - GrTexture* dummyTextures[2]) + static GrGeometryProcessor* TestCreate(GrProcessorTestData*) #define GR_DEFINE_GEOMETRY_PROCESSOR_TEST(X) #endif // !SK_ALLOW_STATIC_GLOBAL_INITIALIZERS |