1*35238bceSAndroid Build Coastguard Worker #ifndef _GLSFBOCOMPLETENESSTESTS_HPP 2*35238bceSAndroid Build Coastguard Worker #define _GLSFBOCOMPLETENESSTESTS_HPP 3*35238bceSAndroid Build Coastguard Worker 4*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 5*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL (ES) Module 6*35238bceSAndroid Build Coastguard Worker * ----------------------------------------------- 7*35238bceSAndroid Build Coastguard Worker * 8*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project 9*35238bceSAndroid Build Coastguard Worker * 10*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 11*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 12*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 13*35238bceSAndroid Build Coastguard Worker * 14*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 15*35238bceSAndroid Build Coastguard Worker * 16*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 17*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 18*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 20*35238bceSAndroid Build Coastguard Worker * limitations under the License. 21*35238bceSAndroid Build Coastguard Worker * 22*35238bceSAndroid Build Coastguard Worker *//*! 23*35238bceSAndroid Build Coastguard Worker * \file 24*35238bceSAndroid Build Coastguard Worker * \brief Common parts for ES2/3 framebuffer completeness tests. 25*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/ 26*35238bceSAndroid Build Coastguard Worker 27*35238bceSAndroid Build Coastguard Worker #include "tcuTestCase.hpp" 28*35238bceSAndroid Build Coastguard Worker #include "gluRenderContext.hpp" 29*35238bceSAndroid Build Coastguard Worker #include "glsFboUtil.hpp" 30*35238bceSAndroid Build Coastguard Worker #include "glwDefs.hpp" 31*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp" 32*35238bceSAndroid Build Coastguard Worker #include "tcuTestCase.hpp" 33*35238bceSAndroid Build Coastguard Worker #include "tcuTestLog.hpp" 34*35238bceSAndroid Build Coastguard Worker 35*35238bceSAndroid Build Coastguard Worker namespace deqp 36*35238bceSAndroid Build Coastguard Worker { 37*35238bceSAndroid Build Coastguard Worker namespace gls 38*35238bceSAndroid Build Coastguard Worker { 39*35238bceSAndroid Build Coastguard Worker namespace fboc 40*35238bceSAndroid Build Coastguard Worker { 41*35238bceSAndroid Build Coastguard Worker 42*35238bceSAndroid Build Coastguard Worker namespace details 43*35238bceSAndroid Build Coastguard Worker { 44*35238bceSAndroid Build Coastguard Worker 45*35238bceSAndroid Build Coastguard Worker using glu::RenderContext; 46*35238bceSAndroid Build Coastguard Worker using tcu::TestCase; 47*35238bceSAndroid Build Coastguard Worker using tcu::TestContext; 48*35238bceSAndroid Build Coastguard Worker typedef TestCase::IterateResult IterateResult; 49*35238bceSAndroid Build Coastguard Worker using std::string; 50*35238bceSAndroid Build Coastguard Worker using tcu::TestCaseGroup; 51*35238bceSAndroid Build Coastguard Worker using tcu::TestLog; 52*35238bceSAndroid Build Coastguard Worker 53*35238bceSAndroid Build Coastguard Worker using namespace glw; 54*35238bceSAndroid Build Coastguard Worker using namespace deqp::gls::FboUtil; 55*35238bceSAndroid Build Coastguard Worker using namespace deqp::gls::FboUtil::config; 56*35238bceSAndroid Build Coastguard Worker 57*35238bceSAndroid Build Coastguard Worker class Context 58*35238bceSAndroid Build Coastguard Worker { 59*35238bceSAndroid Build Coastguard Worker public: 60*35238bceSAndroid Build Coastguard Worker Context(TestContext &testCtx, RenderContext &renderCtx, CheckerFactory &factory); getRenderContext(void) const61*35238bceSAndroid Build Coastguard Worker RenderContext &getRenderContext(void) const 62*35238bceSAndroid Build Coastguard Worker { 63*35238bceSAndroid Build Coastguard Worker return m_renderCtx; 64*35238bceSAndroid Build Coastguard Worker } getTestContext(void) const65*35238bceSAndroid Build Coastguard Worker TestContext &getTestContext(void) const 66*35238bceSAndroid Build Coastguard Worker { 67*35238bceSAndroid Build Coastguard Worker return m_testCtx; 68*35238bceSAndroid Build Coastguard Worker } getVerifier(void) const69*35238bceSAndroid Build Coastguard Worker const FboVerifier &getVerifier(void) const 70*35238bceSAndroid Build Coastguard Worker { 71*35238bceSAndroid Build Coastguard Worker return m_verifier; 72*35238bceSAndroid Build Coastguard Worker } getCoreFormats(void) const73*35238bceSAndroid Build Coastguard Worker const FormatDB &getCoreFormats(void) const 74*35238bceSAndroid Build Coastguard Worker { 75*35238bceSAndroid Build Coastguard Worker return m_coreFormats; 76*35238bceSAndroid Build Coastguard Worker } getCtxFormats(void) const77*35238bceSAndroid Build Coastguard Worker const FormatDB &getCtxFormats(void) const 78*35238bceSAndroid Build Coastguard Worker { 79*35238bceSAndroid Build Coastguard Worker return m_ctxFormats; 80*35238bceSAndroid Build Coastguard Worker } getAllFormats(void) const81*35238bceSAndroid Build Coastguard Worker const FormatDB &getAllFormats(void) const 82*35238bceSAndroid Build Coastguard Worker { 83*35238bceSAndroid Build Coastguard Worker return m_allFormats; 84*35238bceSAndroid Build Coastguard Worker } haveMultiColorAtts(void) const85*35238bceSAndroid Build Coastguard Worker bool haveMultiColorAtts(void) const 86*35238bceSAndroid Build Coastguard Worker { 87*35238bceSAndroid Build Coastguard Worker return m_haveMultiColorAtts; 88*35238bceSAndroid Build Coastguard Worker } setHaveMulticolorAtts(bool have)89*35238bceSAndroid Build Coastguard Worker void setHaveMulticolorAtts(bool have) 90*35238bceSAndroid Build Coastguard Worker { 91*35238bceSAndroid Build Coastguard Worker m_haveMultiColorAtts = have; 92*35238bceSAndroid Build Coastguard Worker } 93*35238bceSAndroid Build Coastguard Worker void addFormats(FormatEntries fmtRange); 94*35238bceSAndroid Build Coastguard Worker void addExtFormats(FormatExtEntries extRange); 95*35238bceSAndroid Build Coastguard Worker TestCaseGroup *createRenderableTests(void); 96*35238bceSAndroid Build Coastguard Worker TestCaseGroup *createAttachmentTests(void); 97*35238bceSAndroid Build Coastguard Worker TestCaseGroup *createSizeTests(void); 98*35238bceSAndroid Build Coastguard Worker 99*35238bceSAndroid Build Coastguard Worker private: 100*35238bceSAndroid Build Coastguard Worker TestContext &m_testCtx; 101*35238bceSAndroid Build Coastguard Worker RenderContext &m_renderCtx; 102*35238bceSAndroid Build Coastguard Worker FormatDB m_coreFormats; 103*35238bceSAndroid Build Coastguard Worker FormatDB m_ctxFormats; 104*35238bceSAndroid Build Coastguard Worker FormatDB m_allFormats; 105*35238bceSAndroid Build Coastguard Worker FboVerifier m_verifier; 106*35238bceSAndroid Build Coastguard Worker bool m_haveMultiColorAtts; 107*35238bceSAndroid Build Coastguard Worker }; 108*35238bceSAndroid Build Coastguard Worker 109*35238bceSAndroid Build Coastguard Worker class TestBase : public TestCase 110*35238bceSAndroid Build Coastguard Worker { 111*35238bceSAndroid Build Coastguard Worker public: getContext(void) const112*35238bceSAndroid Build Coastguard Worker Context &getContext(void) const 113*35238bceSAndroid Build Coastguard Worker { 114*35238bceSAndroid Build Coastguard Worker return m_ctx; 115*35238bceSAndroid Build Coastguard Worker } 116*35238bceSAndroid Build Coastguard Worker 117*35238bceSAndroid Build Coastguard Worker protected: TestBase(Context & ctx,const string & name,const string & desc)118*35238bceSAndroid Build Coastguard Worker TestBase(Context &ctx, const string &name, const string &desc) 119*35238bceSAndroid Build Coastguard Worker : TestCase(ctx.getTestContext(), name.c_str(), desc.c_str()) 120*35238bceSAndroid Build Coastguard Worker , m_ctx(ctx) 121*35238bceSAndroid Build Coastguard Worker { 122*35238bceSAndroid Build Coastguard Worker } 123*35238bceSAndroid Build Coastguard Worker void fail(const char *msg); 124*35238bceSAndroid Build Coastguard Worker void qualityWarning(const char *msg); 125*35238bceSAndroid Build Coastguard Worker void pass(void); 126*35238bceSAndroid Build Coastguard Worker void checkFbo(FboBuilder &builder); 127*35238bceSAndroid Build Coastguard Worker ImageFormat getDefaultFormat(GLenum attPoint, GLenum bufType) const; 128*35238bceSAndroid Build Coastguard Worker 129*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void); 130*35238bceSAndroid Build Coastguard Worker 131*35238bceSAndroid Build Coastguard Worker virtual IterateResult build(FboBuilder &builder); 132*35238bceSAndroid Build Coastguard Worker 133*35238bceSAndroid Build Coastguard Worker void attachTargetToNew(GLenum target, GLenum bufType, ImageFormat format, GLsizei width, GLsizei height, 134*35238bceSAndroid Build Coastguard Worker FboBuilder &builder); 135*35238bceSAndroid Build Coastguard Worker Context &m_ctx; 136*35238bceSAndroid Build Coastguard Worker }; 137*35238bceSAndroid Build Coastguard Worker 138*35238bceSAndroid Build Coastguard Worker // Utilities for building 139*35238bceSAndroid Build Coastguard Worker Image *makeImage(GLenum bufType, ImageFormat format, GLsizei width, GLsizei height, FboBuilder &builder); 140*35238bceSAndroid Build Coastguard Worker Attachment *makeAttachment(GLenum bufType, ImageFormat format, GLsizei width, GLsizei height, FboBuilder &builder); 141*35238bceSAndroid Build Coastguard Worker 142*35238bceSAndroid Build Coastguard Worker template <typename P> 143*35238bceSAndroid Build Coastguard Worker class ParamTest : public TestBase 144*35238bceSAndroid Build Coastguard Worker { 145*35238bceSAndroid Build Coastguard Worker public: 146*35238bceSAndroid Build Coastguard Worker typedef P Params; ParamTest(Context & ctx,const Params & params)147*35238bceSAndroid Build Coastguard Worker ParamTest(Context &ctx, const Params ¶ms) 148*35238bceSAndroid Build Coastguard Worker : TestBase(ctx, Params::getName(params), Params::getDescription(params)) 149*35238bceSAndroid Build Coastguard Worker , m_params(params) 150*35238bceSAndroid Build Coastguard Worker { 151*35238bceSAndroid Build Coastguard Worker } 152*35238bceSAndroid Build Coastguard Worker 153*35238bceSAndroid Build Coastguard Worker protected: 154*35238bceSAndroid Build Coastguard Worker Params m_params; 155*35238bceSAndroid Build Coastguard Worker }; 156*35238bceSAndroid Build Coastguard Worker 157*35238bceSAndroid Build Coastguard Worker // Shorthand utility 158*35238bceSAndroid Build Coastguard Worker const glw::Functions &gl(const TestBase &test); 159*35238bceSAndroid Build Coastguard Worker 160*35238bceSAndroid Build Coastguard Worker } // namespace details 161*35238bceSAndroid Build Coastguard Worker 162*35238bceSAndroid Build Coastguard Worker using details::Context; 163*35238bceSAndroid Build Coastguard Worker using details::gl; 164*35238bceSAndroid Build Coastguard Worker using details::ParamTest; 165*35238bceSAndroid Build Coastguard Worker using details::TestBase; 166*35238bceSAndroid Build Coastguard Worker 167*35238bceSAndroid Build Coastguard Worker } // namespace fboc 168*35238bceSAndroid Build Coastguard Worker } // namespace gls 169*35238bceSAndroid Build Coastguard Worker } // namespace deqp 170*35238bceSAndroid Build Coastguard Worker 171*35238bceSAndroid Build Coastguard Worker #endif // _GLSFBOCOMPLETENESSTESTS_HPP 172