• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
35 namespace deqp
36 {
37 namespace gls
38 {
39 namespace fboc
40 {
41 
42 namespace details
43 {
44 
45 using glu::RenderContext;
46 using tcu::TestCase;
47 using tcu::TestContext;
48 typedef TestCase::IterateResult IterateResult;
49 using tcu::TestCaseGroup;
50 using tcu::TestLog;
51 using std::string;
52 
53 using namespace glw;
54 using namespace deqp::gls::FboUtil;
55 using namespace deqp::gls::FboUtil::config;
56 
57 class Context
58 {
59 public:
60 							Context					(TestContext& testCtx,
61 													 RenderContext& renderCtx,
62 													 CheckerFactory& factory);
getRenderContext(void) const63 	RenderContext&			getRenderContext		(void) const { return m_renderCtx; }
getTestContext(void) const64 	TestContext&			getTestContext			(void) const { return m_testCtx; }
getVerifier(void) const65 	const FboVerifier&		getVerifier				(void) const { return m_verifier; }
getCoreFormats(void) const66 	const FormatDB&			getCoreFormats			(void) const { return m_coreFormats; }
getCtxFormats(void) const67 	const FormatDB&			getCtxFormats			(void) const { return m_ctxFormats; }
getAllFormats(void) const68 	const FormatDB&			getAllFormats			(void) const { return m_allFormats; }
haveMultiColorAtts(void) const69 	bool					haveMultiColorAtts		(void) const { return m_haveMultiColorAtts; }
setHaveMulticolorAtts(bool have)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);
76 private:
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 
86 class TestBase : public TestCase
87 {
88 public:
getContext(void) const89 	Context&				getContext			(void) const { return m_ctx; }
90 
91 protected:
92 
TestBase(Context & ctx,const string & name,const string & desc)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
116 Image* 				makeImage			(GLenum bufType, ImageFormat format,
117 										 GLsizei width, GLsizei height, FboBuilder& builder);
118 Attachment*			makeAttachment		(GLenum bufType, ImageFormat format,
119 										 GLsizei width, GLsizei height, FboBuilder& builder);
120 
121 template <typename P>
122 class ParamTest : public TestBase
123 {
124 public:
125 	typedef P	Params;
ParamTest(Context & ctx,const Params & params)126 				ParamTest		(Context& ctx, const Params& params)
127 					: TestBase	(ctx, Params::getName(params), Params::getDescription(params))
128 					, m_params	(params) {}
129 
130 protected:
131 	Params		m_params;
132 };
133 
134 // Shorthand utility
135 const glw::Functions& gl (const TestBase& test);
136 
137 } // details
138 
139 using details::Context;
140 using details::TestBase;
141 using details::ParamTest;
142 using details::gl;
143 
144 } // fboc
145 } // gls
146 } // deqp
147 
148 #endif // _GLSFBOCOMPLETENESSTESTS_HPP
149