From: Peter Gal Date: Wed, 26 Aug 2015 12:42:30 +0000 (+0200) Subject: ShaderRenderCase: Templatize ShaderRenderCase to help building instances X-Git-Tag: upstream/0.1.0~812^2~521^2~6^2~54 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b5bd6978ed63066de611861bfb8016b063eb4da3;p=platform%2Fupstream%2FVK-GL-CTS.git ShaderRenderCase: Templatize ShaderRenderCase to help building instances --- diff --git a/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCase.cpp b/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCase.cpp index a48ecc8..111925e 100644 --- a/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCase.cpp +++ b/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCase.cpp @@ -279,47 +279,6 @@ void ShaderEvaluator::evaluate (ShaderEvalContext& ctx) m_evalFunc(ctx); } -// ShaderRenderCase -ShaderRenderCase::ShaderRenderCase (tcu::TestContext& testCtx, - const string& name, - const string& description, - bool isVertexCase, - ShaderEvalFunc evalFunc) - : vkt::TestCase(testCtx, name, description) - , m_isVertexCase(isVertexCase) - , m_evaluator(new ShaderEvaluator(evalFunc)) -{ -} - -ShaderRenderCase::ShaderRenderCase (tcu::TestContext& testCtx, - const string& name, - const string& description, - bool isVertexCase, - ShaderEvaluator* evaluator) - : vkt::TestCase(testCtx, name, description) - , m_isVertexCase(isVertexCase) - , m_evaluator(evaluator) -{ -} - -ShaderRenderCase::~ShaderRenderCase (void) -{ -} - -void ShaderRenderCase::initPrograms (vk::ProgramCollection& programCollection) const -{ - if (!m_vertShaderSource.empty()) - programCollection.add(m_name + "_vert") << glu::VertexSource(m_vertShaderSource); - - if (!m_fragShaderSource.empty()) - programCollection.add(m_name + "_frag") << glu::FragmentSource(m_fragShaderSource); -} - -TestInstance* ShaderRenderCase::createInstance (Context& context) const -{ - return new ShaderRenderCaseInstance(context, m_name, m_isVertexCase, *m_evaluator); -} - // ShaderRenderCaseInstance. ShaderRenderCaseInstance::ShaderRenderCaseInstance (Context& context, const string& name, bool isVertexCase, ShaderEvaluator& evaluator) diff --git a/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCase.hpp b/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCase.hpp index a07a779..14c3662 100644 --- a/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCase.hpp +++ b/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCase.hpp @@ -141,6 +141,7 @@ private: }; +template class ShaderRenderCase : public vkt::TestCase { public: @@ -148,16 +149,34 @@ public: const std::string& name, const std::string& description, bool isVertexCase, - ShaderEvalFunc evalFunc); + ShaderEvalFunc evalFunc) + : vkt::TestCase(testCtx, name, description) + , m_isVertexCase(isVertexCase) + , m_evaluator(new ShaderEvaluator(evalFunc)) + {} + ShaderRenderCase (tcu::TestContext& testCtx, const std::string& name, const std::string& description, bool isVertexCase, - ShaderEvaluator* evaulator); + ShaderEvaluator* evaluator) + : vkt::TestCase(testCtx, name, description) + , m_isVertexCase(isVertexCase) + , m_evaluator(evaluator) + {} + + + virtual ~ShaderRenderCase (void) {} + virtual void initPrograms (vk::ProgramCollection& programCollection) const + { + if (!m_vertShaderSource.empty()) + programCollection.add(m_name + "_vert") << glu::VertexSource(m_vertShaderSource); + + if (!m_fragShaderSource.empty()) + programCollection.add(m_name + "_frag") << glu::FragmentSource(m_fragShaderSource); + } - virtual ~ShaderRenderCase (void); - virtual void initPrograms (vk::ProgramCollection& programCollection) const; - virtual TestInstance* createInstance (Context& context) const; + virtual TestInstance* createInstance (Context& context) const { return new Instance(context, m_name, m_isVertexCase, *m_evaluator); } protected: std::string m_vertShaderSource; diff --git a/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCaseTests.cpp b/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCaseTests.cpp index f2bf446..0aad6ec 100644 --- a/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCaseTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrendercase/vktShaderRenderCaseTests.cpp @@ -10,11 +10,26 @@ namespace vkt namespace shaderrendercase { +inline void eval_DEBUG (ShaderEvalContext& c) { c.color.x() = 100; } + +class DummyTestRenderCase : public ShaderRenderCase +{ +public: + DummyTestRenderCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + bool isVertexCase, + ShaderEvalFunc evalFunc) + : ShaderRenderCase(testCtx, name, description, isVertexCase, evalFunc) + {} +}; + tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx) { de::MovePtr shaderRenderCaseTests (new tcu::TestCaseGroup(testCtx, "shaderRenderCase", "ShaderRenderCase Tests")); - shaderRenderCaseTests->addChild(new ShaderRenderCase(testCtx, "test", "test", false, evalCoordsPassthrough)); + shaderRenderCaseTests->addChild(new DummyTestRenderCase(testCtx, "testVertex", "testVertex", true, eval_DEBUG)); + shaderRenderCaseTests->addChild(new DummyTestRenderCase(testCtx, "testFragment", "testFragment", false, eval_DEBUG)); return shaderRenderCaseTests.release(); }