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