xref: /aosp_15_r20/external/deqp/modules/glshared/glsFboCompletenessTests.hpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
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 &params)
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