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<glu::ProgramSources>& 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)
};
+template<typename Instance>
class ShaderRenderCase : public vkt::TestCase
{
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<glu::ProgramSources>& 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<glu::ProgramSources>& 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;
namespace shaderrendercase
{
+inline void eval_DEBUG (ShaderEvalContext& c) { c.color.x() = 100; }
+
+class DummyTestRenderCase : public ShaderRenderCase<ShaderRenderCaseInstance>
+{
+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<tcu::TestCaseGroup> 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();
}