1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL ES 3.1 Module
3*35238bceSAndroid Build Coastguard Worker * -------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker *
5*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker *
7*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker *
11*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker *
13*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker *
19*35238bceSAndroid Build Coastguard Worker *//*!
20*35238bceSAndroid Build Coastguard Worker * \file
21*35238bceSAndroid Build Coastguard Worker * \brief Integer state query tests
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "es31fIntegerStateQueryTests.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "tcuTestLog.hpp"
26*35238bceSAndroid Build Coastguard Worker #include "gluRenderContext.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "gluCallLogWrapper.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "gluContextInfo.hpp"
29*35238bceSAndroid Build Coastguard Worker #include "gluObjectWrapper.hpp"
30*35238bceSAndroid Build Coastguard Worker #include "gluShaderProgram.hpp"
31*35238bceSAndroid Build Coastguard Worker #include "gluStrUtil.hpp"
32*35238bceSAndroid Build Coastguard Worker #include "glwFunctions.hpp"
33*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp"
34*35238bceSAndroid Build Coastguard Worker #include "glsStateQueryUtil.hpp"
35*35238bceSAndroid Build Coastguard Worker #include "deRandom.hpp"
36*35238bceSAndroid Build Coastguard Worker #include "deStringUtil.hpp"
37*35238bceSAndroid Build Coastguard Worker
38*35238bceSAndroid Build Coastguard Worker namespace deqp
39*35238bceSAndroid Build Coastguard Worker {
40*35238bceSAndroid Build Coastguard Worker namespace gles31
41*35238bceSAndroid Build Coastguard Worker {
42*35238bceSAndroid Build Coastguard Worker namespace Functional
43*35238bceSAndroid Build Coastguard Worker {
44*35238bceSAndroid Build Coastguard Worker namespace
45*35238bceSAndroid Build Coastguard Worker {
46*35238bceSAndroid Build Coastguard Worker
47*35238bceSAndroid Build Coastguard Worker using namespace gls::StateQueryUtil;
48*35238bceSAndroid Build Coastguard Worker
49*35238bceSAndroid Build Coastguard Worker const int MAX_FRAG_ATOMIC_COUNTER_BUFFERS_GLES32 = 1;
50*35238bceSAndroid Build Coastguard Worker const int MAX_FRAG_ATOMIC_COUNTERS_GLES32 = 8;
51*35238bceSAndroid Build Coastguard Worker const int MAX_FRAG_SHADER_STORAGE_BLOCKS_GLES32 = 4;
52*35238bceSAndroid Build Coastguard Worker
getVerifierSuffix(QueryType type)53*35238bceSAndroid Build Coastguard Worker static const char *getVerifierSuffix(QueryType type)
54*35238bceSAndroid Build Coastguard Worker {
55*35238bceSAndroid Build Coastguard Worker switch (type)
56*35238bceSAndroid Build Coastguard Worker {
57*35238bceSAndroid Build Coastguard Worker case QUERY_BOOLEAN:
58*35238bceSAndroid Build Coastguard Worker return "getboolean";
59*35238bceSAndroid Build Coastguard Worker case QUERY_INTEGER:
60*35238bceSAndroid Build Coastguard Worker return "getinteger";
61*35238bceSAndroid Build Coastguard Worker case QUERY_INTEGER64:
62*35238bceSAndroid Build Coastguard Worker return "getinteger64";
63*35238bceSAndroid Build Coastguard Worker case QUERY_FLOAT:
64*35238bceSAndroid Build Coastguard Worker return "getfloat";
65*35238bceSAndroid Build Coastguard Worker default:
66*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
67*35238bceSAndroid Build Coastguard Worker return DE_NULL;
68*35238bceSAndroid Build Coastguard Worker }
69*35238bceSAndroid Build Coastguard Worker }
70*35238bceSAndroid Build Coastguard Worker
71*35238bceSAndroid Build Coastguard Worker class MaxSamplesCase : public TestCase
72*35238bceSAndroid Build Coastguard Worker {
73*35238bceSAndroid Build Coastguard Worker public:
74*35238bceSAndroid Build Coastguard Worker MaxSamplesCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
75*35238bceSAndroid Build Coastguard Worker QueryType verifierType);
76*35238bceSAndroid Build Coastguard Worker
77*35238bceSAndroid Build Coastguard Worker private:
78*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
79*35238bceSAndroid Build Coastguard Worker
80*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_target;
81*35238bceSAndroid Build Coastguard Worker const int m_minValue;
82*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
83*35238bceSAndroid Build Coastguard Worker };
84*35238bceSAndroid Build Coastguard Worker
MaxSamplesCase(Context & context,const char * name,const char * desc,glw::GLenum target,int minValue,QueryType verifierType)85*35238bceSAndroid Build Coastguard Worker MaxSamplesCase::MaxSamplesCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
86*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
87*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
88*35238bceSAndroid Build Coastguard Worker , m_target(target)
89*35238bceSAndroid Build Coastguard Worker , m_minValue(minValue)
90*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
91*35238bceSAndroid Build Coastguard Worker {
92*35238bceSAndroid Build Coastguard Worker }
93*35238bceSAndroid Build Coastguard Worker
iterate(void)94*35238bceSAndroid Build Coastguard Worker MaxSamplesCase::IterateResult MaxSamplesCase::iterate(void)
95*35238bceSAndroid Build Coastguard Worker {
96*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
97*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
98*35238bceSAndroid Build Coastguard Worker
99*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
100*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, m_target, m_minValue, m_verifierType);
101*35238bceSAndroid Build Coastguard Worker
102*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
103*35238bceSAndroid Build Coastguard Worker return STOP;
104*35238bceSAndroid Build Coastguard Worker }
105*35238bceSAndroid Build Coastguard Worker
106*35238bceSAndroid Build Coastguard Worker class TexBindingCase : public TestCase
107*35238bceSAndroid Build Coastguard Worker {
108*35238bceSAndroid Build Coastguard Worker public:
109*35238bceSAndroid Build Coastguard Worker TexBindingCase(Context &context, const char *name, const char *desc, glw::GLenum texTarget, glw::GLenum bindTarget,
110*35238bceSAndroid Build Coastguard Worker QueryType verifierType);
111*35238bceSAndroid Build Coastguard Worker
112*35238bceSAndroid Build Coastguard Worker private:
113*35238bceSAndroid Build Coastguard Worker void init(void);
114*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
115*35238bceSAndroid Build Coastguard Worker
116*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_texTarget;
117*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_bindTarget;
118*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
119*35238bceSAndroid Build Coastguard Worker };
120*35238bceSAndroid Build Coastguard Worker
TexBindingCase(Context & context,const char * name,const char * desc,glw::GLenum texTarget,glw::GLenum bindTarget,QueryType verifierType)121*35238bceSAndroid Build Coastguard Worker TexBindingCase::TexBindingCase(Context &context, const char *name, const char *desc, glw::GLenum texTarget,
122*35238bceSAndroid Build Coastguard Worker glw::GLenum bindTarget, QueryType verifierType)
123*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
124*35238bceSAndroid Build Coastguard Worker , m_texTarget(texTarget)
125*35238bceSAndroid Build Coastguard Worker , m_bindTarget(bindTarget)
126*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
127*35238bceSAndroid Build Coastguard Worker {
128*35238bceSAndroid Build Coastguard Worker }
129*35238bceSAndroid Build Coastguard Worker
init(void)130*35238bceSAndroid Build Coastguard Worker void TexBindingCase::init(void)
131*35238bceSAndroid Build Coastguard Worker {
132*35238bceSAndroid Build Coastguard Worker auto ctxType = m_context.getRenderContext().getType();
133*35238bceSAndroid Build Coastguard Worker if (contextSupports(ctxType, glu::ApiType::es(3, 2)) || contextSupports(ctxType, glu::ApiType::core(4, 5)))
134*35238bceSAndroid Build Coastguard Worker return;
135*35238bceSAndroid Build Coastguard Worker
136*35238bceSAndroid Build Coastguard Worker if (m_texTarget == GL_TEXTURE_2D_MULTISAMPLE_ARRAY &&
137*35238bceSAndroid Build Coastguard Worker !m_context.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
138*35238bceSAndroid Build Coastguard Worker throw tcu::NotSupportedError("Test requires OES_texture_storage_multisample_2d_array extension");
139*35238bceSAndroid Build Coastguard Worker if (m_texTarget == GL_TEXTURE_CUBE_MAP_ARRAY &&
140*35238bceSAndroid Build Coastguard Worker !m_context.getContextInfo().isExtensionSupported("GL_EXT_texture_cube_map_array"))
141*35238bceSAndroid Build Coastguard Worker throw tcu::NotSupportedError("Test requires GL_EXT_texture_cube_map_array extension");
142*35238bceSAndroid Build Coastguard Worker if (m_texTarget == GL_TEXTURE_BUFFER && !m_context.getContextInfo().isExtensionSupported("GL_EXT_texture_buffer"))
143*35238bceSAndroid Build Coastguard Worker throw tcu::NotSupportedError("Test requires GL_EXT_texture_buffer extension");
144*35238bceSAndroid Build Coastguard Worker }
145*35238bceSAndroid Build Coastguard Worker
iterate(void)146*35238bceSAndroid Build Coastguard Worker TexBindingCase::IterateResult TexBindingCase::iterate(void)
147*35238bceSAndroid Build Coastguard Worker {
148*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
149*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
150*35238bceSAndroid Build Coastguard Worker
151*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
152*35238bceSAndroid Build Coastguard Worker
153*35238bceSAndroid Build Coastguard Worker // initial
154*35238bceSAndroid Build Coastguard Worker {
155*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "initial", "Initial value");
156*35238bceSAndroid Build Coastguard Worker
157*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, m_bindTarget, 0, m_verifierType);
158*35238bceSAndroid Build Coastguard Worker }
159*35238bceSAndroid Build Coastguard Worker
160*35238bceSAndroid Build Coastguard Worker // bind
161*35238bceSAndroid Build Coastguard Worker {
162*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "bind", "After bind");
163*35238bceSAndroid Build Coastguard Worker
164*35238bceSAndroid Build Coastguard Worker glw::GLuint texture;
165*35238bceSAndroid Build Coastguard Worker
166*35238bceSAndroid Build Coastguard Worker gl.glGenTextures(1, &texture);
167*35238bceSAndroid Build Coastguard Worker gl.glBindTexture(m_texTarget, texture);
168*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "bind texture");
169*35238bceSAndroid Build Coastguard Worker
170*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, m_bindTarget, texture, m_verifierType);
171*35238bceSAndroid Build Coastguard Worker
172*35238bceSAndroid Build Coastguard Worker gl.glDeleteTextures(1, &texture);
173*35238bceSAndroid Build Coastguard Worker }
174*35238bceSAndroid Build Coastguard Worker
175*35238bceSAndroid Build Coastguard Worker // after delete
176*35238bceSAndroid Build Coastguard Worker {
177*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "bind", "After delete");
178*35238bceSAndroid Build Coastguard Worker
179*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, m_bindTarget, 0, m_verifierType);
180*35238bceSAndroid Build Coastguard Worker }
181*35238bceSAndroid Build Coastguard Worker
182*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
183*35238bceSAndroid Build Coastguard Worker return STOP;
184*35238bceSAndroid Build Coastguard Worker }
185*35238bceSAndroid Build Coastguard Worker
186*35238bceSAndroid Build Coastguard Worker class MinimumValueCase : public TestCase
187*35238bceSAndroid Build Coastguard Worker {
188*35238bceSAndroid Build Coastguard Worker public:
189*35238bceSAndroid Build Coastguard Worker MinimumValueCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
190*35238bceSAndroid Build Coastguard Worker QueryType verifierType);
191*35238bceSAndroid Build Coastguard Worker MinimumValueCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
192*35238bceSAndroid Build Coastguard Worker QueryType verifierType, glu::ApiType minVersion);
193*35238bceSAndroid Build Coastguard Worker
194*35238bceSAndroid Build Coastguard Worker private:
195*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
196*35238bceSAndroid Build Coastguard Worker
197*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_target;
198*35238bceSAndroid Build Coastguard Worker const int m_minValue;
199*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
200*35238bceSAndroid Build Coastguard Worker const glu::ApiType m_minimumVersion;
201*35238bceSAndroid Build Coastguard Worker };
202*35238bceSAndroid Build Coastguard Worker
MinimumValueCase(Context & context,const char * name,const char * desc,glw::GLenum target,int minValue,QueryType verifierType)203*35238bceSAndroid Build Coastguard Worker MinimumValueCase::MinimumValueCase(Context &context, const char *name, const char *desc, glw::GLenum target,
204*35238bceSAndroid Build Coastguard Worker int minValue, QueryType verifierType)
205*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
206*35238bceSAndroid Build Coastguard Worker , m_target(target)
207*35238bceSAndroid Build Coastguard Worker , m_minValue(minValue)
208*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
209*35238bceSAndroid Build Coastguard Worker , m_minimumVersion(glu::ApiType::es(3, 1))
210*35238bceSAndroid Build Coastguard Worker {
211*35238bceSAndroid Build Coastguard Worker }
212*35238bceSAndroid Build Coastguard Worker
MinimumValueCase(Context & context,const char * name,const char * desc,glw::GLenum target,int minValue,QueryType verifierType,glu::ApiType minVersion)213*35238bceSAndroid Build Coastguard Worker MinimumValueCase::MinimumValueCase(Context &context, const char *name, const char *desc, glw::GLenum target,
214*35238bceSAndroid Build Coastguard Worker int minValue, QueryType verifierType, glu::ApiType minVersion)
215*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
216*35238bceSAndroid Build Coastguard Worker , m_target(target)
217*35238bceSAndroid Build Coastguard Worker , m_minValue(minValue)
218*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
219*35238bceSAndroid Build Coastguard Worker , m_minimumVersion(minVersion)
220*35238bceSAndroid Build Coastguard Worker {
221*35238bceSAndroid Build Coastguard Worker }
222*35238bceSAndroid Build Coastguard Worker
iterate(void)223*35238bceSAndroid Build Coastguard Worker MinimumValueCase::IterateResult MinimumValueCase::iterate(void)
224*35238bceSAndroid Build Coastguard Worker {
225*35238bceSAndroid Build Coastguard Worker if (!contextSupports(m_context.getRenderContext().getType(), glu::ApiType::core(4, 5)))
226*35238bceSAndroid Build Coastguard Worker TCU_CHECK_AND_THROW(NotSupportedError,
227*35238bceSAndroid Build Coastguard Worker contextSupports(m_context.getRenderContext().getType(), m_minimumVersion),
228*35238bceSAndroid Build Coastguard Worker "Test not supported in this context version.");
229*35238bceSAndroid Build Coastguard Worker
230*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
231*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
232*35238bceSAndroid Build Coastguard Worker
233*35238bceSAndroid Build Coastguard Worker // \note: In GL ES 3.2, the following targets have different limits as in 3.1
234*35238bceSAndroid Build Coastguard Worker const int value =
235*35238bceSAndroid Build Coastguard Worker contextSupports(m_context.getRenderContext().getType(), glu::ApiType::es(3, 2)) ?
236*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS ? MAX_FRAG_ATOMIC_COUNTER_BUFFERS_GLES32 // 1
237*35238bceSAndroid Build Coastguard Worker :
238*35238bceSAndroid Build Coastguard Worker m_target == GL_MAX_FRAGMENT_ATOMIC_COUNTERS ? MAX_FRAG_ATOMIC_COUNTERS_GLES32 // 8
239*35238bceSAndroid Build Coastguard Worker :
240*35238bceSAndroid Build Coastguard Worker m_target == GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS ? MAX_FRAG_SHADER_STORAGE_BLOCKS_GLES32 // 4
241*35238bceSAndroid Build Coastguard Worker :
242*35238bceSAndroid Build Coastguard Worker m_minValue) :
243*35238bceSAndroid Build Coastguard Worker m_minValue;
244*35238bceSAndroid Build Coastguard Worker
245*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
246*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, m_target, value, m_verifierType);
247*35238bceSAndroid Build Coastguard Worker
248*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
249*35238bceSAndroid Build Coastguard Worker return STOP;
250*35238bceSAndroid Build Coastguard Worker }
251*35238bceSAndroid Build Coastguard Worker
252*35238bceSAndroid Build Coastguard Worker class AlignmentCase : public TestCase
253*35238bceSAndroid Build Coastguard Worker {
254*35238bceSAndroid Build Coastguard Worker public:
255*35238bceSAndroid Build Coastguard Worker AlignmentCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
256*35238bceSAndroid Build Coastguard Worker QueryType verifierType);
257*35238bceSAndroid Build Coastguard Worker AlignmentCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
258*35238bceSAndroid Build Coastguard Worker QueryType verifierType, glu::ApiType minVersion);
259*35238bceSAndroid Build Coastguard Worker
260*35238bceSAndroid Build Coastguard Worker private:
261*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
262*35238bceSAndroid Build Coastguard Worker
263*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_target;
264*35238bceSAndroid Build Coastguard Worker const int m_minValue;
265*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
266*35238bceSAndroid Build Coastguard Worker const glu::ApiType m_minimumVersion;
267*35238bceSAndroid Build Coastguard Worker };
268*35238bceSAndroid Build Coastguard Worker
AlignmentCase(Context & context,const char * name,const char * desc,glw::GLenum target,int minValue,QueryType verifierType)269*35238bceSAndroid Build Coastguard Worker AlignmentCase::AlignmentCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
270*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
271*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
272*35238bceSAndroid Build Coastguard Worker , m_target(target)
273*35238bceSAndroid Build Coastguard Worker , m_minValue(minValue)
274*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
275*35238bceSAndroid Build Coastguard Worker , m_minimumVersion(glu::ApiType::es(3, 1))
276*35238bceSAndroid Build Coastguard Worker {
277*35238bceSAndroid Build Coastguard Worker }
278*35238bceSAndroid Build Coastguard Worker
AlignmentCase(Context & context,const char * name,const char * desc,glw::GLenum target,int minValue,QueryType verifierType,glu::ApiType minVersion)279*35238bceSAndroid Build Coastguard Worker AlignmentCase::AlignmentCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
280*35238bceSAndroid Build Coastguard Worker QueryType verifierType, glu::ApiType minVersion)
281*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
282*35238bceSAndroid Build Coastguard Worker , m_target(target)
283*35238bceSAndroid Build Coastguard Worker , m_minValue(minValue)
284*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
285*35238bceSAndroid Build Coastguard Worker , m_minimumVersion(minVersion)
286*35238bceSAndroid Build Coastguard Worker {
287*35238bceSAndroid Build Coastguard Worker }
288*35238bceSAndroid Build Coastguard Worker
iterate(void)289*35238bceSAndroid Build Coastguard Worker AlignmentCase::IterateResult AlignmentCase::iterate(void)
290*35238bceSAndroid Build Coastguard Worker {
291*35238bceSAndroid Build Coastguard Worker if (!contextSupports(m_context.getRenderContext().getType(), glu::ApiType::core(4, 5)))
292*35238bceSAndroid Build Coastguard Worker TCU_CHECK_AND_THROW(NotSupportedError,
293*35238bceSAndroid Build Coastguard Worker contextSupports(m_context.getRenderContext().getType(), m_minimumVersion),
294*35238bceSAndroid Build Coastguard Worker "Test not supported in this context.");
295*35238bceSAndroid Build Coastguard Worker
296*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
297*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
298*35238bceSAndroid Build Coastguard Worker
299*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
300*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMax(result, gl, m_target, m_minValue, m_verifierType);
301*35238bceSAndroid Build Coastguard Worker
302*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
303*35238bceSAndroid Build Coastguard Worker return STOP;
304*35238bceSAndroid Build Coastguard Worker }
305*35238bceSAndroid Build Coastguard Worker
306*35238bceSAndroid Build Coastguard Worker class BufferBindingCase : public TestCase
307*35238bceSAndroid Build Coastguard Worker {
308*35238bceSAndroid Build Coastguard Worker public:
309*35238bceSAndroid Build Coastguard Worker BufferBindingCase(Context &context, const char *name, const char *desc, glw::GLenum queryTarget,
310*35238bceSAndroid Build Coastguard Worker glw::GLenum bindingPoint, QueryType verifierType);
311*35238bceSAndroid Build Coastguard Worker
312*35238bceSAndroid Build Coastguard Worker private:
313*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
314*35238bceSAndroid Build Coastguard Worker
315*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_queryTarget;
316*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_bindingPoint;
317*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
318*35238bceSAndroid Build Coastguard Worker };
319*35238bceSAndroid Build Coastguard Worker
BufferBindingCase(Context & context,const char * name,const char * desc,glw::GLenum queryTarget,glw::GLenum bindingPoint,QueryType verifierType)320*35238bceSAndroid Build Coastguard Worker BufferBindingCase::BufferBindingCase(Context &context, const char *name, const char *desc, glw::GLenum queryTarget,
321*35238bceSAndroid Build Coastguard Worker glw::GLenum bindingPoint, QueryType verifierType)
322*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
323*35238bceSAndroid Build Coastguard Worker , m_queryTarget(queryTarget)
324*35238bceSAndroid Build Coastguard Worker , m_bindingPoint(bindingPoint)
325*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
326*35238bceSAndroid Build Coastguard Worker {
327*35238bceSAndroid Build Coastguard Worker }
328*35238bceSAndroid Build Coastguard Worker
iterate(void)329*35238bceSAndroid Build Coastguard Worker BufferBindingCase::IterateResult BufferBindingCase::iterate(void)
330*35238bceSAndroid Build Coastguard Worker {
331*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
332*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
333*35238bceSAndroid Build Coastguard Worker
334*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
335*35238bceSAndroid Build Coastguard Worker
336*35238bceSAndroid Build Coastguard Worker {
337*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "Initial", "Initial value");
338*35238bceSAndroid Build Coastguard Worker
339*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, m_queryTarget, 0, m_verifierType);
340*35238bceSAndroid Build Coastguard Worker }
341*35238bceSAndroid Build Coastguard Worker
342*35238bceSAndroid Build Coastguard Worker {
343*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "AfterBinding", "After binding");
344*35238bceSAndroid Build Coastguard Worker glu::Buffer buf(m_context.getRenderContext());
345*35238bceSAndroid Build Coastguard Worker
346*35238bceSAndroid Build Coastguard Worker gl.glBindBuffer(m_bindingPoint, *buf);
347*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "setup");
348*35238bceSAndroid Build Coastguard Worker
349*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, m_queryTarget, *buf, m_verifierType);
350*35238bceSAndroid Build Coastguard Worker }
351*35238bceSAndroid Build Coastguard Worker
352*35238bceSAndroid Build Coastguard Worker {
353*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "AfterDelete", "After deleting");
354*35238bceSAndroid Build Coastguard Worker glw::GLuint buf = 0;
355*35238bceSAndroid Build Coastguard Worker
356*35238bceSAndroid Build Coastguard Worker gl.glGenBuffers(1, &buf);
357*35238bceSAndroid Build Coastguard Worker gl.glBindBuffer(m_bindingPoint, buf);
358*35238bceSAndroid Build Coastguard Worker gl.glDeleteBuffers(1, &buf);
359*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "setup");
360*35238bceSAndroid Build Coastguard Worker
361*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, m_queryTarget, 0, m_verifierType);
362*35238bceSAndroid Build Coastguard Worker }
363*35238bceSAndroid Build Coastguard Worker
364*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
365*35238bceSAndroid Build Coastguard Worker return STOP;
366*35238bceSAndroid Build Coastguard Worker }
367*35238bceSAndroid Build Coastguard Worker
368*35238bceSAndroid Build Coastguard Worker class ProgramPipelineBindingCase : public TestCase
369*35238bceSAndroid Build Coastguard Worker {
370*35238bceSAndroid Build Coastguard Worker public:
371*35238bceSAndroid Build Coastguard Worker ProgramPipelineBindingCase(Context &context, const char *name, const char *desc, QueryType verifierType);
372*35238bceSAndroid Build Coastguard Worker
373*35238bceSAndroid Build Coastguard Worker private:
374*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
375*35238bceSAndroid Build Coastguard Worker
376*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
377*35238bceSAndroid Build Coastguard Worker };
378*35238bceSAndroid Build Coastguard Worker
ProgramPipelineBindingCase(Context & context,const char * name,const char * desc,QueryType verifierType)379*35238bceSAndroid Build Coastguard Worker ProgramPipelineBindingCase::ProgramPipelineBindingCase(Context &context, const char *name, const char *desc,
380*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
381*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
382*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
383*35238bceSAndroid Build Coastguard Worker {
384*35238bceSAndroid Build Coastguard Worker }
385*35238bceSAndroid Build Coastguard Worker
iterate(void)386*35238bceSAndroid Build Coastguard Worker ProgramPipelineBindingCase::IterateResult ProgramPipelineBindingCase::iterate(void)
387*35238bceSAndroid Build Coastguard Worker {
388*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
389*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
390*35238bceSAndroid Build Coastguard Worker
391*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
392*35238bceSAndroid Build Coastguard Worker
393*35238bceSAndroid Build Coastguard Worker {
394*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "Initial", "Initial value");
395*35238bceSAndroid Build Coastguard Worker
396*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, GL_PROGRAM_PIPELINE_BINDING, 0, m_verifierType);
397*35238bceSAndroid Build Coastguard Worker }
398*35238bceSAndroid Build Coastguard Worker
399*35238bceSAndroid Build Coastguard Worker {
400*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "AfterBinding", "After binding");
401*35238bceSAndroid Build Coastguard Worker glu::ProgramPipeline pipeline(m_context.getRenderContext());
402*35238bceSAndroid Build Coastguard Worker
403*35238bceSAndroid Build Coastguard Worker gl.glBindProgramPipeline(pipeline.getPipeline());
404*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "setup");
405*35238bceSAndroid Build Coastguard Worker
406*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, GL_PROGRAM_PIPELINE_BINDING, pipeline.getPipeline(), m_verifierType);
407*35238bceSAndroid Build Coastguard Worker }
408*35238bceSAndroid Build Coastguard Worker
409*35238bceSAndroid Build Coastguard Worker {
410*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "AfterDelete", "After deleting");
411*35238bceSAndroid Build Coastguard Worker glw::GLuint pipeline = 0;
412*35238bceSAndroid Build Coastguard Worker
413*35238bceSAndroid Build Coastguard Worker gl.glGenProgramPipelines(1, &pipeline);
414*35238bceSAndroid Build Coastguard Worker gl.glBindProgramPipeline(pipeline);
415*35238bceSAndroid Build Coastguard Worker gl.glDeleteProgramPipelines(1, &pipeline);
416*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "setup");
417*35238bceSAndroid Build Coastguard Worker
418*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, GL_PROGRAM_PIPELINE_BINDING, 0, m_verifierType);
419*35238bceSAndroid Build Coastguard Worker }
420*35238bceSAndroid Build Coastguard Worker
421*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
422*35238bceSAndroid Build Coastguard Worker return STOP;
423*35238bceSAndroid Build Coastguard Worker }
424*35238bceSAndroid Build Coastguard Worker
425*35238bceSAndroid Build Coastguard Worker class FramebufferMinimumValueCase : public TestCase
426*35238bceSAndroid Build Coastguard Worker {
427*35238bceSAndroid Build Coastguard Worker public:
428*35238bceSAndroid Build Coastguard Worker FramebufferMinimumValueCase(Context &context, const char *name, const char *desc, glw::GLenum target, int minValue,
429*35238bceSAndroid Build Coastguard Worker glw::GLenum tiedTo, QueryType verifierType);
430*35238bceSAndroid Build Coastguard Worker
431*35238bceSAndroid Build Coastguard Worker private:
432*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
433*35238bceSAndroid Build Coastguard Worker
434*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_target;
435*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_tiedTo;
436*35238bceSAndroid Build Coastguard Worker const int m_minValue;
437*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
438*35238bceSAndroid Build Coastguard Worker };
439*35238bceSAndroid Build Coastguard Worker
FramebufferMinimumValueCase(Context & context,const char * name,const char * desc,glw::GLenum target,int minValue,glw::GLenum tiedTo,QueryType verifierType)440*35238bceSAndroid Build Coastguard Worker FramebufferMinimumValueCase::FramebufferMinimumValueCase(Context &context, const char *name, const char *desc,
441*35238bceSAndroid Build Coastguard Worker glw::GLenum target, int minValue, glw::GLenum tiedTo,
442*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
443*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
444*35238bceSAndroid Build Coastguard Worker , m_target(target)
445*35238bceSAndroid Build Coastguard Worker , m_tiedTo(tiedTo)
446*35238bceSAndroid Build Coastguard Worker , m_minValue(minValue)
447*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
448*35238bceSAndroid Build Coastguard Worker {
449*35238bceSAndroid Build Coastguard Worker }
450*35238bceSAndroid Build Coastguard Worker
iterate(void)451*35238bceSAndroid Build Coastguard Worker FramebufferMinimumValueCase::IterateResult FramebufferMinimumValueCase::iterate(void)
452*35238bceSAndroid Build Coastguard Worker {
453*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
454*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
455*35238bceSAndroid Build Coastguard Worker
456*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
457*35238bceSAndroid Build Coastguard Worker
458*35238bceSAndroid Build Coastguard Worker {
459*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "Minimum",
460*35238bceSAndroid Build Coastguard Worker "Specified minimum is " + de::toString(m_minValue));
461*35238bceSAndroid Build Coastguard Worker
462*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, m_target, m_minValue, m_verifierType);
463*35238bceSAndroid Build Coastguard Worker }
464*35238bceSAndroid Build Coastguard Worker {
465*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "Ties",
466*35238bceSAndroid Build Coastguard Worker "The limit is tied to the value of " +
467*35238bceSAndroid Build Coastguard Worker de::toString(glu::getGettableStateStr(m_tiedTo)));
468*35238bceSAndroid Build Coastguard Worker StateQueryMemoryWriteGuard<glw::GLint> tiedToValue;
469*35238bceSAndroid Build Coastguard Worker
470*35238bceSAndroid Build Coastguard Worker gl.glGetIntegerv(m_tiedTo, &tiedToValue);
471*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "glGetIntegerv");
472*35238bceSAndroid Build Coastguard Worker
473*35238bceSAndroid Build Coastguard Worker if (tiedToValue.verifyValidity(result))
474*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, m_target, tiedToValue, m_verifierType);
475*35238bceSAndroid Build Coastguard Worker }
476*35238bceSAndroid Build Coastguard Worker
477*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
478*35238bceSAndroid Build Coastguard Worker return STOP;
479*35238bceSAndroid Build Coastguard Worker }
480*35238bceSAndroid Build Coastguard Worker
481*35238bceSAndroid Build Coastguard Worker class LegacyVectorLimitCase : public TestCase
482*35238bceSAndroid Build Coastguard Worker {
483*35238bceSAndroid Build Coastguard Worker public:
484*35238bceSAndroid Build Coastguard Worker LegacyVectorLimitCase(Context &context, const char *name, const char *desc, glw::GLenum legacyTarget,
485*35238bceSAndroid Build Coastguard Worker glw::GLenum componentTarget, QueryType verifierType);
486*35238bceSAndroid Build Coastguard Worker
487*35238bceSAndroid Build Coastguard Worker private:
488*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
489*35238bceSAndroid Build Coastguard Worker
490*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_legacyTarget;
491*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_componentTarget;
492*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
493*35238bceSAndroid Build Coastguard Worker };
494*35238bceSAndroid Build Coastguard Worker
LegacyVectorLimitCase(Context & context,const char * name,const char * desc,glw::GLenum legacyTarget,glw::GLenum componentTarget,QueryType verifierType)495*35238bceSAndroid Build Coastguard Worker LegacyVectorLimitCase::LegacyVectorLimitCase(Context &context, const char *name, const char *desc,
496*35238bceSAndroid Build Coastguard Worker glw::GLenum legacyTarget, glw::GLenum componentTarget,
497*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
498*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
499*35238bceSAndroid Build Coastguard Worker , m_legacyTarget(legacyTarget)
500*35238bceSAndroid Build Coastguard Worker , m_componentTarget(componentTarget)
501*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
502*35238bceSAndroid Build Coastguard Worker {
503*35238bceSAndroid Build Coastguard Worker }
504*35238bceSAndroid Build Coastguard Worker
iterate(void)505*35238bceSAndroid Build Coastguard Worker LegacyVectorLimitCase::IterateResult LegacyVectorLimitCase::iterate(void)
506*35238bceSAndroid Build Coastguard Worker {
507*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
508*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
509*35238bceSAndroid Build Coastguard Worker
510*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
511*35238bceSAndroid Build Coastguard Worker
512*35238bceSAndroid Build Coastguard Worker {
513*35238bceSAndroid Build Coastguard Worker const tcu::ScopedLogSection section(m_testCtx.getLog(), "TiedTo",
514*35238bceSAndroid Build Coastguard Worker de::toString(glu::getGettableStateStr(m_legacyTarget)) + " is " +
515*35238bceSAndroid Build Coastguard Worker de::toString(glu::getGettableStateStr(m_componentTarget)) +
516*35238bceSAndroid Build Coastguard Worker " divided by four");
517*35238bceSAndroid Build Coastguard Worker
518*35238bceSAndroid Build Coastguard Worker StateQueryMemoryWriteGuard<glw::GLint> value;
519*35238bceSAndroid Build Coastguard Worker gl.glGetIntegerv(m_componentTarget, &value);
520*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "glGetIntegerv");
521*35238bceSAndroid Build Coastguard Worker
522*35238bceSAndroid Build Coastguard Worker if (value.verifyValidity(result))
523*35238bceSAndroid Build Coastguard Worker verifyStateInteger(result, gl, m_legacyTarget, ((int)value) / 4, m_verifierType);
524*35238bceSAndroid Build Coastguard Worker }
525*35238bceSAndroid Build Coastguard Worker
526*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
527*35238bceSAndroid Build Coastguard Worker return STOP;
528*35238bceSAndroid Build Coastguard Worker }
529*35238bceSAndroid Build Coastguard Worker
530*35238bceSAndroid Build Coastguard Worker class CombinedUniformComponentsCase : public TestCase
531*35238bceSAndroid Build Coastguard Worker {
532*35238bceSAndroid Build Coastguard Worker public:
533*35238bceSAndroid Build Coastguard Worker CombinedUniformComponentsCase(Context &context, const char *name, const char *desc, glw::GLenum target,
534*35238bceSAndroid Build Coastguard Worker QueryType verifierType);
535*35238bceSAndroid Build Coastguard Worker CombinedUniformComponentsCase(Context &context, const char *name, const char *desc, glw::GLenum target,
536*35238bceSAndroid Build Coastguard Worker QueryType verifierType, glu::ApiType minVersion);
537*35238bceSAndroid Build Coastguard Worker
538*35238bceSAndroid Build Coastguard Worker private:
539*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
540*35238bceSAndroid Build Coastguard Worker const glw::GLenum m_target;
541*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
542*35238bceSAndroid Build Coastguard Worker const glu::ApiType m_minimumVersion;
543*35238bceSAndroid Build Coastguard Worker };
544*35238bceSAndroid Build Coastguard Worker
CombinedUniformComponentsCase(Context & context,const char * name,const char * desc,glw::GLenum target,QueryType verifierType)545*35238bceSAndroid Build Coastguard Worker CombinedUniformComponentsCase::CombinedUniformComponentsCase(Context &context, const char *name, const char *desc,
546*35238bceSAndroid Build Coastguard Worker glw::GLenum target, QueryType verifierType)
547*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
548*35238bceSAndroid Build Coastguard Worker , m_target(target)
549*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
550*35238bceSAndroid Build Coastguard Worker , m_minimumVersion(glu::ApiType::es(3, 1))
551*35238bceSAndroid Build Coastguard Worker {
552*35238bceSAndroid Build Coastguard Worker }
553*35238bceSAndroid Build Coastguard Worker
CombinedUniformComponentsCase(Context & context,const char * name,const char * desc,glw::GLenum target,QueryType verifierType,glu::ApiType minVersion)554*35238bceSAndroid Build Coastguard Worker CombinedUniformComponentsCase::CombinedUniformComponentsCase(Context &context, const char *name, const char *desc,
555*35238bceSAndroid Build Coastguard Worker glw::GLenum target, QueryType verifierType,
556*35238bceSAndroid Build Coastguard Worker glu::ApiType minVersion)
557*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
558*35238bceSAndroid Build Coastguard Worker , m_target(target)
559*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
560*35238bceSAndroid Build Coastguard Worker , m_minimumVersion(minVersion)
561*35238bceSAndroid Build Coastguard Worker {
562*35238bceSAndroid Build Coastguard Worker }
563*35238bceSAndroid Build Coastguard Worker
iterate(void)564*35238bceSAndroid Build Coastguard Worker CombinedUniformComponentsCase::IterateResult CombinedUniformComponentsCase::iterate(void)
565*35238bceSAndroid Build Coastguard Worker {
566*35238bceSAndroid Build Coastguard Worker if (!contextSupports(m_context.getRenderContext().getType(), glu::ApiType::core(4, 5)))
567*35238bceSAndroid Build Coastguard Worker TCU_CHECK_AND_THROW(NotSupportedError,
568*35238bceSAndroid Build Coastguard Worker contextSupports(m_context.getRenderContext().getType(), m_minimumVersion),
569*35238bceSAndroid Build Coastguard Worker "Test not supported in this context.");
570*35238bceSAndroid Build Coastguard Worker
571*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
572*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
573*35238bceSAndroid Build Coastguard Worker
574*35238bceSAndroid Build Coastguard Worker const glw::GLenum maxUniformBlocksEnum =
575*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS) ? GL_MAX_COMPUTE_UNIFORM_BLOCKS :
576*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS) ? GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS :
577*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS) ? GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS :
578*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS) ? GL_MAX_GEOMETRY_UNIFORM_BLOCKS :
579*35238bceSAndroid Build Coastguard Worker -1;
580*35238bceSAndroid Build Coastguard Worker
581*35238bceSAndroid Build Coastguard Worker const glw::GLenum maxUniformComponentsEnum =
582*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS) ? GL_MAX_COMPUTE_UNIFORM_COMPONENTS :
583*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS) ? GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS :
584*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS) ? GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS :
585*35238bceSAndroid Build Coastguard Worker (m_target == GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS) ? GL_MAX_GEOMETRY_UNIFORM_COMPONENTS :
586*35238bceSAndroid Build Coastguard Worker -1;
587*35238bceSAndroid Build Coastguard Worker
588*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
589*35238bceSAndroid Build Coastguard Worker
590*35238bceSAndroid Build Coastguard Worker m_testCtx.getLog() << tcu::TestLog::Message
591*35238bceSAndroid Build Coastguard Worker << "The minimum value of MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS is MAX_COMPUTE_UNIFORM_BLOCKS "
592*35238bceSAndroid Build Coastguard Worker "x MAX_UNIFORM_BLOCK_SIZE / 4 + MAX_COMPUTE_UNIFORM_COMPONENTS"
593*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::EndMessage;
594*35238bceSAndroid Build Coastguard Worker
595*35238bceSAndroid Build Coastguard Worker StateQueryMemoryWriteGuard<glw::GLint> maxUniformBlocks;
596*35238bceSAndroid Build Coastguard Worker gl.glGetIntegerv(maxUniformBlocksEnum, &maxUniformBlocks);
597*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "glGetIntegerv");
598*35238bceSAndroid Build Coastguard Worker
599*35238bceSAndroid Build Coastguard Worker StateQueryMemoryWriteGuard<glw::GLint> maxUniformBlockSize;
600*35238bceSAndroid Build Coastguard Worker gl.glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &maxUniformBlockSize);
601*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "glGetIntegerv");
602*35238bceSAndroid Build Coastguard Worker
603*35238bceSAndroid Build Coastguard Worker StateQueryMemoryWriteGuard<glw::GLint> maxUniformComponents;
604*35238bceSAndroid Build Coastguard Worker gl.glGetIntegerv(maxUniformComponentsEnum, &maxUniformComponents);
605*35238bceSAndroid Build Coastguard Worker GLS_COLLECT_GL_ERROR(result, gl.glGetError(), "glGetIntegerv");
606*35238bceSAndroid Build Coastguard Worker
607*35238bceSAndroid Build Coastguard Worker if (maxUniformBlocks.verifyValidity(result) && maxUniformBlockSize.verifyValidity(result) &&
608*35238bceSAndroid Build Coastguard Worker maxUniformComponents.verifyValidity(result))
609*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, m_target,
610*35238bceSAndroid Build Coastguard Worker ((int)maxUniformBlocks) * ((int)maxUniformBlockSize) / 4 + (int)maxUniformComponents,
611*35238bceSAndroid Build Coastguard Worker m_verifierType);
612*35238bceSAndroid Build Coastguard Worker
613*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
614*35238bceSAndroid Build Coastguard Worker return STOP;
615*35238bceSAndroid Build Coastguard Worker }
616*35238bceSAndroid Build Coastguard Worker
617*35238bceSAndroid Build Coastguard Worker class TextureGatherLimitCase : public TestCase
618*35238bceSAndroid Build Coastguard Worker {
619*35238bceSAndroid Build Coastguard Worker public:
620*35238bceSAndroid Build Coastguard Worker TextureGatherLimitCase(Context &context, const char *name, const char *desc, bool isMaxCase,
621*35238bceSAndroid Build Coastguard Worker QueryType verifierType);
622*35238bceSAndroid Build Coastguard Worker
623*35238bceSAndroid Build Coastguard Worker private:
624*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
625*35238bceSAndroid Build Coastguard Worker
626*35238bceSAndroid Build Coastguard Worker const bool m_isMaxCase;
627*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
628*35238bceSAndroid Build Coastguard Worker };
629*35238bceSAndroid Build Coastguard Worker
TextureGatherLimitCase(Context & context,const char * name,const char * desc,bool isMaxCase,QueryType verifierType)630*35238bceSAndroid Build Coastguard Worker TextureGatherLimitCase::TextureGatherLimitCase(Context &context, const char *name, const char *desc, bool isMaxCase,
631*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
632*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
633*35238bceSAndroid Build Coastguard Worker , m_isMaxCase(isMaxCase)
634*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
635*35238bceSAndroid Build Coastguard Worker {
636*35238bceSAndroid Build Coastguard Worker }
637*35238bceSAndroid Build Coastguard Worker
iterate(void)638*35238bceSAndroid Build Coastguard Worker TextureGatherLimitCase::IterateResult TextureGatherLimitCase::iterate(void)
639*35238bceSAndroid Build Coastguard Worker {
640*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
641*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
642*35238bceSAndroid Build Coastguard Worker
643*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
644*35238bceSAndroid Build Coastguard Worker
645*35238bceSAndroid Build Coastguard Worker if (m_isMaxCase)
646*35238bceSAndroid Build Coastguard Worker {
647*35238bceSAndroid Build Coastguard Worker // range [0, inf)
648*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET, 0, m_verifierType);
649*35238bceSAndroid Build Coastguard Worker }
650*35238bceSAndroid Build Coastguard Worker else
651*35238bceSAndroid Build Coastguard Worker {
652*35238bceSAndroid Build Coastguard Worker // range (-inf, 0]
653*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMax(result, gl, GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET, 0, m_verifierType);
654*35238bceSAndroid Build Coastguard Worker }
655*35238bceSAndroid Build Coastguard Worker
656*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
657*35238bceSAndroid Build Coastguard Worker return STOP;
658*35238bceSAndroid Build Coastguard Worker }
659*35238bceSAndroid Build Coastguard Worker
660*35238bceSAndroid Build Coastguard Worker class MaxUniformBufferBindingsCase : public TestCase
661*35238bceSAndroid Build Coastguard Worker {
662*35238bceSAndroid Build Coastguard Worker public:
663*35238bceSAndroid Build Coastguard Worker MaxUniformBufferBindingsCase(Context &context, const char *name, const char *desc, QueryType verifierType);
664*35238bceSAndroid Build Coastguard Worker
665*35238bceSAndroid Build Coastguard Worker private:
666*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
667*35238bceSAndroid Build Coastguard Worker
668*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
669*35238bceSAndroid Build Coastguard Worker };
670*35238bceSAndroid Build Coastguard Worker
MaxUniformBufferBindingsCase(Context & context,const char * name,const char * desc,QueryType verifierType)671*35238bceSAndroid Build Coastguard Worker MaxUniformBufferBindingsCase::MaxUniformBufferBindingsCase(Context &context, const char *name, const char *desc,
672*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
673*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
674*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
675*35238bceSAndroid Build Coastguard Worker {
676*35238bceSAndroid Build Coastguard Worker }
677*35238bceSAndroid Build Coastguard Worker
iterate(void)678*35238bceSAndroid Build Coastguard Worker MaxUniformBufferBindingsCase::IterateResult MaxUniformBufferBindingsCase::iterate(void)
679*35238bceSAndroid Build Coastguard Worker {
680*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
681*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
682*35238bceSAndroid Build Coastguard Worker int minMax;
683*35238bceSAndroid Build Coastguard Worker
684*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
685*35238bceSAndroid Build Coastguard Worker
686*35238bceSAndroid Build Coastguard Worker if (contextSupports(m_context.getRenderContext().getType(), glu::ApiType::es(3, 2)))
687*35238bceSAndroid Build Coastguard Worker {
688*35238bceSAndroid Build Coastguard Worker minMax = 72;
689*35238bceSAndroid Build Coastguard Worker }
690*35238bceSAndroid Build Coastguard Worker else
691*35238bceSAndroid Build Coastguard Worker {
692*35238bceSAndroid Build Coastguard Worker if (m_context.getContextInfo().isExtensionSupported("GL_EXT_tessellation_shader"))
693*35238bceSAndroid Build Coastguard Worker {
694*35238bceSAndroid Build Coastguard Worker m_testCtx.getLog()
695*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::Message
696*35238bceSAndroid Build Coastguard Worker << "GL_EXT_tessellation_shader increases the minimum value of GL_MAX_UNIFORM_BUFFER_BINDINGS to 72"
697*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::EndMessage;
698*35238bceSAndroid Build Coastguard Worker minMax = 72;
699*35238bceSAndroid Build Coastguard Worker }
700*35238bceSAndroid Build Coastguard Worker else if (m_context.getContextInfo().isExtensionSupported("GL_EXT_geometry_shader"))
701*35238bceSAndroid Build Coastguard Worker {
702*35238bceSAndroid Build Coastguard Worker m_testCtx.getLog()
703*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::Message
704*35238bceSAndroid Build Coastguard Worker << "GL_EXT_geometry_shader increases the minimum value of GL_MAX_UNIFORM_BUFFER_BINDINGS to 48"
705*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::EndMessage;
706*35238bceSAndroid Build Coastguard Worker minMax = 48;
707*35238bceSAndroid Build Coastguard Worker }
708*35238bceSAndroid Build Coastguard Worker else
709*35238bceSAndroid Build Coastguard Worker {
710*35238bceSAndroid Build Coastguard Worker minMax = 36;
711*35238bceSAndroid Build Coastguard Worker }
712*35238bceSAndroid Build Coastguard Worker }
713*35238bceSAndroid Build Coastguard Worker
714*35238bceSAndroid Build Coastguard Worker // range [0, inf)
715*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, GL_MAX_UNIFORM_BUFFER_BINDINGS, minMax, m_verifierType);
716*35238bceSAndroid Build Coastguard Worker
717*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
718*35238bceSAndroid Build Coastguard Worker return STOP;
719*35238bceSAndroid Build Coastguard Worker }
720*35238bceSAndroid Build Coastguard Worker
721*35238bceSAndroid Build Coastguard Worker class MaxCombinedUniformBlocksCase : public TestCase
722*35238bceSAndroid Build Coastguard Worker {
723*35238bceSAndroid Build Coastguard Worker public:
724*35238bceSAndroid Build Coastguard Worker MaxCombinedUniformBlocksCase(Context &context, const char *name, const char *desc, QueryType verifierType);
725*35238bceSAndroid Build Coastguard Worker
726*35238bceSAndroid Build Coastguard Worker private:
727*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
728*35238bceSAndroid Build Coastguard Worker
729*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
730*35238bceSAndroid Build Coastguard Worker };
731*35238bceSAndroid Build Coastguard Worker
MaxCombinedUniformBlocksCase(Context & context,const char * name,const char * desc,QueryType verifierType)732*35238bceSAndroid Build Coastguard Worker MaxCombinedUniformBlocksCase::MaxCombinedUniformBlocksCase(Context &context, const char *name, const char *desc,
733*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
734*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
735*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
736*35238bceSAndroid Build Coastguard Worker {
737*35238bceSAndroid Build Coastguard Worker }
738*35238bceSAndroid Build Coastguard Worker
iterate(void)739*35238bceSAndroid Build Coastguard Worker MaxCombinedUniformBlocksCase::IterateResult MaxCombinedUniformBlocksCase::iterate(void)
740*35238bceSAndroid Build Coastguard Worker {
741*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
742*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
743*35238bceSAndroid Build Coastguard Worker int minMax;
744*35238bceSAndroid Build Coastguard Worker
745*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
746*35238bceSAndroid Build Coastguard Worker
747*35238bceSAndroid Build Coastguard Worker if (contextSupports(m_context.getRenderContext().getType(), glu::ApiType::es(3, 2)))
748*35238bceSAndroid Build Coastguard Worker {
749*35238bceSAndroid Build Coastguard Worker minMax = 60;
750*35238bceSAndroid Build Coastguard Worker }
751*35238bceSAndroid Build Coastguard Worker else
752*35238bceSAndroid Build Coastguard Worker {
753*35238bceSAndroid Build Coastguard Worker if (m_context.getContextInfo().isExtensionSupported("GL_EXT_tessellation_shader"))
754*35238bceSAndroid Build Coastguard Worker {
755*35238bceSAndroid Build Coastguard Worker m_testCtx.getLog()
756*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::Message
757*35238bceSAndroid Build Coastguard Worker << "GL_EXT_tessellation_shader increases the minimum value of GL_MAX_COMBINED_UNIFORM_BLOCKS to 60"
758*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::EndMessage;
759*35238bceSAndroid Build Coastguard Worker minMax = 60;
760*35238bceSAndroid Build Coastguard Worker }
761*35238bceSAndroid Build Coastguard Worker else if (m_context.getContextInfo().isExtensionSupported("GL_EXT_geometry_shader"))
762*35238bceSAndroid Build Coastguard Worker {
763*35238bceSAndroid Build Coastguard Worker m_testCtx.getLog()
764*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::Message
765*35238bceSAndroid Build Coastguard Worker << "GL_EXT_geometry_shader increases the minimum value of GL_MAX_COMBINED_UNIFORM_BLOCKS to 36"
766*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::EndMessage;
767*35238bceSAndroid Build Coastguard Worker minMax = 36;
768*35238bceSAndroid Build Coastguard Worker }
769*35238bceSAndroid Build Coastguard Worker else
770*35238bceSAndroid Build Coastguard Worker {
771*35238bceSAndroid Build Coastguard Worker minMax = 24;
772*35238bceSAndroid Build Coastguard Worker }
773*35238bceSAndroid Build Coastguard Worker }
774*35238bceSAndroid Build Coastguard Worker
775*35238bceSAndroid Build Coastguard Worker // range [0, inf)
776*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, GL_MAX_COMBINED_UNIFORM_BLOCKS, minMax, m_verifierType);
777*35238bceSAndroid Build Coastguard Worker
778*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
779*35238bceSAndroid Build Coastguard Worker return STOP;
780*35238bceSAndroid Build Coastguard Worker }
781*35238bceSAndroid Build Coastguard Worker
782*35238bceSAndroid Build Coastguard Worker class MaxCombinedTexImageUnitsCase : public TestCase
783*35238bceSAndroid Build Coastguard Worker {
784*35238bceSAndroid Build Coastguard Worker public:
785*35238bceSAndroid Build Coastguard Worker MaxCombinedTexImageUnitsCase(Context &context, const char *name, const char *desc, QueryType verifierType);
786*35238bceSAndroid Build Coastguard Worker
787*35238bceSAndroid Build Coastguard Worker private:
788*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
789*35238bceSAndroid Build Coastguard Worker
790*35238bceSAndroid Build Coastguard Worker const QueryType m_verifierType;
791*35238bceSAndroid Build Coastguard Worker };
792*35238bceSAndroid Build Coastguard Worker
MaxCombinedTexImageUnitsCase(Context & context,const char * name,const char * desc,QueryType verifierType)793*35238bceSAndroid Build Coastguard Worker MaxCombinedTexImageUnitsCase::MaxCombinedTexImageUnitsCase(Context &context, const char *name, const char *desc,
794*35238bceSAndroid Build Coastguard Worker QueryType verifierType)
795*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, desc)
796*35238bceSAndroid Build Coastguard Worker , m_verifierType(verifierType)
797*35238bceSAndroid Build Coastguard Worker {
798*35238bceSAndroid Build Coastguard Worker }
799*35238bceSAndroid Build Coastguard Worker
iterate(void)800*35238bceSAndroid Build Coastguard Worker MaxCombinedTexImageUnitsCase::IterateResult MaxCombinedTexImageUnitsCase::iterate(void)
801*35238bceSAndroid Build Coastguard Worker {
802*35238bceSAndroid Build Coastguard Worker glu::CallLogWrapper gl(m_context.getRenderContext().getFunctions(), m_testCtx.getLog());
803*35238bceSAndroid Build Coastguard Worker tcu::ResultCollector result(m_testCtx.getLog(), " // ERROR: ");
804*35238bceSAndroid Build Coastguard Worker int minMax;
805*35238bceSAndroid Build Coastguard Worker
806*35238bceSAndroid Build Coastguard Worker gl.enableLogging(true);
807*35238bceSAndroid Build Coastguard Worker if (contextSupports(m_context.getRenderContext().getType(), glu::ApiType::es(3, 2)))
808*35238bceSAndroid Build Coastguard Worker {
809*35238bceSAndroid Build Coastguard Worker minMax = 96;
810*35238bceSAndroid Build Coastguard Worker }
811*35238bceSAndroid Build Coastguard Worker else
812*35238bceSAndroid Build Coastguard Worker {
813*35238bceSAndroid Build Coastguard Worker if (m_context.getContextInfo().isExtensionSupported("GL_EXT_tessellation_shader"))
814*35238bceSAndroid Build Coastguard Worker {
815*35238bceSAndroid Build Coastguard Worker m_testCtx.getLog()
816*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::Message
817*35238bceSAndroid Build Coastguard Worker << "GL_EXT_tessellation_shader increases the minimum value of GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS to 96"
818*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::EndMessage;
819*35238bceSAndroid Build Coastguard Worker minMax = 96;
820*35238bceSAndroid Build Coastguard Worker }
821*35238bceSAndroid Build Coastguard Worker else if (m_context.getContextInfo().isExtensionSupported("GL_EXT_geometry_shader"))
822*35238bceSAndroid Build Coastguard Worker {
823*35238bceSAndroid Build Coastguard Worker m_testCtx.getLog()
824*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::Message
825*35238bceSAndroid Build Coastguard Worker << "GL_EXT_geometry_shader increases the minimum value of GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS to 36"
826*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::EndMessage;
827*35238bceSAndroid Build Coastguard Worker minMax = 64;
828*35238bceSAndroid Build Coastguard Worker }
829*35238bceSAndroid Build Coastguard Worker else
830*35238bceSAndroid Build Coastguard Worker {
831*35238bceSAndroid Build Coastguard Worker minMax = 48;
832*35238bceSAndroid Build Coastguard Worker }
833*35238bceSAndroid Build Coastguard Worker }
834*35238bceSAndroid Build Coastguard Worker
835*35238bceSAndroid Build Coastguard Worker // range [0, inf)
836*35238bceSAndroid Build Coastguard Worker verifyStateIntegerMin(result, gl, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, minMax, m_verifierType);
837*35238bceSAndroid Build Coastguard Worker
838*35238bceSAndroid Build Coastguard Worker result.setTestContextResult(m_testCtx);
839*35238bceSAndroid Build Coastguard Worker return STOP;
840*35238bceSAndroid Build Coastguard Worker }
841*35238bceSAndroid Build Coastguard Worker
842*35238bceSAndroid Build Coastguard Worker } // namespace
843*35238bceSAndroid Build Coastguard Worker
IntegerStateQueryTests(Context & context)844*35238bceSAndroid Build Coastguard Worker IntegerStateQueryTests::IntegerStateQueryTests(Context &context)
845*35238bceSAndroid Build Coastguard Worker : TestCaseGroup(context, "integer", "Integer state query tests")
846*35238bceSAndroid Build Coastguard Worker {
847*35238bceSAndroid Build Coastguard Worker }
848*35238bceSAndroid Build Coastguard Worker
~IntegerStateQueryTests(void)849*35238bceSAndroid Build Coastguard Worker IntegerStateQueryTests::~IntegerStateQueryTests(void)
850*35238bceSAndroid Build Coastguard Worker {
851*35238bceSAndroid Build Coastguard Worker }
852*35238bceSAndroid Build Coastguard Worker
init(void)853*35238bceSAndroid Build Coastguard Worker void IntegerStateQueryTests::init(void)
854*35238bceSAndroid Build Coastguard Worker {
855*35238bceSAndroid Build Coastguard Worker // Verifiers
856*35238bceSAndroid Build Coastguard Worker const QueryType verifiers[] = {QUERY_BOOLEAN, QUERY_INTEGER, QUERY_INTEGER64, QUERY_FLOAT};
857*35238bceSAndroid Build Coastguard Worker
858*35238bceSAndroid Build Coastguard Worker #define FOR_EACH_VERIFIER(X) \
859*35238bceSAndroid Build Coastguard Worker for (int verifierNdx = 0; verifierNdx < DE_LENGTH_OF_ARRAY(verifiers); ++verifierNdx) \
860*35238bceSAndroid Build Coastguard Worker { \
861*35238bceSAndroid Build Coastguard Worker const char *verifierSuffix = getVerifierSuffix(verifiers[verifierNdx]); \
862*35238bceSAndroid Build Coastguard Worker const QueryType verifier = verifiers[verifierNdx]; \
863*35238bceSAndroid Build Coastguard Worker this->addChild(X); \
864*35238bceSAndroid Build Coastguard Worker }
865*35238bceSAndroid Build Coastguard Worker
866*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
867*35238bceSAndroid Build Coastguard Worker new MaxSamplesCase(m_context, (std::string() + "max_color_texture_samples_" + verifierSuffix).c_str(),
868*35238bceSAndroid Build Coastguard Worker "Test GL_MAX_COLOR_TEXTURE_SAMPLES", GL_MAX_COLOR_TEXTURE_SAMPLES, 1, verifier))
869*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
870*35238bceSAndroid Build Coastguard Worker new MaxSamplesCase(m_context, (std::string() + "max_depth_texture_samples_" + verifierSuffix).c_str(),
871*35238bceSAndroid Build Coastguard Worker "Test GL_MAX_DEPTH_TEXTURE_SAMPLES", GL_MAX_DEPTH_TEXTURE_SAMPLES, 1, verifier))
872*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MaxSamplesCase(m_context, (std::string() + "max_integer_samples_" + verifierSuffix).c_str(),
873*35238bceSAndroid Build Coastguard Worker "Test GL_MAX_INTEGER_SAMPLES", GL_MAX_INTEGER_SAMPLES, 1, verifier))
874*35238bceSAndroid Build Coastguard Worker
875*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new TexBindingCase(
876*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "texture_binding_2d_multisample_" + verifierSuffix).c_str(),
877*35238bceSAndroid Build Coastguard Worker "Test TEXTURE_BINDING_2D_MULTISAMPLE", GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BINDING_2D_MULTISAMPLE, verifier))
878*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new TexBindingCase(
879*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "texture_binding_2d_multisample_array_" + verifierSuffix).c_str(),
880*35238bceSAndroid Build Coastguard Worker "Test TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY", GL_TEXTURE_2D_MULTISAMPLE_ARRAY,
881*35238bceSAndroid Build Coastguard Worker GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY, verifier))
882*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new TexBindingCase(
883*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "texture_binding_cube_map_array_" + verifierSuffix).c_str(),
884*35238bceSAndroid Build Coastguard Worker "Test TEXTURE_BINDING_CUBE_MAP_ARRAY", GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_BINDING_CUBE_MAP_ARRAY, verifier))
885*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
886*35238bceSAndroid Build Coastguard Worker new TexBindingCase(m_context, (std::string() + "texture_binding_buffer_" + verifierSuffix).c_str(),
887*35238bceSAndroid Build Coastguard Worker "Test TEXTURE_BINDING_BUFFER", GL_TEXTURE_BUFFER, GL_TEXTURE_BINDING_BUFFER, verifier))
888*35238bceSAndroid Build Coastguard Worker
889*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
890*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_vertex_attrib_relative_offset_" + verifierSuffix).c_str(),
891*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, 2047, verifier))
892*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
893*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_vertex_attrib_bindings_" + verifierSuffix).c_str(),
894*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_ATTRIB_BINDINGS", GL_MAX_VERTEX_ATTRIB_BINDINGS, 16, verifier))
895*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
896*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_vertex_attrib_stride_" + verifierSuffix).c_str(),
897*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_ATTRIB_STRIDE", GL_MAX_VERTEX_ATTRIB_STRIDE, 2048, verifier))
898*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(m_context,
899*35238bceSAndroid Build Coastguard Worker (std::string() + "max_sample_mask_words_" + verifierSuffix).c_str(),
900*35238bceSAndroid Build Coastguard Worker "Test MAX_SAMPLE_MASK_WORDS", GL_MAX_SAMPLE_MASK_WORDS, 1, verifier))
901*35238bceSAndroid Build Coastguard Worker
902*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new AlignmentCase(
903*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "shader_storage_buffer_offset_alignment_" + verifierSuffix).c_str(),
904*35238bceSAndroid Build Coastguard Worker "Test SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT", GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, 256, verifier))
905*35238bceSAndroid Build Coastguard Worker
906*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new BufferBindingCase(
907*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "draw_indirect_buffer_binding_" + verifierSuffix).c_str(),
908*35238bceSAndroid Build Coastguard Worker "Test DRAW_INDIRECT_BUFFER_BINDING", GL_DRAW_INDIRECT_BUFFER_BINDING, GL_DRAW_INDIRECT_BUFFER, verifier))
909*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new BufferBindingCase(
910*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "atomic_counter_buffer_binding_" + verifierSuffix).c_str(),
911*35238bceSAndroid Build Coastguard Worker "Test ATOMIC_COUNTER_BUFFER_BINDING", GL_ATOMIC_COUNTER_BUFFER_BINDING, GL_ATOMIC_COUNTER_BUFFER, verifier))
912*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new BufferBindingCase(
913*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "shader_storage_buffer_binding_" + verifierSuffix).c_str(),
914*35238bceSAndroid Build Coastguard Worker "Test SHADER_STORAGE_BUFFER_BINDING", GL_SHADER_STORAGE_BUFFER_BINDING, GL_SHADER_STORAGE_BUFFER, verifier))
915*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
916*35238bceSAndroid Build Coastguard Worker new BufferBindingCase(m_context, (std::string() + "dispatch_indirect_buffer_binding_" + verifierSuffix).c_str(),
917*35238bceSAndroid Build Coastguard Worker "Test DISPATCH_INDIRECT_BUFFER_BINDING", GL_DISPATCH_INDIRECT_BUFFER_BINDING,
918*35238bceSAndroid Build Coastguard Worker GL_DISPATCH_INDIRECT_BUFFER, verifier))
919*35238bceSAndroid Build Coastguard Worker
920*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new FramebufferMinimumValueCase(
921*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_framebuffer_width_" + verifierSuffix).c_str(), "Test MAX_FRAMEBUFFER_WIDTH",
922*35238bceSAndroid Build Coastguard Worker GL_MAX_FRAMEBUFFER_WIDTH, 2048, GL_MAX_TEXTURE_SIZE, verifier))
923*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new FramebufferMinimumValueCase(
924*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_framebuffer_height_" + verifierSuffix).c_str(), "Test MAX_FRAMEBUFFER_HEIGHT",
925*35238bceSAndroid Build Coastguard Worker GL_MAX_FRAMEBUFFER_HEIGHT, 2048, GL_MAX_TEXTURE_SIZE, verifier))
926*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new FramebufferMinimumValueCase(
927*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_framebuffer_samples_" + verifierSuffix).c_str(),
928*35238bceSAndroid Build Coastguard Worker "Test MAX_FRAMEBUFFER_SAMPLES", GL_MAX_FRAMEBUFFER_SAMPLES, 4, GL_MAX_SAMPLES, verifier))
929*35238bceSAndroid Build Coastguard Worker
930*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new ProgramPipelineBindingCase(
931*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "program_pipeline_binding_" + verifierSuffix).c_str(),
932*35238bceSAndroid Build Coastguard Worker "Test PROGRAM_PIPELINE_BINDING", verifier))
933*35238bceSAndroid Build Coastguard Worker
934*35238bceSAndroid Build Coastguard Worker // vertex
935*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
936*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_vertex_atomic_counter_buffers_" + verifierSuffix).c_str(),
937*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_ATOMIC_COUNTER_BUFFERS", GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS, 0, verifier))
938*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
939*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_vertex_atomic_counters_" + verifierSuffix).c_str(),
940*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_ATOMIC_COUNTERS", GL_MAX_VERTEX_ATOMIC_COUNTERS, 0, verifier))
941*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(m_context,
942*35238bceSAndroid Build Coastguard Worker (std::string() + "max_vertex_image_uniforms_" + verifierSuffix).c_str(),
943*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_IMAGE_UNIFORMS", GL_MAX_VERTEX_IMAGE_UNIFORMS, 0, verifier))
944*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
945*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_vertex_shader_storage_blocks_" + verifierSuffix).c_str(),
946*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_SHADER_STORAGE_BLOCKS", GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, 0, verifier))
947*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
948*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_vertex_uniform_components_" + verifierSuffix).c_str(),
949*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_UNIFORM_COMPONENTS", GL_MAX_VERTEX_UNIFORM_COMPONENTS, 1024, verifier))
950*35238bceSAndroid Build Coastguard Worker
951*35238bceSAndroid Build Coastguard Worker // fragment
952*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
953*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_fragment_atomic_counter_buffers_" + verifierSuffix).c_str(),
954*35238bceSAndroid Build Coastguard Worker "Test MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS", GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS, 0, verifier))
955*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
956*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_fragment_atomic_counters_" + verifierSuffix).c_str(),
957*35238bceSAndroid Build Coastguard Worker "Test MAX_FRAGMENT_ATOMIC_COUNTERS", GL_MAX_FRAGMENT_ATOMIC_COUNTERS, 0, verifier))
958*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
959*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_fragment_image_uniforms_" + verifierSuffix).c_str(),
960*35238bceSAndroid Build Coastguard Worker "Test MAX_FRAGMENT_IMAGE_UNIFORMS", GL_MAX_FRAGMENT_IMAGE_UNIFORMS, 0, verifier))
961*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
962*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_fragment_shader_storage_blocks_" + verifierSuffix).c_str(),
963*35238bceSAndroid Build Coastguard Worker "Test MAX_FRAGMENT_SHADER_STORAGE_BLOCKS", GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, 0, verifier))
964*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
965*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_fragment_uniform_components_" + verifierSuffix).c_str(),
966*35238bceSAndroid Build Coastguard Worker "Test MAX_FRAGMENT_UNIFORM_COMPONENTS", GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, 1024, verifier))
967*35238bceSAndroid Build Coastguard Worker
968*35238bceSAndroid Build Coastguard Worker // compute
969*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
970*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_compute_work_group_invocations_" + verifierSuffix).c_str(),
971*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_WORK_GROUP_INVOCATIONS", GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, 128, verifier))
972*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
973*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_compute_uniform_blocks_" + verifierSuffix).c_str(),
974*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_UNIFORM_BLOCKS", GL_MAX_COMPUTE_UNIFORM_BLOCKS, 12, verifier))
975*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
976*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_compute_texture_image_units_" + verifierSuffix).c_str(),
977*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_TEXTURE_IMAGE_UNITS", GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, 16, verifier))
978*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
979*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_compute_shared_memory_size_" + verifierSuffix).c_str(),
980*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_SHARED_MEMORY_SIZE", GL_MAX_COMPUTE_SHARED_MEMORY_SIZE, 16384, verifier))
981*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
982*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_compute_uniform_components_" + verifierSuffix).c_str(),
983*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_UNIFORM_COMPONENTS", GL_MAX_COMPUTE_UNIFORM_COMPONENTS, 1024, verifier))
984*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
985*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_compute_atomic_counter_buffers_" + verifierSuffix).c_str(),
986*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, 1, verifier))
987*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
988*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_compute_atomic_counters_" + verifierSuffix).c_str(),
989*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_ATOMIC_COUNTERS", GL_MAX_COMPUTE_ATOMIC_COUNTERS, 8, verifier))
990*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
991*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_compute_image_uniforms_" + verifierSuffix).c_str(),
992*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_IMAGE_UNIFORMS", GL_MAX_COMPUTE_IMAGE_UNIFORMS, 4, verifier))
993*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
994*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_compute_shader_storage_blocks_" + verifierSuffix).c_str(),
995*35238bceSAndroid Build Coastguard Worker "Test MAX_COMPUTE_SHADER_STORAGE_BLOCKS", GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, 4, verifier))
996*35238bceSAndroid Build Coastguard Worker
997*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(m_context,
998*35238bceSAndroid Build Coastguard Worker (std::string() + "max_uniform_locations_" + verifierSuffix).c_str(),
999*35238bceSAndroid Build Coastguard Worker "Test MAX_UNIFORM_LOCATIONS", GL_MAX_UNIFORM_LOCATIONS, 1024, verifier))
1000*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1001*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_atomic_counter_buffer_bindings_" + verifierSuffix).c_str(),
1002*35238bceSAndroid Build Coastguard Worker "Test MAX_ATOMIC_COUNTER_BUFFER_BINDINGS", GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, 1, verifier))
1003*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1004*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_atomic_counter_buffer_size_" + verifierSuffix).c_str(),
1005*35238bceSAndroid Build Coastguard Worker "Test MAX_ATOMIC_COUNTER_BUFFER_SIZE", GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE, 32, verifier))
1006*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1007*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_atomic_counter_buffers_" + verifierSuffix).c_str(),
1008*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_ATOMIC_COUNTER_BUFFERS", GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS, 1, verifier))
1009*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1010*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_combined_atomic_counters_" + verifierSuffix).c_str(),
1011*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_ATOMIC_COUNTERS", GL_MAX_COMBINED_ATOMIC_COUNTERS, 8, verifier))
1012*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(m_context, (std::string() + "max_image_units_" + verifierSuffix).c_str(),
1013*35238bceSAndroid Build Coastguard Worker "Test MAX_IMAGE_UNITS", GL_MAX_IMAGE_UNITS, 4, verifier))
1014*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1015*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_combined_image_uniforms_" + verifierSuffix).c_str(),
1016*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_IMAGE_UNIFORMS", GL_MAX_COMBINED_IMAGE_UNIFORMS, 4, verifier))
1017*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1018*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_shader_storage_buffer_bindings_" + verifierSuffix).c_str(),
1019*35238bceSAndroid Build Coastguard Worker "Test MAX_SHADER_STORAGE_BUFFER_BINDINGS", GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, 4, verifier))
1020*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1021*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_shader_storage_block_size_" + verifierSuffix).c_str(),
1022*35238bceSAndroid Build Coastguard Worker "Test MAX_SHADER_STORAGE_BLOCK_SIZE", GL_MAX_SHADER_STORAGE_BLOCK_SIZE, 1 << 27, verifier))
1023*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1024*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_shader_storage_blocks_" + verifierSuffix).c_str(),
1025*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_SHADER_STORAGE_BLOCKS", GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, 4, verifier))
1026*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1027*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_shader_output_resources_" + verifierSuffix).c_str(),
1028*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_SHADER_OUTPUT_RESOURCES", GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES, 4, verifier))
1029*35238bceSAndroid Build Coastguard Worker
1030*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MaxUniformBufferBindingsCase(
1031*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_uniform_buffer_bindings_" + verifierSuffix).c_str(),
1032*35238bceSAndroid Build Coastguard Worker "Test MAX_UNIFORM_BUFFER_BINDINGS", verifier))
1033*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MaxCombinedUniformBlocksCase(
1034*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_uniform_blocks_" + verifierSuffix).c_str(),
1035*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_UNIFORM_BLOCKS", verifier))
1036*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MaxCombinedTexImageUnitsCase(
1037*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_texture_image_units_" + verifierSuffix).c_str(),
1038*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_TEXTURE_IMAGE_UNITS", verifier))
1039*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new CombinedUniformComponentsCase(
1040*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_compute_uniform_components_" + verifierSuffix).c_str(),
1041*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS", GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, verifier))
1042*35238bceSAndroid Build Coastguard Worker
1043*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new LegacyVectorLimitCase(
1044*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_vertex_uniform_vectors_" + verifierSuffix).c_str(),
1045*35238bceSAndroid Build Coastguard Worker "Test MAX_VERTEX_UNIFORM_VECTORS", GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VERTEX_UNIFORM_COMPONENTS, verifier))
1046*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1047*35238bceSAndroid Build Coastguard Worker new LegacyVectorLimitCase(m_context, (std::string() + "max_fragment_uniform_vectors_" + verifierSuffix).c_str(),
1048*35238bceSAndroid Build Coastguard Worker "Test MAX_FRAGMENT_UNIFORM_VECTORS", GL_MAX_FRAGMENT_UNIFORM_VECTORS,
1049*35238bceSAndroid Build Coastguard Worker GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, verifier))
1050*35238bceSAndroid Build Coastguard Worker
1051*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new TextureGatherLimitCase(
1052*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "min_program_texture_gather_offset_" + verifierSuffix).c_str(),
1053*35238bceSAndroid Build Coastguard Worker "Test MIN_PROGRAM_TEXTURE_GATHER_OFFSET", false, verifier))
1054*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new TextureGatherLimitCase(
1055*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_program_texture_gather_offset_" + verifierSuffix).c_str(),
1056*35238bceSAndroid Build Coastguard Worker "Test MAX_PROGRAM_TEXTURE_GATHER_OFFSET", true, verifier))
1057*35238bceSAndroid Build Coastguard Worker
1058*35238bceSAndroid Build Coastguard Worker // GL ES 3.2 tests
1059*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1060*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_framebuffer_layers_" + verifierSuffix).c_str(), "Test MAX_FRAMEBUFFER_LAYERS",
1061*35238bceSAndroid Build Coastguard Worker GL_MAX_FRAMEBUFFER_LAYERS, 256, verifier, glu::ApiType::es(3, 2)))
1062*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1063*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "fragment_interpolation_offset_bits_" + verifierSuffix).c_str(),
1064*35238bceSAndroid Build Coastguard Worker "Test FRAGMENT_INTERPOLATION_OFFSET_BITS", GL_FRAGMENT_INTERPOLATION_OFFSET_BITS, 4, verifier,
1065*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1066*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1067*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_texture_buffer_size_" + verifierSuffix).c_str(),
1068*35238bceSAndroid Build Coastguard Worker "Test MAX_TEXTURE_BUFFER_SIZE", GL_MAX_TEXTURE_BUFFER_SIZE, 65536, verifier, glu::ApiType::es(3, 2)))
1069*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new AlignmentCase(m_context,
1070*35238bceSAndroid Build Coastguard Worker (std::string() + "texture_buffer_offset_alignment_" + verifierSuffix).c_str(),
1071*35238bceSAndroid Build Coastguard Worker "Test TEXTURE_BUFFER_OFFSET_ALIGNMENT", GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT, 256,
1072*35238bceSAndroid Build Coastguard Worker verifier, glu::ApiType::es(3, 2)))
1073*35238bceSAndroid Build Coastguard Worker
1074*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(m_context, (std::string() + "max_tess_gen_level_" + verifierSuffix).c_str(),
1075*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_GEN_LEVEL", GL_MAX_TESS_GEN_LEVEL, 64, verifier,
1076*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1077*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(m_context, (std::string() + "max_patch_vertices_" + verifierSuffix).c_str(),
1078*35238bceSAndroid Build Coastguard Worker "Test MAX_PATCH_VERTICES", GL_MAX_PATCH_VERTICES, 32, verifier,
1079*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1080*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1081*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_patch_components_" + verifierSuffix).c_str(),
1082*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_PATCH_COMPONENTS", GL_MAX_TESS_PATCH_COMPONENTS, 120, verifier, glu::ApiType::es(3, 2)))
1083*35238bceSAndroid Build Coastguard Worker
1084*35238bceSAndroid Build Coastguard Worker // tess control
1085*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1086*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_control_uniform_components_" + verifierSuffix).c_str(),
1087*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_UNIFORM_COMPONENTS", GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS, 1024, verifier,
1088*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1089*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1090*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_control_texture_image_units_" + verifierSuffix).c_str(),
1091*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS", GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS, 16, verifier,
1092*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1093*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1094*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_control_output_components_" + verifierSuffix).c_str(),
1095*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_OUTPUT_COMPONENTS", GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS, 64, verifier,
1096*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1097*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1098*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_control_total_output_components_" + verifierSuffix).c_str(),
1099*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS", GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS, 2048, verifier,
1100*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1101*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1102*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_tess_control_input_components_" + verifierSuffix).c_str(),
1103*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_INPUT_COMPONENTS", GL_MAX_TESS_CONTROL_INPUT_COMPONENTS, 64,
1104*35238bceSAndroid Build Coastguard Worker verifier, glu::ApiType::es(3, 2)))
1105*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1106*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_tess_control_uniform_blocks_" + verifierSuffix).c_str(),
1107*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_UNIFORM_BLOCKS", GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS, 12, verifier,
1108*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1109*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1110*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_control_atomic_counter_buffers_" + verifierSuffix).c_str(),
1111*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS", GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS, 0, verifier,
1112*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1113*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1114*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_tess_control_atomic_counters_" + verifierSuffix).c_str(),
1115*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_ATOMIC_COUNTERS", GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS, 0, verifier,
1116*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1117*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1118*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_control_shader_storage_blocks_" + verifierSuffix).c_str(),
1119*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS", GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS, 0, verifier,
1120*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1121*35238bceSAndroid Build Coastguard Worker
1122*35238bceSAndroid Build Coastguard Worker // tess evaluation
1123*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1124*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_uniform_components_" + verifierSuffix).c_str(),
1125*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_UNIFORM_COMPONENTS", GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS, 1024, verifier,
1126*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1127*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1128*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_texture_image_units_" + verifierSuffix).c_str(),
1129*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS", GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS, 16, verifier,
1130*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1131*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1132*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_output_components_" + verifierSuffix).c_str(),
1133*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_OUTPUT_COMPONENTS", GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS, 64, verifier,
1134*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1135*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1136*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_input_components_" + verifierSuffix).c_str(),
1137*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_INPUT_COMPONENTS", GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS, 64, verifier,
1138*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1139*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1140*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_uniform_blocks_" + verifierSuffix).c_str(),
1141*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_UNIFORM_BLOCKS", GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS, 12, verifier,
1142*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1143*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1144*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_atomic_counter_buffers_" + verifierSuffix).c_str(),
1145*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS", GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS, 0, verifier,
1146*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1147*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1148*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_atomic_counters_" + verifierSuffix).c_str(),
1149*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_ATOMIC_COUNTERS", GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS, 0, verifier,
1150*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1151*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1152*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_shader_storage_blocks_" + verifierSuffix).c_str(),
1153*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS", GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS, 0, verifier,
1154*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1155*35238bceSAndroid Build Coastguard Worker
1156*35238bceSAndroid Build Coastguard Worker // geometry
1157*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1158*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_geometry_uniform_components_" + verifierSuffix).c_str(),
1159*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_UNIFORM_COMPONENTS", GL_MAX_GEOMETRY_UNIFORM_COMPONENTS, 1024, verifier,
1160*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1161*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1162*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_uniform_blocks_" + verifierSuffix).c_str(),
1163*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_UNIFORM_BLOCKS", GL_MAX_GEOMETRY_UNIFORM_BLOCKS, 12, verifier, glu::ApiType::es(3, 2)))
1164*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1165*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_input_components_" + verifierSuffix).c_str(),
1166*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_INPUT_COMPONENTS", GL_MAX_GEOMETRY_INPUT_COMPONENTS, 64, verifier, glu::ApiType::es(3, 2)))
1167*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1168*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_output_components_" + verifierSuffix).c_str(),
1169*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_OUTPUT_COMPONENTS", GL_MAX_GEOMETRY_OUTPUT_COMPONENTS, 64, verifier, glu::ApiType::es(3, 2)))
1170*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1171*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_output_vertices_" + verifierSuffix).c_str(),
1172*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_OUTPUT_VERTICES", GL_MAX_GEOMETRY_OUTPUT_VERTICES, 256, verifier, glu::ApiType::es(3, 2)))
1173*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1174*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_total_output_components_" + verifierSuffix).c_str(),
1175*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS", GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS, 1024, verifier,
1176*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1177*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1178*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_geometry_texture_image_units_" + verifierSuffix).c_str(),
1179*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_TEXTURE_IMAGE_UNITS", GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS, 16, verifier,
1180*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1181*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1182*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_geometry_shader_invocations_" + verifierSuffix).c_str(),
1183*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_SHADER_INVOCATIONS", GL_MAX_GEOMETRY_SHADER_INVOCATIONS, 32, verifier,
1184*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1185*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1186*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_atomic_counter_buffers_" + verifierSuffix).c_str(),
1187*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS", GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS, 0, verifier,
1188*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1189*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1190*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_atomic_counters_" + verifierSuffix).c_str(),
1191*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_ATOMIC_COUNTERS", GL_MAX_GEOMETRY_ATOMIC_COUNTERS, 0, verifier, glu::ApiType::es(3, 2)))
1192*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1193*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_shader_storage_blocks_" + verifierSuffix).c_str(),
1194*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_SHADER_STORAGE_BLOCKS", GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS, 0, verifier,
1195*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1196*35238bceSAndroid Build Coastguard Worker
1197*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1198*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "max_tess_control_image_uniforms_" + verifierSuffix).c_str(),
1199*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_CONTROL_IMAGE_UNIFORMS", GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS, 0, verifier,
1200*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1201*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1202*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_tess_evaluation_image_uniforms_" + verifierSuffix).c_str(),
1203*35238bceSAndroid Build Coastguard Worker "Test MAX_TESS_EVALUATION_IMAGE_UNIFORMS", GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS, 0, verifier,
1204*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1205*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1206*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_geometry_image_uniforms_" + verifierSuffix).c_str(),
1207*35238bceSAndroid Build Coastguard Worker "Test MAX_GEOMETRY_IMAGE_UNIFORMS", GL_MAX_GEOMETRY_IMAGE_UNIFORMS, 0, verifier, glu::ApiType::es(3, 2)))
1208*35238bceSAndroid Build Coastguard Worker
1209*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1210*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "debug_logged_messages_" + verifierSuffix).c_str(), "Test DEBUG_LOGGED_MESSAGES",
1211*35238bceSAndroid Build Coastguard Worker GL_DEBUG_LOGGED_MESSAGES, 0, verifier, glu::ApiType::es(3, 2)))
1212*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(
1213*35238bceSAndroid Build Coastguard Worker new MinimumValueCase(m_context, (std::string() + "debug_next_logged_message_length_" + verifierSuffix).c_str(),
1214*35238bceSAndroid Build Coastguard Worker "Test DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH, 0, verifier,
1215*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1216*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1217*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "debug_group_stack_depth_" + verifierSuffix).c_str(),
1218*35238bceSAndroid Build Coastguard Worker "Test DEBUG_GROUP_STACK_DEPTH", GL_DEBUG_GROUP_STACK_DEPTH, 0, verifier, glu::ApiType::es(3, 2)))
1219*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1220*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_debug_message_length_" + verifierSuffix).c_str(),
1221*35238bceSAndroid Build Coastguard Worker "Test MAX_DEBUG_MESSAGE_LENGTH", GL_MAX_DEBUG_MESSAGE_LENGTH, 1, verifier, glu::ApiType::es(3, 2)))
1222*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1223*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_debug_logged_messages_" + verifierSuffix).c_str(),
1224*35238bceSAndroid Build Coastguard Worker "Test MAX_DEBUG_LOGGED_MESSAGES", GL_MAX_DEBUG_LOGGED_MESSAGES, 1, verifier, glu::ApiType::es(3, 2)))
1225*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1226*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_debug_group_stack_depth_" + verifierSuffix).c_str(),
1227*35238bceSAndroid Build Coastguard Worker "Test MAX_DEBUG_GROUP_STACK_DEPTH", GL_MAX_DEBUG_GROUP_STACK_DEPTH, 64, verifier, glu::ApiType::es(3, 2)))
1228*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(m_context, (std::string() + "max_label_length_" + verifierSuffix).c_str(),
1229*35238bceSAndroid Build Coastguard Worker "Test MAX_LABEL_LENGTH", GL_MAX_LABEL_LENGTH, 256, verifier,
1230*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1231*35238bceSAndroid Build Coastguard Worker
1232*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new MinimumValueCase(
1233*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "texture_buffer_binding_" + verifierSuffix).c_str(), "Test TEXTURE_BUFFER_BINDING",
1234*35238bceSAndroid Build Coastguard Worker GL_TEXTURE_BUFFER_BINDING, 0, verifier, glu::ApiType::es(3, 2)))
1235*35238bceSAndroid Build Coastguard Worker
1236*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new CombinedUniformComponentsCase(
1237*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_tess_control_uniform_components_" + verifierSuffix).c_str(),
1238*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS", GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS, verifier,
1239*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1240*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new CombinedUniformComponentsCase(
1241*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_tess_evaluation_uniform_components_" + verifierSuffix).c_str(),
1242*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS", GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS,
1243*35238bceSAndroid Build Coastguard Worker verifier, glu::ApiType::es(3, 2)))
1244*35238bceSAndroid Build Coastguard Worker FOR_EACH_VERIFIER(new CombinedUniformComponentsCase(
1245*35238bceSAndroid Build Coastguard Worker m_context, (std::string() + "max_combined_geometry_uniform_components_" + verifierSuffix).c_str(),
1246*35238bceSAndroid Build Coastguard Worker "Test MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS, verifier,
1247*35238bceSAndroid Build Coastguard Worker glu::ApiType::es(3, 2)))
1248*35238bceSAndroid Build Coastguard Worker
1249*35238bceSAndroid Build Coastguard Worker #undef FOR_EACH_VERIFIER
1250*35238bceSAndroid Build Coastguard Worker }
1251*35238bceSAndroid Build Coastguard Worker
1252*35238bceSAndroid Build Coastguard Worker } // namespace Functional
1253*35238bceSAndroid Build Coastguard Worker } // namespace gles31
1254*35238bceSAndroid Build Coastguard Worker } // namespace deqp
1255