xref: /aosp_15_r20/external/deqp/modules/glshared/glsAttributeLocationTests.hpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker #ifndef _GLSATTRIBUTELOCATIONTESTS_HPP
2*35238bceSAndroid Build Coastguard Worker #define _GLSATTRIBUTELOCATIONTESTS_HPP
3*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker  * drawElements Quality Program OpenGL (ES) Module
5*35238bceSAndroid Build Coastguard Worker  * -----------------------------------------------
6*35238bceSAndroid Build Coastguard Worker  *
7*35238bceSAndroid Build Coastguard Worker  * Copyright 2014 The Android Open Source Project
8*35238bceSAndroid Build Coastguard Worker  *
9*35238bceSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
10*35238bceSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
11*35238bceSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
12*35238bceSAndroid Build Coastguard Worker  *
13*35238bceSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
14*35238bceSAndroid Build Coastguard Worker  *
15*35238bceSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
16*35238bceSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
17*35238bceSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18*35238bceSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
19*35238bceSAndroid Build Coastguard Worker  * limitations under the License.
20*35238bceSAndroid Build Coastguard Worker  *
21*35238bceSAndroid Build Coastguard Worker  *//*!
22*35238bceSAndroid Build Coastguard Worker  * \file
23*35238bceSAndroid Build Coastguard Worker  * \brief Attribute location tests
24*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
25*35238bceSAndroid Build Coastguard Worker 
26*35238bceSAndroid Build Coastguard Worker #include "tcuDefs.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "tcuTestCase.hpp"
28*35238bceSAndroid Build Coastguard Worker 
29*35238bceSAndroid Build Coastguard Worker #include <string>
30*35238bceSAndroid Build Coastguard Worker #include <vector>
31*35238bceSAndroid Build Coastguard Worker 
32*35238bceSAndroid Build Coastguard Worker namespace glu
33*35238bceSAndroid Build Coastguard Worker {
34*35238bceSAndroid Build Coastguard Worker class ShaderProgram;
35*35238bceSAndroid Build Coastguard Worker class RenderContext;
36*35238bceSAndroid Build Coastguard Worker } // namespace glu
37*35238bceSAndroid Build Coastguard Worker 
38*35238bceSAndroid Build Coastguard Worker namespace deqp
39*35238bceSAndroid Build Coastguard Worker {
40*35238bceSAndroid Build Coastguard Worker namespace gls
41*35238bceSAndroid Build Coastguard Worker {
42*35238bceSAndroid Build Coastguard Worker namespace AttributeLocationTestUtil
43*35238bceSAndroid Build Coastguard Worker {
44*35238bceSAndroid Build Coastguard Worker 
45*35238bceSAndroid Build Coastguard Worker class AttribType
46*35238bceSAndroid Build Coastguard Worker {
47*35238bceSAndroid Build Coastguard Worker public:
48*35238bceSAndroid Build Coastguard Worker     AttribType(const std::string &name, uint32_t locationSize, uint32_t typeEnum);
49*35238bceSAndroid Build Coastguard Worker 
getName(void) const50*35238bceSAndroid Build Coastguard Worker     const std::string &getName(void) const
51*35238bceSAndroid Build Coastguard Worker     {
52*35238bceSAndroid Build Coastguard Worker         return m_name;
53*35238bceSAndroid Build Coastguard Worker     }
getLocationSize(void) const54*35238bceSAndroid Build Coastguard Worker     uint32_t getLocationSize(void) const
55*35238bceSAndroid Build Coastguard Worker     {
56*35238bceSAndroid Build Coastguard Worker         return m_locationSize;
57*35238bceSAndroid Build Coastguard Worker     }
getGLTypeEnum(void) const58*35238bceSAndroid Build Coastguard Worker     uint32_t getGLTypeEnum(void) const
59*35238bceSAndroid Build Coastguard Worker     {
60*35238bceSAndroid Build Coastguard Worker         return m_glTypeEnum;
61*35238bceSAndroid Build Coastguard Worker     }
62*35238bceSAndroid Build Coastguard Worker 
63*35238bceSAndroid Build Coastguard Worker private:
64*35238bceSAndroid Build Coastguard Worker     std::string m_name;
65*35238bceSAndroid Build Coastguard Worker     uint32_t m_locationSize;
66*35238bceSAndroid Build Coastguard Worker     uint32_t m_glTypeEnum;
67*35238bceSAndroid Build Coastguard Worker };
68*35238bceSAndroid Build Coastguard Worker 
69*35238bceSAndroid Build Coastguard Worker class Cond
70*35238bceSAndroid Build Coastguard Worker {
71*35238bceSAndroid Build Coastguard Worker public:
72*35238bceSAndroid Build Coastguard Worker     enum ConstCond
73*35238bceSAndroid Build Coastguard Worker     {
74*35238bceSAndroid Build Coastguard Worker         COND_ALWAYS,
75*35238bceSAndroid Build Coastguard Worker         COND_NEVER
76*35238bceSAndroid Build Coastguard Worker     };
77*35238bceSAndroid Build Coastguard Worker 
78*35238bceSAndroid Build Coastguard Worker     Cond(ConstCond cond);
79*35238bceSAndroid Build Coastguard Worker     explicit Cond(const std::string &name, bool negate = true);
operator ==(const Cond & other) const80*35238bceSAndroid Build Coastguard Worker     bool operator==(const Cond &other) const
81*35238bceSAndroid Build Coastguard Worker     {
82*35238bceSAndroid Build Coastguard Worker         return m_negate == other.m_negate && m_name == other.m_name;
83*35238bceSAndroid Build Coastguard Worker     }
operator !=(const Cond & other) const84*35238bceSAndroid Build Coastguard Worker     bool operator!=(const Cond &other) const
85*35238bceSAndroid Build Coastguard Worker     {
86*35238bceSAndroid Build Coastguard Worker         return !(*this == other);
87*35238bceSAndroid Build Coastguard Worker     }
getName(void) const88*35238bceSAndroid Build Coastguard Worker     const std::string getName(void) const
89*35238bceSAndroid Build Coastguard Worker     {
90*35238bceSAndroid Build Coastguard Worker         return m_name;
91*35238bceSAndroid Build Coastguard Worker     }
getNegate(void) const92*35238bceSAndroid Build Coastguard Worker     bool getNegate(void) const
93*35238bceSAndroid Build Coastguard Worker     {
94*35238bceSAndroid Build Coastguard Worker         return m_negate;
95*35238bceSAndroid Build Coastguard Worker     }
96*35238bceSAndroid Build Coastguard Worker 
97*35238bceSAndroid Build Coastguard Worker private:
98*35238bceSAndroid Build Coastguard Worker     bool m_negate;
99*35238bceSAndroid Build Coastguard Worker     std::string m_name;
100*35238bceSAndroid Build Coastguard Worker };
101*35238bceSAndroid Build Coastguard Worker 
102*35238bceSAndroid Build Coastguard Worker class Attribute
103*35238bceSAndroid Build Coastguard Worker {
104*35238bceSAndroid Build Coastguard Worker public:
105*35238bceSAndroid Build Coastguard Worker     enum
106*35238bceSAndroid Build Coastguard Worker     {
107*35238bceSAndroid Build Coastguard Worker         // Location is not defined
108*35238bceSAndroid Build Coastguard Worker         LOC_UNDEF = -1
109*35238bceSAndroid Build Coastguard Worker     };
110*35238bceSAndroid Build Coastguard Worker 
111*35238bceSAndroid Build Coastguard Worker     enum
112*35238bceSAndroid Build Coastguard Worker     {
113*35238bceSAndroid Build Coastguard Worker         // Not an array
114*35238bceSAndroid Build Coastguard Worker         NOT_ARRAY = -1
115*35238bceSAndroid Build Coastguard Worker     };
116*35238bceSAndroid Build Coastguard Worker 
117*35238bceSAndroid Build Coastguard Worker     Attribute(const AttribType &type, const std::string &name, int32_t layoutLocation = LOC_UNDEF,
118*35238bceSAndroid Build Coastguard Worker               const Cond &cond = Cond::COND_ALWAYS, int arraySize = NOT_ARRAY);
119*35238bceSAndroid Build Coastguard Worker 
getType(void) const120*35238bceSAndroid Build Coastguard Worker     const AttribType getType(void) const
121*35238bceSAndroid Build Coastguard Worker     {
122*35238bceSAndroid Build Coastguard Worker         return m_type;
123*35238bceSAndroid Build Coastguard Worker     }
getName(void) const124*35238bceSAndroid Build Coastguard Worker     const std::string &getName(void) const
125*35238bceSAndroid Build Coastguard Worker     {
126*35238bceSAndroid Build Coastguard Worker         return m_name;
127*35238bceSAndroid Build Coastguard Worker     }
getLayoutLocation(void) const128*35238bceSAndroid Build Coastguard Worker     int32_t getLayoutLocation(void) const
129*35238bceSAndroid Build Coastguard Worker     {
130*35238bceSAndroid Build Coastguard Worker         return m_layoutLocation;
131*35238bceSAndroid Build Coastguard Worker     }
getCondition(void) const132*35238bceSAndroid Build Coastguard Worker     const Cond &getCondition(void) const
133*35238bceSAndroid Build Coastguard Worker     {
134*35238bceSAndroid Build Coastguard Worker         return m_cond;
135*35238bceSAndroid Build Coastguard Worker     }
getArraySize(void) const136*35238bceSAndroid Build Coastguard Worker     int getArraySize(void) const
137*35238bceSAndroid Build Coastguard Worker     {
138*35238bceSAndroid Build Coastguard Worker         return m_arraySize;
139*35238bceSAndroid Build Coastguard Worker     }
140*35238bceSAndroid Build Coastguard Worker 
141*35238bceSAndroid Build Coastguard Worker private:
142*35238bceSAndroid Build Coastguard Worker     AttribType m_type;
143*35238bceSAndroid Build Coastguard Worker     std::string m_name;
144*35238bceSAndroid Build Coastguard Worker     int32_t m_layoutLocation;
145*35238bceSAndroid Build Coastguard Worker     Cond m_cond;
146*35238bceSAndroid Build Coastguard Worker     int m_arraySize;
147*35238bceSAndroid Build Coastguard Worker };
148*35238bceSAndroid Build Coastguard Worker 
149*35238bceSAndroid Build Coastguard Worker class Bind
150*35238bceSAndroid Build Coastguard Worker {
151*35238bceSAndroid Build Coastguard Worker public:
152*35238bceSAndroid Build Coastguard Worker     Bind(const std::string &attribute, uint32_t location);
153*35238bceSAndroid Build Coastguard Worker 
getAttributeName(void) const154*35238bceSAndroid Build Coastguard Worker     const std::string &getAttributeName(void) const
155*35238bceSAndroid Build Coastguard Worker     {
156*35238bceSAndroid Build Coastguard Worker         return m_attribute;
157*35238bceSAndroid Build Coastguard Worker     }
getLocation(void) const158*35238bceSAndroid Build Coastguard Worker     uint32_t getLocation(void) const
159*35238bceSAndroid Build Coastguard Worker     {
160*35238bceSAndroid Build Coastguard Worker         return m_location;
161*35238bceSAndroid Build Coastguard Worker     }
162*35238bceSAndroid Build Coastguard Worker 
163*35238bceSAndroid Build Coastguard Worker private:
164*35238bceSAndroid Build Coastguard Worker     std::string m_attribute;
165*35238bceSAndroid Build Coastguard Worker     uint32_t m_location;
166*35238bceSAndroid Build Coastguard Worker };
167*35238bceSAndroid Build Coastguard Worker 
168*35238bceSAndroid Build Coastguard Worker } // namespace AttributeLocationTestUtil
169*35238bceSAndroid Build Coastguard Worker 
170*35238bceSAndroid Build Coastguard Worker // Simple bind attribute test
171*35238bceSAndroid Build Coastguard Worker class BindAttributeTest : public tcu::TestCase
172*35238bceSAndroid Build Coastguard Worker {
173*35238bceSAndroid Build Coastguard Worker public:
174*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
175*35238bceSAndroid Build Coastguard Worker 
176*35238bceSAndroid Build Coastguard Worker     BindAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
177*35238bceSAndroid Build Coastguard Worker                       int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
178*35238bceSAndroid Build Coastguard Worker 
179*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
180*35238bceSAndroid Build Coastguard Worker 
181*35238bceSAndroid Build Coastguard Worker private:
182*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
183*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
184*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
185*35238bceSAndroid Build Coastguard Worker };
186*35238bceSAndroid Build Coastguard Worker 
187*35238bceSAndroid Build Coastguard Worker // Bind maximum number of attributes
188*35238bceSAndroid Build Coastguard Worker class BindMaxAttributesTest : public tcu::TestCase
189*35238bceSAndroid Build Coastguard Worker {
190*35238bceSAndroid Build Coastguard Worker public:
191*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
192*35238bceSAndroid Build Coastguard Worker 
193*35238bceSAndroid Build Coastguard Worker     BindMaxAttributesTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
194*35238bceSAndroid Build Coastguard Worker                           int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
195*35238bceSAndroid Build Coastguard Worker 
196*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
197*35238bceSAndroid Build Coastguard Worker 
198*35238bceSAndroid Build Coastguard Worker private:
199*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
200*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
201*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
202*35238bceSAndroid Build Coastguard Worker };
203*35238bceSAndroid Build Coastguard Worker 
204*35238bceSAndroid Build Coastguard Worker class BindAliasingAttributeTest : public tcu::TestCase
205*35238bceSAndroid Build Coastguard Worker {
206*35238bceSAndroid Build Coastguard Worker public:
207*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
208*35238bceSAndroid Build Coastguard Worker 
209*35238bceSAndroid Build Coastguard Worker     BindAliasingAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
210*35238bceSAndroid Build Coastguard Worker                               int offset = 0, int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
211*35238bceSAndroid Build Coastguard Worker 
212*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
213*35238bceSAndroid Build Coastguard Worker 
214*35238bceSAndroid Build Coastguard Worker private:
215*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
216*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
217*35238bceSAndroid Build Coastguard Worker     const int m_offset;
218*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
219*35238bceSAndroid Build Coastguard Worker };
220*35238bceSAndroid Build Coastguard Worker 
221*35238bceSAndroid Build Coastguard Worker class BindMaxAliasingAttributeTest : public tcu::TestCase
222*35238bceSAndroid Build Coastguard Worker {
223*35238bceSAndroid Build Coastguard Worker public:
224*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
225*35238bceSAndroid Build Coastguard Worker 
226*35238bceSAndroid Build Coastguard Worker     BindMaxAliasingAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
227*35238bceSAndroid Build Coastguard Worker                                  int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
228*35238bceSAndroid Build Coastguard Worker 
229*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
230*35238bceSAndroid Build Coastguard Worker 
231*35238bceSAndroid Build Coastguard Worker private:
232*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
233*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
234*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
235*35238bceSAndroid Build Coastguard Worker };
236*35238bceSAndroid Build Coastguard Worker 
237*35238bceSAndroid Build Coastguard Worker class BindInactiveAliasingAttributeTest : public tcu::TestCase
238*35238bceSAndroid Build Coastguard Worker {
239*35238bceSAndroid Build Coastguard Worker public:
240*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
241*35238bceSAndroid Build Coastguard Worker 
242*35238bceSAndroid Build Coastguard Worker     BindInactiveAliasingAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
243*35238bceSAndroid Build Coastguard Worker                                       int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
244*35238bceSAndroid Build Coastguard Worker 
245*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
246*35238bceSAndroid Build Coastguard Worker 
247*35238bceSAndroid Build Coastguard Worker private:
248*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
249*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
250*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
251*35238bceSAndroid Build Coastguard Worker };
252*35238bceSAndroid Build Coastguard Worker 
253*35238bceSAndroid Build Coastguard Worker class BindHoleAttributeTest : public tcu::TestCase
254*35238bceSAndroid Build Coastguard Worker {
255*35238bceSAndroid Build Coastguard Worker public:
256*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
257*35238bceSAndroid Build Coastguard Worker 
258*35238bceSAndroid Build Coastguard Worker     BindHoleAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
259*35238bceSAndroid Build Coastguard Worker                           int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
260*35238bceSAndroid Build Coastguard Worker 
261*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
262*35238bceSAndroid Build Coastguard Worker 
263*35238bceSAndroid Build Coastguard Worker private:
264*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
265*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
266*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
267*35238bceSAndroid Build Coastguard Worker };
268*35238bceSAndroid Build Coastguard Worker 
269*35238bceSAndroid Build Coastguard Worker class PreAttachBindAttributeTest : public tcu::TestCase
270*35238bceSAndroid Build Coastguard Worker {
271*35238bceSAndroid Build Coastguard Worker public:
272*35238bceSAndroid Build Coastguard Worker     PreAttachBindAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
273*35238bceSAndroid Build Coastguard Worker 
274*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
275*35238bceSAndroid Build Coastguard Worker 
276*35238bceSAndroid Build Coastguard Worker private:
277*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
278*35238bceSAndroid Build Coastguard Worker };
279*35238bceSAndroid Build Coastguard Worker 
280*35238bceSAndroid Build Coastguard Worker class PreLinkBindAttributeTest : public tcu::TestCase
281*35238bceSAndroid Build Coastguard Worker {
282*35238bceSAndroid Build Coastguard Worker public:
283*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
284*35238bceSAndroid Build Coastguard Worker 
285*35238bceSAndroid Build Coastguard Worker     PreLinkBindAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
286*35238bceSAndroid Build Coastguard Worker 
287*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
288*35238bceSAndroid Build Coastguard Worker 
289*35238bceSAndroid Build Coastguard Worker private:
290*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
291*35238bceSAndroid Build Coastguard Worker };
292*35238bceSAndroid Build Coastguard Worker 
293*35238bceSAndroid Build Coastguard Worker class PostLinkBindAttributeTest : public tcu::TestCase
294*35238bceSAndroid Build Coastguard Worker {
295*35238bceSAndroid Build Coastguard Worker public:
296*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
297*35238bceSAndroid Build Coastguard Worker 
298*35238bceSAndroid Build Coastguard Worker     PostLinkBindAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
299*35238bceSAndroid Build Coastguard Worker 
300*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
301*35238bceSAndroid Build Coastguard Worker 
302*35238bceSAndroid Build Coastguard Worker private:
303*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
304*35238bceSAndroid Build Coastguard Worker };
305*35238bceSAndroid Build Coastguard Worker 
306*35238bceSAndroid Build Coastguard Worker class BindReattachAttributeTest : public tcu::TestCase
307*35238bceSAndroid Build Coastguard Worker {
308*35238bceSAndroid Build Coastguard Worker public:
309*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
310*35238bceSAndroid Build Coastguard Worker 
311*35238bceSAndroid Build Coastguard Worker     BindReattachAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
312*35238bceSAndroid Build Coastguard Worker 
313*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
314*35238bceSAndroid Build Coastguard Worker 
315*35238bceSAndroid Build Coastguard Worker private:
316*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
317*35238bceSAndroid Build Coastguard Worker };
318*35238bceSAndroid Build Coastguard Worker 
319*35238bceSAndroid Build Coastguard Worker class LocationAttributeTest : public tcu::TestCase
320*35238bceSAndroid Build Coastguard Worker {
321*35238bceSAndroid Build Coastguard Worker public:
322*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
323*35238bceSAndroid Build Coastguard Worker 
324*35238bceSAndroid Build Coastguard Worker     LocationAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
325*35238bceSAndroid Build Coastguard Worker                           int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
326*35238bceSAndroid Build Coastguard Worker 
327*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
328*35238bceSAndroid Build Coastguard Worker 
329*35238bceSAndroid Build Coastguard Worker private:
330*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
331*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
332*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
333*35238bceSAndroid Build Coastguard Worker };
334*35238bceSAndroid Build Coastguard Worker 
335*35238bceSAndroid Build Coastguard Worker class LocationMaxAttributesTest : public tcu::TestCase
336*35238bceSAndroid Build Coastguard Worker {
337*35238bceSAndroid Build Coastguard Worker public:
338*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
339*35238bceSAndroid Build Coastguard Worker 
340*35238bceSAndroid Build Coastguard Worker     LocationMaxAttributesTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
341*35238bceSAndroid Build Coastguard Worker                               int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
342*35238bceSAndroid Build Coastguard Worker 
343*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
344*35238bceSAndroid Build Coastguard Worker 
345*35238bceSAndroid Build Coastguard Worker private:
346*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
347*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
348*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
349*35238bceSAndroid Build Coastguard Worker };
350*35238bceSAndroid Build Coastguard Worker 
351*35238bceSAndroid Build Coastguard Worker class LocationHoleAttributeTest : public tcu::TestCase
352*35238bceSAndroid Build Coastguard Worker {
353*35238bceSAndroid Build Coastguard Worker public:
354*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
355*35238bceSAndroid Build Coastguard Worker 
356*35238bceSAndroid Build Coastguard Worker     LocationHoleAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
357*35238bceSAndroid Build Coastguard Worker                               int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
358*35238bceSAndroid Build Coastguard Worker 
359*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
360*35238bceSAndroid Build Coastguard Worker 
361*35238bceSAndroid Build Coastguard Worker private:
362*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
363*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
364*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
365*35238bceSAndroid Build Coastguard Worker };
366*35238bceSAndroid Build Coastguard Worker 
367*35238bceSAndroid Build Coastguard Worker class MixedAttributeTest : public tcu::TestCase
368*35238bceSAndroid Build Coastguard Worker {
369*35238bceSAndroid Build Coastguard Worker public:
370*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
371*35238bceSAndroid Build Coastguard Worker 
372*35238bceSAndroid Build Coastguard Worker     MixedAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
373*35238bceSAndroid Build Coastguard Worker                        int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
374*35238bceSAndroid Build Coastguard Worker 
375*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
376*35238bceSAndroid Build Coastguard Worker 
377*35238bceSAndroid Build Coastguard Worker private:
378*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
379*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
380*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
381*35238bceSAndroid Build Coastguard Worker };
382*35238bceSAndroid Build Coastguard Worker 
383*35238bceSAndroid Build Coastguard Worker class MixedMaxAttributesTest : public tcu::TestCase
384*35238bceSAndroid Build Coastguard Worker {
385*35238bceSAndroid Build Coastguard Worker public:
386*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
387*35238bceSAndroid Build Coastguard Worker 
388*35238bceSAndroid Build Coastguard Worker     MixedMaxAttributesTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
389*35238bceSAndroid Build Coastguard Worker                            int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
390*35238bceSAndroid Build Coastguard Worker 
391*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
392*35238bceSAndroid Build Coastguard Worker 
393*35238bceSAndroid Build Coastguard Worker private:
394*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
395*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
396*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
397*35238bceSAndroid Build Coastguard Worker };
398*35238bceSAndroid Build Coastguard Worker 
399*35238bceSAndroid Build Coastguard Worker class MixedHoleAttributeTest : public tcu::TestCase
400*35238bceSAndroid Build Coastguard Worker {
401*35238bceSAndroid Build Coastguard Worker public:
402*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
403*35238bceSAndroid Build Coastguard Worker 
404*35238bceSAndroid Build Coastguard Worker     MixedHoleAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
405*35238bceSAndroid Build Coastguard Worker                            int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
406*35238bceSAndroid Build Coastguard Worker 
407*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
408*35238bceSAndroid Build Coastguard Worker 
409*35238bceSAndroid Build Coastguard Worker private:
410*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
411*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
412*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
413*35238bceSAndroid Build Coastguard Worker };
414*35238bceSAndroid Build Coastguard Worker 
415*35238bceSAndroid Build Coastguard Worker class BindRelinkAttributeTest : public tcu::TestCase
416*35238bceSAndroid Build Coastguard Worker {
417*35238bceSAndroid Build Coastguard Worker public:
418*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
419*35238bceSAndroid Build Coastguard Worker 
420*35238bceSAndroid Build Coastguard Worker     BindRelinkAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
421*35238bceSAndroid Build Coastguard Worker 
422*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
423*35238bceSAndroid Build Coastguard Worker 
424*35238bceSAndroid Build Coastguard Worker private:
425*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
426*35238bceSAndroid Build Coastguard Worker };
427*35238bceSAndroid Build Coastguard Worker 
428*35238bceSAndroid Build Coastguard Worker class BindRelinkHoleAttributeTest : public tcu::TestCase
429*35238bceSAndroid Build Coastguard Worker {
430*35238bceSAndroid Build Coastguard Worker public:
431*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
432*35238bceSAndroid Build Coastguard Worker 
433*35238bceSAndroid Build Coastguard Worker     BindRelinkHoleAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
434*35238bceSAndroid Build Coastguard Worker                                 int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
435*35238bceSAndroid Build Coastguard Worker 
436*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
437*35238bceSAndroid Build Coastguard Worker 
438*35238bceSAndroid Build Coastguard Worker private:
439*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
440*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
441*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
442*35238bceSAndroid Build Coastguard Worker };
443*35238bceSAndroid Build Coastguard Worker 
444*35238bceSAndroid Build Coastguard Worker class MixedRelinkHoleAttributeTest : public tcu::TestCase
445*35238bceSAndroid Build Coastguard Worker {
446*35238bceSAndroid Build Coastguard Worker public:
447*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
448*35238bceSAndroid Build Coastguard Worker 
449*35238bceSAndroid Build Coastguard Worker     MixedRelinkHoleAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const AttribType &type,
450*35238bceSAndroid Build Coastguard Worker                                  int arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
451*35238bceSAndroid Build Coastguard Worker 
452*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
453*35238bceSAndroid Build Coastguard Worker 
454*35238bceSAndroid Build Coastguard Worker private:
455*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
456*35238bceSAndroid Build Coastguard Worker     const AttribType m_type;
457*35238bceSAndroid Build Coastguard Worker     const int m_arraySize;
458*35238bceSAndroid Build Coastguard Worker };
459*35238bceSAndroid Build Coastguard Worker 
460*35238bceSAndroid Build Coastguard Worker class PreAttachMixedAttributeTest : public tcu::TestCase
461*35238bceSAndroid Build Coastguard Worker {
462*35238bceSAndroid Build Coastguard Worker public:
463*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
464*35238bceSAndroid Build Coastguard Worker 
465*35238bceSAndroid Build Coastguard Worker     PreAttachMixedAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
466*35238bceSAndroid Build Coastguard Worker 
467*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
468*35238bceSAndroid Build Coastguard Worker 
469*35238bceSAndroid Build Coastguard Worker private:
470*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
471*35238bceSAndroid Build Coastguard Worker };
472*35238bceSAndroid Build Coastguard Worker 
473*35238bceSAndroid Build Coastguard Worker class PreLinkMixedAttributeTest : public tcu::TestCase
474*35238bceSAndroid Build Coastguard Worker {
475*35238bceSAndroid Build Coastguard Worker public:
476*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
477*35238bceSAndroid Build Coastguard Worker 
478*35238bceSAndroid Build Coastguard Worker     PreLinkMixedAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
479*35238bceSAndroid Build Coastguard Worker 
480*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
481*35238bceSAndroid Build Coastguard Worker 
482*35238bceSAndroid Build Coastguard Worker private:
483*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
484*35238bceSAndroid Build Coastguard Worker };
485*35238bceSAndroid Build Coastguard Worker 
486*35238bceSAndroid Build Coastguard Worker class PostLinkMixedAttributeTest : public tcu::TestCase
487*35238bceSAndroid Build Coastguard Worker {
488*35238bceSAndroid Build Coastguard Worker public:
489*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
490*35238bceSAndroid Build Coastguard Worker 
491*35238bceSAndroid Build Coastguard Worker     PostLinkMixedAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
492*35238bceSAndroid Build Coastguard Worker 
493*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
494*35238bceSAndroid Build Coastguard Worker 
495*35238bceSAndroid Build Coastguard Worker private:
496*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
497*35238bceSAndroid Build Coastguard Worker };
498*35238bceSAndroid Build Coastguard Worker 
499*35238bceSAndroid Build Coastguard Worker class MixedReattachAttributeTest : public tcu::TestCase
500*35238bceSAndroid Build Coastguard Worker {
501*35238bceSAndroid Build Coastguard Worker public:
502*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
503*35238bceSAndroid Build Coastguard Worker 
504*35238bceSAndroid Build Coastguard Worker     MixedReattachAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
505*35238bceSAndroid Build Coastguard Worker 
506*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
507*35238bceSAndroid Build Coastguard Worker 
508*35238bceSAndroid Build Coastguard Worker private:
509*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
510*35238bceSAndroid Build Coastguard Worker };
511*35238bceSAndroid Build Coastguard Worker 
512*35238bceSAndroid Build Coastguard Worker class MixedRelinkAttributeTest : public tcu::TestCase
513*35238bceSAndroid Build Coastguard Worker {
514*35238bceSAndroid Build Coastguard Worker public:
515*35238bceSAndroid Build Coastguard Worker     typedef AttributeLocationTestUtil::AttribType AttribType;
516*35238bceSAndroid Build Coastguard Worker 
517*35238bceSAndroid Build Coastguard Worker     MixedRelinkAttributeTest(tcu::TestContext &testCtx, glu::RenderContext &renderCtx);
518*35238bceSAndroid Build Coastguard Worker 
519*35238bceSAndroid Build Coastguard Worker     virtual IterateResult iterate(void);
520*35238bceSAndroid Build Coastguard Worker 
521*35238bceSAndroid Build Coastguard Worker private:
522*35238bceSAndroid Build Coastguard Worker     glu::RenderContext &m_renderCtx;
523*35238bceSAndroid Build Coastguard Worker };
524*35238bceSAndroid Build Coastguard Worker 
525*35238bceSAndroid Build Coastguard Worker } // namespace gls
526*35238bceSAndroid Build Coastguard Worker } // namespace deqp
527*35238bceSAndroid Build Coastguard Worker 
528*35238bceSAndroid Build Coastguard Worker #endif // _GLSATTRIBUTELOCATIONTESTS_HPP
529