1e5c31af7Sopenharmony_ci/*-------------------------------------------------------------------------
2e5c31af7Sopenharmony_ci * drawElements Quality Program OpenGL ES 3.1 Module
3e5c31af7Sopenharmony_ci * -------------------------------------------------
4e5c31af7Sopenharmony_ci *
5e5c31af7Sopenharmony_ci * Copyright 2014 The Android Open Source Project
6e5c31af7Sopenharmony_ci *
7e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
8e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License.
9e5c31af7Sopenharmony_ci * You may obtain a copy of the License at
10e5c31af7Sopenharmony_ci *
11e5c31af7Sopenharmony_ci *      http://www.apache.org/licenses/LICENSE-2.0
12e5c31af7Sopenharmony_ci *
13e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
14e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
15e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and
17e5c31af7Sopenharmony_ci * limitations under the License.
18e5c31af7Sopenharmony_ci *
19e5c31af7Sopenharmony_ci *//*!
20e5c31af7Sopenharmony_ci * \file
21e5c31af7Sopenharmony_ci * \brief Functional Tests.
22e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ci#include "es31fFunctionalTests.hpp"
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_ci#include "glsShaderLibrary.hpp"
27e5c31af7Sopenharmony_ci#include "es31fBasicComputeShaderTests.hpp"
28e5c31af7Sopenharmony_ci#include "es31fComputeShaderBuiltinVarTests.hpp"
29e5c31af7Sopenharmony_ci#include "es31fDrawTests.hpp"
30e5c31af7Sopenharmony_ci#include "es31fShaderSharedVarTests.hpp"
31e5c31af7Sopenharmony_ci#include "es31fAtomicCounterTests.hpp"
32e5c31af7Sopenharmony_ci#include "es31fShaderAtomicOpTests.hpp"
33e5c31af7Sopenharmony_ci#include "es31fShaderImageLoadStoreTests.hpp"
34e5c31af7Sopenharmony_ci#include "es31fTessellationTests.hpp"
35e5c31af7Sopenharmony_ci#include "es31fSSBOLayoutTests.hpp"
36e5c31af7Sopenharmony_ci#include "es31fSSBOArrayLengthTests.hpp"
37e5c31af7Sopenharmony_ci#include "es31fShaderCommonFunctionTests.hpp"
38e5c31af7Sopenharmony_ci#include "es31fShaderPackingFunctionTests.hpp"
39e5c31af7Sopenharmony_ci#include "es31fShaderIntegerFunctionTests.hpp"
40e5c31af7Sopenharmony_ci#include "es31fStencilTexturingTests.hpp"
41e5c31af7Sopenharmony_ci#include "es31fShaderTextureSizeTests.hpp"
42e5c31af7Sopenharmony_ci#include "es31fShaderStateQueryTests.hpp"
43e5c31af7Sopenharmony_ci#include "es31fLayoutBindingTests.hpp"
44e5c31af7Sopenharmony_ci#include "es31fTextureLevelStateQueryTests.hpp"
45e5c31af7Sopenharmony_ci#include "es31fIntegerStateQueryTests.hpp"
46e5c31af7Sopenharmony_ci#include "es31fInternalFormatQueryTests.hpp"
47e5c31af7Sopenharmony_ci#include "es31fBooleanStateQueryTests.hpp"
48e5c31af7Sopenharmony_ci#include "es31fIndexedStateQueryTests.hpp"
49e5c31af7Sopenharmony_ci#include "es31fTextureStateQueryTests.hpp"
50e5c31af7Sopenharmony_ci#include "es31fFramebufferDefaultStateQueryTests.hpp"
51e5c31af7Sopenharmony_ci#include "es31fProgramPipelineStateQueryTests.hpp"
52e5c31af7Sopenharmony_ci#include "es31fProgramStateQueryTests.hpp"
53e5c31af7Sopenharmony_ci#include "es31fSamplerStateQueryTests.hpp"
54e5c31af7Sopenharmony_ci#include "es31fTextureFilteringTests.hpp"
55e5c31af7Sopenharmony_ci#include "es31fTextureFormatTests.hpp"
56e5c31af7Sopenharmony_ci#include "es31fTextureSpecificationTests.hpp"
57e5c31af7Sopenharmony_ci#include "es31fTextureMultisampleTests.hpp"
58e5c31af7Sopenharmony_ci#include "es31fMultisampleTests.hpp"
59e5c31af7Sopenharmony_ci#include "es31fSynchronizationTests.hpp"
60e5c31af7Sopenharmony_ci#include "es31fGeometryShaderTests.hpp"
61e5c31af7Sopenharmony_ci#include "es31fSampleShadingTests.hpp"
62e5c31af7Sopenharmony_ci#include "es31fSampleVariableTests.hpp"
63e5c31af7Sopenharmony_ci#include "es31fIndirectComputeDispatchTests.hpp"
64e5c31af7Sopenharmony_ci#include "es31fVertexAttributeBindingTests.hpp"
65e5c31af7Sopenharmony_ci#include "es31fVertexAttributeBindingStateQueryTests.hpp"
66e5c31af7Sopenharmony_ci#include "es31fShaderMultisampleInterpolationTests.hpp"
67e5c31af7Sopenharmony_ci#include "es31fShaderMultisampleInterpolationStateQueryTests.hpp"
68e5c31af7Sopenharmony_ci#include "es31fProgramUniformTests.hpp"
69e5c31af7Sopenharmony_ci#include "es31fOpaqueTypeIndexingTests.hpp"
70e5c31af7Sopenharmony_ci#include "es31fAdvancedBlendTests.hpp"
71e5c31af7Sopenharmony_ci#include "es31fSeparateShaderTests.hpp"
72e5c31af7Sopenharmony_ci#include "es31fUniformLocationTests.hpp"
73e5c31af7Sopenharmony_ci#include "es31fBuiltinPrecisionTests.hpp"
74e5c31af7Sopenharmony_ci#include "es31fTessellationGeometryInteractionTests.hpp"
75e5c31af7Sopenharmony_ci#include "es31fUniformBlockTests.hpp"
76e5c31af7Sopenharmony_ci#include "es31fDebugTests.hpp"
77e5c31af7Sopenharmony_ci#include "es31fFboColorbufferTests.hpp"
78e5c31af7Sopenharmony_ci#include "es31fFboNoAttachmentTests.hpp"
79e5c31af7Sopenharmony_ci#include "es31fFboSRGBWriteControlTests.hpp"
80e5c31af7Sopenharmony_ci#include "es31fProgramInterfaceQueryTests.hpp"
81e5c31af7Sopenharmony_ci#include "es31fTextureGatherTests.hpp"
82e5c31af7Sopenharmony_ci#include "es31fTextureFormatTests.hpp"
83e5c31af7Sopenharmony_ci#include "es31fTextureBufferTests.hpp"
84e5c31af7Sopenharmony_ci#include "es31fTextureBorderClampTests.hpp"
85e5c31af7Sopenharmony_ci#include "es31fShaderBuiltinConstantTests.hpp"
86e5c31af7Sopenharmony_ci#include "es31fShaderHelperInvocationTests.hpp"
87e5c31af7Sopenharmony_ci#include "es31fPrimitiveBoundingBoxTests.hpp"
88e5c31af7Sopenharmony_ci#include "es31fAndroidExtensionPackES31ATests.hpp"
89e5c31af7Sopenharmony_ci#include "es31fCopyImageTests.hpp"
90e5c31af7Sopenharmony_ci#include "es31fDefaultVertexArrayObjectTests.hpp"
91e5c31af7Sopenharmony_ci#include "es31fSRGBDecodeTests.hpp"
92e5c31af7Sopenharmony_ci#include "es31fDrawElementsBaseVertexTests.hpp"
93e5c31af7Sopenharmony_ci#include "es31fShaderFramebufferFetchTests.hpp"
94e5c31af7Sopenharmony_ci#include "es31fShaderUniformIntegerFunctionTests.hpp"
95e5c31af7Sopenharmony_ci
96e5c31af7Sopenharmony_cinamespace deqp
97e5c31af7Sopenharmony_ci{
98e5c31af7Sopenharmony_cinamespace gles31
99e5c31af7Sopenharmony_ci{
100e5c31af7Sopenharmony_cinamespace Functional
101e5c31af7Sopenharmony_ci{
102e5c31af7Sopenharmony_ci
103e5c31af7Sopenharmony_ciclass ShaderLibraryTest : public TestCaseGroup
104e5c31af7Sopenharmony_ci{
105e5c31af7Sopenharmony_cipublic:
106e5c31af7Sopenharmony_ci	ShaderLibraryTest (Context& context, const char* filename, const char* name, const char* description)
107e5c31af7Sopenharmony_ci		: TestCaseGroup	(context, name, description)
108e5c31af7Sopenharmony_ci		, m_filename	(filename)
109e5c31af7Sopenharmony_ci	{
110e5c31af7Sopenharmony_ci	}
111e5c31af7Sopenharmony_ci
112e5c31af7Sopenharmony_ci	void init (void)
113e5c31af7Sopenharmony_ci	{
114e5c31af7Sopenharmony_ci		gls::ShaderLibrary			shaderLibrary(m_testCtx, m_context.getRenderContext(), m_context.getContextInfo());
115e5c31af7Sopenharmony_ci		std::string					fileName	= m_filename;
116e5c31af7Sopenharmony_ci		std::vector<tcu::TestNode*>	children	= shaderLibrary.loadShaderFile(fileName.c_str());
117e5c31af7Sopenharmony_ci
118e5c31af7Sopenharmony_ci		for (int i = 0; i < (int)children.size(); i++)
119e5c31af7Sopenharmony_ci			addChild(children[i]);
120e5c31af7Sopenharmony_ci	}
121e5c31af7Sopenharmony_ci
122e5c31af7Sopenharmony_ciprivate:
123e5c31af7Sopenharmony_ci	const std::string m_filename;
124e5c31af7Sopenharmony_ci};
125e5c31af7Sopenharmony_ci
126e5c31af7Sopenharmony_ciclass ShaderLibraryGroup : public TestCaseGroup
127e5c31af7Sopenharmony_ci{
128e5c31af7Sopenharmony_cipublic:
129e5c31af7Sopenharmony_ci	struct File
130e5c31af7Sopenharmony_ci	{
131e5c31af7Sopenharmony_ci		const char*		fileName;
132e5c31af7Sopenharmony_ci		const char*		testName;
133e5c31af7Sopenharmony_ci		const char*		description;
134e5c31af7Sopenharmony_ci	};
135e5c31af7Sopenharmony_ci
136e5c31af7Sopenharmony_ci	ShaderLibraryGroup (Context& context, const char* name, const char* description, int numFiles, const File* files)
137e5c31af7Sopenharmony_ci		: TestCaseGroup	(context, name, description)
138e5c31af7Sopenharmony_ci		, m_numFiles	(numFiles)
139e5c31af7Sopenharmony_ci		, m_files		(files)
140e5c31af7Sopenharmony_ci	{}
141e5c31af7Sopenharmony_ci
142e5c31af7Sopenharmony_ci	void init (void)
143e5c31af7Sopenharmony_ci	{
144e5c31af7Sopenharmony_ci		for (int ndx = 0; ndx < m_numFiles; ++ndx)
145e5c31af7Sopenharmony_ci			addChild(new ShaderLibraryTest(m_context, m_files[ndx].fileName, m_files[ndx].testName, m_files[ndx].description));
146e5c31af7Sopenharmony_ci	}
147e5c31af7Sopenharmony_ci
148e5c31af7Sopenharmony_ciprivate:
149e5c31af7Sopenharmony_ci	const int			m_numFiles;
150e5c31af7Sopenharmony_ci	const File* const	m_files;
151e5c31af7Sopenharmony_ci};
152e5c31af7Sopenharmony_ci
153e5c31af7Sopenharmony_ciclass ShaderBuiltinVarTests : public TestCaseGroup
154e5c31af7Sopenharmony_ci{
155e5c31af7Sopenharmony_cipublic:
156e5c31af7Sopenharmony_ci	ShaderBuiltinVarTests (Context& context)
157e5c31af7Sopenharmony_ci		: TestCaseGroup(context, "builtin_var", "Shader Built-in Variable Tests")
158e5c31af7Sopenharmony_ci	{
159e5c31af7Sopenharmony_ci	}
160e5c31af7Sopenharmony_ci
161e5c31af7Sopenharmony_ci	void init (void)
162e5c31af7Sopenharmony_ci	{
163e5c31af7Sopenharmony_ci		addChild(new ComputeShaderBuiltinVarTests(m_context));
164e5c31af7Sopenharmony_ci	}
165e5c31af7Sopenharmony_ci};
166e5c31af7Sopenharmony_ci
167e5c31af7Sopenharmony_ciclass ShaderBuiltinFunctionTests : public TestCaseGroup
168e5c31af7Sopenharmony_ci{
169e5c31af7Sopenharmony_cipublic:
170e5c31af7Sopenharmony_ci	ShaderBuiltinFunctionTests (Context& context)
171e5c31af7Sopenharmony_ci		: TestCaseGroup(context, "builtin_functions", "Built-in Function Tests")
172e5c31af7Sopenharmony_ci	{
173e5c31af7Sopenharmony_ci	}
174e5c31af7Sopenharmony_ci
175e5c31af7Sopenharmony_ci	void init (void)
176e5c31af7Sopenharmony_ci	{
177e5c31af7Sopenharmony_ci		addChild(new ShaderCommonFunctionTests			(m_context));
178e5c31af7Sopenharmony_ci		addChild(new ShaderPackingFunctionTests			(m_context));
179e5c31af7Sopenharmony_ci		addChild(new ShaderIntegerFunctionTests			(m_context));
180e5c31af7Sopenharmony_ci		addChild(new ShaderUniformIntegerFunctionTests	(m_context));
181e5c31af7Sopenharmony_ci		addChild(new ShaderTextureSizeTests				(m_context));
182e5c31af7Sopenharmony_ci		addChild(createBuiltinPrecisionTests			(m_context));
183e5c31af7Sopenharmony_ci	}
184e5c31af7Sopenharmony_ci};
185e5c31af7Sopenharmony_ci
186e5c31af7Sopenharmony_ciclass ShaderLinkageTests : public TestCaseGroup
187e5c31af7Sopenharmony_ci{
188e5c31af7Sopenharmony_cipublic:
189e5c31af7Sopenharmony_ci	ShaderLinkageTests (Context& context, bool isGL45)
190e5c31af7Sopenharmony_ci		: TestCaseGroup(context,  "linkage", "Linkage Tests")
191e5c31af7Sopenharmony_ci		, m_isGL45(isGL45)
192e5c31af7Sopenharmony_ci	{
193e5c31af7Sopenharmony_ci	}
194e5c31af7Sopenharmony_ci
195e5c31af7Sopenharmony_ciprivate:
196e5c31af7Sopenharmony_ci	bool m_isGL45;
197e5c31af7Sopenharmony_ci
198e5c31af7Sopenharmony_ci	void init (void)
199e5c31af7Sopenharmony_ci	{
200e5c31af7Sopenharmony_ci		static const ShaderLibraryGroup::File	s_filesES31[]	=
201e5c31af7Sopenharmony_ci		{
202e5c31af7Sopenharmony_ci			{ "shaders/es31/declarations.test",						"declarations",				"Declarations"						},
203e5c31af7Sopenharmony_ci			{ "shaders/es31/linkage_geometry.test",					"geometry",					"Geometry shader"					},
204e5c31af7Sopenharmony_ci			{ "shaders/es31/linkage_tessellation.test",				"tessellation",				"Tessellation shader"				},
205e5c31af7Sopenharmony_ci			{ "shaders/es31/linkage_tessellation_geometry.test",	"tessellation_geometry",	"Tessellation and geometry shader"	},
206e5c31af7Sopenharmony_ci			{ "shaders/es31/linkage_shader_storage_block.test",		"shader_storage_block",		"Shader storage blocks"				},
207e5c31af7Sopenharmony_ci			{ "shaders/es31/linkage_io_block.test",					"io_block",					"Shader io blocks"					},
208e5c31af7Sopenharmony_ci			{ "shaders/es31/linkage_uniform.test",					"uniform",					"Uniform linkage"					},
209e5c31af7Sopenharmony_ci		};
210e5c31af7Sopenharmony_ci		static const ShaderLibraryGroup::File	s_filesES32[]	=
211e5c31af7Sopenharmony_ci		{
212e5c31af7Sopenharmony_ci			{ "shaders/es32/linkage_geometry.test",					"geometry",					"Geometry shader"					},
213e5c31af7Sopenharmony_ci			{ "shaders/es32/linkage_tessellation.test",				"tessellation",				"Tessellation shader"				},
214e5c31af7Sopenharmony_ci			{ "shaders/es32/linkage_tessellation_geometry.test",	"tessellation_geometry",	"Tessellation and geometry shader"	},
215e5c31af7Sopenharmony_ci			{ "shaders/es32/linkage_shader_storage_block.test",		"shader_storage_block",		"Shader storage blocks"				},
216e5c31af7Sopenharmony_ci			{ "shaders/es32/linkage_io_block.test",					"io_block",					"Shader io blocks"					},
217e5c31af7Sopenharmony_ci			{ "shaders/es32/linkage_uniform.test",					"uniform",					"Uniform linkage"					},
218e5c31af7Sopenharmony_ci		};
219e5c31af7Sopenharmony_ci		static const ShaderLibraryGroup::File	s_filesGL45[]	=
220e5c31af7Sopenharmony_ci		{
221e5c31af7Sopenharmony_ci			{ "shaders/gl45/linkage_geometry.test",					"geometry",					"Geometry shader"					},
222e5c31af7Sopenharmony_ci			{ "shaders/gl45/linkage_tessellation.test",				"tessellation",				"Tessellation shader"				},
223e5c31af7Sopenharmony_ci			{ "shaders/gl45/linkage_tessellation_geometry.test",	"tessellation_geometry",	"Tessellation and geometry shader"	},
224e5c31af7Sopenharmony_ci			{ "shaders/gl45/linkage_shader_storage_block.test",		"shader_storage_block",		"Shader storage blocks"				},
225e5c31af7Sopenharmony_ci			{ "shaders/gl45/linkage_io_block.test",					"io_block",					"Shader io blocks"					},
226e5c31af7Sopenharmony_ci			{ "shaders/gl45/linkage_uniform.test",					"uniform",					"Uniform linkage"					},
227e5c31af7Sopenharmony_ci		};
228e5c31af7Sopenharmony_ci
229e5c31af7Sopenharmony_ci		if (m_isGL45)
230e5c31af7Sopenharmony_ci			addChild(new ShaderLibraryGroup(m_context,	"gl45",		"GL 4.5 Linkage",		DE_LENGTH_OF_ARRAY(s_filesGL45), s_filesGL45));
231e5c31af7Sopenharmony_ci		else
232e5c31af7Sopenharmony_ci		{
233e5c31af7Sopenharmony_ci			addChild(new ShaderLibraryGroup(m_context,	"es31",		"GLSL ES 3.1 Linkage",	DE_LENGTH_OF_ARRAY(s_filesES31), s_filesES31));
234e5c31af7Sopenharmony_ci			addChild(new ShaderLibraryGroup(m_context,	"es32",		"GLSL ES 3.2 Linkage",	DE_LENGTH_OF_ARRAY(s_filesES32), s_filesES32));
235e5c31af7Sopenharmony_ci		}
236e5c31af7Sopenharmony_ci	}
237e5c31af7Sopenharmony_ci};
238e5c31af7Sopenharmony_ci
239e5c31af7Sopenharmony_ciclass ShaderTests : public TestCaseGroup
240e5c31af7Sopenharmony_ci{
241e5c31af7Sopenharmony_cipublic:
242e5c31af7Sopenharmony_ci	ShaderTests (Context& context, bool isGL45)
243e5c31af7Sopenharmony_ci		: TestCaseGroup(context, "shaders", "Shading Language Tests")
244e5c31af7Sopenharmony_ci		, m_isGL45(isGL45)
245e5c31af7Sopenharmony_ci	{
246e5c31af7Sopenharmony_ci	}
247e5c31af7Sopenharmony_ci
248e5c31af7Sopenharmony_ciprivate:
249e5c31af7Sopenharmony_ci	bool m_isGL45;
250e5c31af7Sopenharmony_ci
251e5c31af7Sopenharmony_ci	void init (void)
252e5c31af7Sopenharmony_ci	{
253e5c31af7Sopenharmony_ci		addChild(new ShaderBuiltinVarTests				(m_context));
254e5c31af7Sopenharmony_ci		addChild(new ShaderBuiltinFunctionTests			(m_context));
255e5c31af7Sopenharmony_ci		addChild(new SampleVariableTests				(m_context));
256e5c31af7Sopenharmony_ci		addChild(new ShaderMultisampleInterpolationTests(m_context));
257e5c31af7Sopenharmony_ci		addChild(new OpaqueTypeIndexingTests			(m_context));
258e5c31af7Sopenharmony_ci
259e5c31af7Sopenharmony_ci		{
260e5c31af7Sopenharmony_ci			static const ShaderLibraryGroup::File s_functionFiles[] =
261e5c31af7Sopenharmony_ci			{
262e5c31af7Sopenharmony_ci				{ "shaders/es31/functions.test",	"es31",		"GLSL ES 3.1 Function Tests"	},
263e5c31af7Sopenharmony_ci				{ "shaders/es32/functions.test",	"es32",		"GLSL ES 3.2 Function Tests"	},
264e5c31af7Sopenharmony_ci			};
265e5c31af7Sopenharmony_ci			addChild(new ShaderLibraryGroup(m_context, "functions", "Function Tests", DE_LENGTH_OF_ARRAY(s_functionFiles), s_functionFiles));
266e5c31af7Sopenharmony_ci		}
267e5c31af7Sopenharmony_ci
268e5c31af7Sopenharmony_ci		{
269e5c31af7Sopenharmony_ci			static const ShaderLibraryGroup::File s_arraysFiles[] =
270e5c31af7Sopenharmony_ci			{
271e5c31af7Sopenharmony_ci				{ "shaders/es31/arrays.test",	"es31",		"GLSL ES 3.1 Array Tests"	},
272e5c31af7Sopenharmony_ci				{ "shaders/es32/arrays.test",	"es32",		"GLSL ES 3.2 Array Tests"	},
273e5c31af7Sopenharmony_ci			};
274e5c31af7Sopenharmony_ci			addChild(new ShaderLibraryGroup(m_context, "arrays", "Array Tests", DE_LENGTH_OF_ARRAY(s_arraysFiles), s_arraysFiles));
275e5c31af7Sopenharmony_ci		}
276e5c31af7Sopenharmony_ci
277e5c31af7Sopenharmony_ci		{
278e5c31af7Sopenharmony_ci			static const ShaderLibraryGroup::File s_arraysOfArraysFilesES[] =
279e5c31af7Sopenharmony_ci			{
280e5c31af7Sopenharmony_ci				{ "shaders/es31/arrays_of_arrays.test",		"es31",		"GLSL ES 3.1 Arrays of Arrays Tests"	},
281e5c31af7Sopenharmony_ci				{ "shaders/es32/arrays_of_arrays.test",		"es32",		"GLSL ES 3.2 Arrays of Arrays Tests"	},
282e5c31af7Sopenharmony_ci			};
283e5c31af7Sopenharmony_ci
284e5c31af7Sopenharmony_ci			static const ShaderLibraryGroup::File s_arraysOfArraysFilesGL[] =
285e5c31af7Sopenharmony_ci			{
286e5c31af7Sopenharmony_ci				{ "shaders/gl45/arrays_of_arrays.test",		"gl45",		"GLSL 4.5 Arrays of Arrays Tests"		},
287e5c31af7Sopenharmony_ci			};
288e5c31af7Sopenharmony_ci			if (m_isGL45)
289e5c31af7Sopenharmony_ci				addChild(new ShaderLibraryGroup(m_context, "arrays_of_arrays", "Arrays of Arras Tests", DE_LENGTH_OF_ARRAY(s_arraysOfArraysFilesGL), s_arraysOfArraysFilesGL));
290e5c31af7Sopenharmony_ci			else
291e5c31af7Sopenharmony_ci				addChild(new ShaderLibraryGroup(m_context, "arrays_of_arrays", "Arrays of Arras Tests", DE_LENGTH_OF_ARRAY(s_arraysOfArraysFilesES), s_arraysOfArraysFilesES));
292e5c31af7Sopenharmony_ci		}
293e5c31af7Sopenharmony_ci
294e5c31af7Sopenharmony_ci		addChild(new ShaderLinkageTests					(m_context, m_isGL45));
295e5c31af7Sopenharmony_ci		addChild(new ShaderBuiltinConstantTests			(m_context));
296e5c31af7Sopenharmony_ci		addChild(new ShaderHelperInvocationTests		(m_context));
297e5c31af7Sopenharmony_ci
298e5c31af7Sopenharmony_ci		{
299e5c31af7Sopenharmony_ci			static const ShaderLibraryGroup::File s_implicitConversionsFilesES[] =
300e5c31af7Sopenharmony_ci			{
301e5c31af7Sopenharmony_ci				{ "shaders/es31/implicit_conversions.test",		"es31",		"GLSL ES 3.1 GL_EXT_shader_implicit_conversions Tests"	},
302e5c31af7Sopenharmony_ci				{ "shaders/es32/implicit_conversions.test",		"es32",		"GLSL ES 3.2 GL_EXT_shader_implicit_conversions Tests"	},
303e5c31af7Sopenharmony_ci			};
304e5c31af7Sopenharmony_ci			static const ShaderLibraryGroup::File s_implicitConversionsFilesGL[] =
305e5c31af7Sopenharmony_ci			{
306e5c31af7Sopenharmony_ci				{ "shaders/gl45/implicit_conversions.test",		"gl45",		"GL45 implicit conversions Tests" },
307e5c31af7Sopenharmony_ci			};
308e5c31af7Sopenharmony_ci			if (m_isGL45)
309e5c31af7Sopenharmony_ci				addChild(new ShaderLibraryGroup(m_context, "implicit_conversions", "GL45 implicit conversions Tests", DE_LENGTH_OF_ARRAY(s_implicitConversionsFilesGL), s_implicitConversionsFilesGL));
310e5c31af7Sopenharmony_ci			else
311e5c31af7Sopenharmony_ci				addChild(new ShaderLibraryGroup(m_context, "implicit_conversions", "GL_EXT_shader_implicit_conversions Tests", DE_LENGTH_OF_ARRAY(s_implicitConversionsFilesES), s_implicitConversionsFilesES));
312e5c31af7Sopenharmony_ci		}
313e5c31af7Sopenharmony_ci
314e5c31af7Sopenharmony_ci		{
315e5c31af7Sopenharmony_ci			static const ShaderLibraryGroup::File s_uniformBlockFiles[] =
316e5c31af7Sopenharmony_ci			{
317e5c31af7Sopenharmony_ci				{ "shaders/es31/uniform_block.test",	"es31",		"GLSL ES 3.1 Uniform block tests"	},
318e5c31af7Sopenharmony_ci				{ "shaders/es32/uniform_block.test",	"es32",		"GLSL ES 3.2 Uniform block tests"	},
319e5c31af7Sopenharmony_ci			};
320e5c31af7Sopenharmony_ci			addChild(new ShaderLibraryGroup(m_context, "uniform_block", "Uniform block tests", DE_LENGTH_OF_ARRAY(s_uniformBlockFiles), s_uniformBlockFiles));
321e5c31af7Sopenharmony_ci		}
322e5c31af7Sopenharmony_ci
323e5c31af7Sopenharmony_ci		addChild(new ShaderFramebufferFetchTests		(m_context));
324e5c31af7Sopenharmony_ci	}
325e5c31af7Sopenharmony_ci};
326e5c31af7Sopenharmony_ci
327e5c31af7Sopenharmony_ciclass ComputeTests : public TestCaseGroup
328e5c31af7Sopenharmony_ci{
329e5c31af7Sopenharmony_cipublic:
330e5c31af7Sopenharmony_ci	ComputeTests (Context& context)
331e5c31af7Sopenharmony_ci		: TestCaseGroup(context, "compute", "Compute Shader Tests")
332e5c31af7Sopenharmony_ci	{
333e5c31af7Sopenharmony_ci	}
334e5c31af7Sopenharmony_ci
335e5c31af7Sopenharmony_ci	void init (void)
336e5c31af7Sopenharmony_ci	{
337e5c31af7Sopenharmony_ci		addChild(new BasicComputeShaderTests		(m_context));
338e5c31af7Sopenharmony_ci		addChild(new ShaderSharedVarTests			(m_context));
339e5c31af7Sopenharmony_ci		addChild(new IndirectComputeDispatchTests	(m_context));
340e5c31af7Sopenharmony_ci	}
341e5c31af7Sopenharmony_ci};
342e5c31af7Sopenharmony_ci
343e5c31af7Sopenharmony_ciclass SSBOTests : public TestCaseGroup
344e5c31af7Sopenharmony_ci{
345e5c31af7Sopenharmony_cipublic:
346e5c31af7Sopenharmony_ci	SSBOTests (Context& context)
347e5c31af7Sopenharmony_ci		: TestCaseGroup(context, "ssbo", "Shader Storage Buffer Object Tests")
348e5c31af7Sopenharmony_ci	{
349e5c31af7Sopenharmony_ci	}
350e5c31af7Sopenharmony_ci
351e5c31af7Sopenharmony_ci	void init (void)
352e5c31af7Sopenharmony_ci	{
353e5c31af7Sopenharmony_ci		addChild(new SSBOLayoutTests			(m_context));
354e5c31af7Sopenharmony_ci		addChild(new ShaderAtomicOpTests		(m_context, "atomic", ATOMIC_OPERAND_BUFFER_VARIABLE));
355e5c31af7Sopenharmony_ci		addChild(new SSBOArrayLengthTests		(m_context));
356e5c31af7Sopenharmony_ci	}
357e5c31af7Sopenharmony_ci};
358e5c31af7Sopenharmony_ci
359e5c31af7Sopenharmony_ciclass TextureTests : public TestCaseGroup
360e5c31af7Sopenharmony_ci{
361e5c31af7Sopenharmony_cipublic:
362e5c31af7Sopenharmony_ci	TextureTests (Context& context, bool isGL45)
363e5c31af7Sopenharmony_ci		: TestCaseGroup(context, "texture", "Texture tests")
364e5c31af7Sopenharmony_ci		, m_isGL45(isGL45)
365e5c31af7Sopenharmony_ci	{
366e5c31af7Sopenharmony_ci	}
367e5c31af7Sopenharmony_ci
368e5c31af7Sopenharmony_ci	void init (void)
369e5c31af7Sopenharmony_ci	{
370e5c31af7Sopenharmony_ci		addChild(new TextureFilteringTests		(m_context));
371e5c31af7Sopenharmony_ci		addChild(new TextureFormatTests			(m_context));
372e5c31af7Sopenharmony_ci		addChild(new TextureSpecificationTests	(m_context));
373e5c31af7Sopenharmony_ci		addChild(new TextureMultisampleTests	(m_context));
374e5c31af7Sopenharmony_ci		addChild(new TextureGatherTests			(m_context));
375e5c31af7Sopenharmony_ci		addChild(createTextureBufferTests		(m_context));
376e5c31af7Sopenharmony_ci		addChild(new TextureBorderClampTests	(m_context, m_isGL45));
377e5c31af7Sopenharmony_ci	}
378e5c31af7Sopenharmony_ci
379e5c31af7Sopenharmony_ciprivate:
380e5c31af7Sopenharmony_ci	bool m_isGL45;
381e5c31af7Sopenharmony_ci};
382e5c31af7Sopenharmony_ci
383e5c31af7Sopenharmony_ciclass StateQueryTests : public TestCaseGroup
384e5c31af7Sopenharmony_ci{
385e5c31af7Sopenharmony_cipublic:
386e5c31af7Sopenharmony_ci	StateQueryTests (Context& context)
387e5c31af7Sopenharmony_ci		: TestCaseGroup(context, "state_query", "State query tests")
388e5c31af7Sopenharmony_ci	{
389e5c31af7Sopenharmony_ci	}
390e5c31af7Sopenharmony_ci
391e5c31af7Sopenharmony_ci	void init (void)
392e5c31af7Sopenharmony_ci	{
393e5c31af7Sopenharmony_ci		addChild(new BooleanStateQueryTests							(m_context));
394e5c31af7Sopenharmony_ci		addChild(new IntegerStateQueryTests							(m_context));
395e5c31af7Sopenharmony_ci		addChild(new IndexedStateQueryTests							(m_context));
396e5c31af7Sopenharmony_ci		addChild(new TextureStateQueryTests							(m_context));
397e5c31af7Sopenharmony_ci		addChild(new TextureLevelStateQueryTests					(m_context));
398e5c31af7Sopenharmony_ci		addChild(new SamplerStateQueryTests							(m_context));
399e5c31af7Sopenharmony_ci		addChild(new ShaderStateQueryTests							(m_context));
400e5c31af7Sopenharmony_ci		addChild(new InternalFormatQueryTests						(m_context));
401e5c31af7Sopenharmony_ci		addChild(new VertexAttributeBindingStateQueryTests			(m_context));
402e5c31af7Sopenharmony_ci		addChild(new ShaderMultisampleInterpolationStateQueryTests	(m_context));
403e5c31af7Sopenharmony_ci		addChild(new FramebufferDefaultStateQueryTests				(m_context));
404e5c31af7Sopenharmony_ci		addChild(new ProgramStateQueryTests							(m_context));
405e5c31af7Sopenharmony_ci		addChild(new ProgramPipelineStateQueryTests					(m_context));
406e5c31af7Sopenharmony_ci	}
407e5c31af7Sopenharmony_ci};
408e5c31af7Sopenharmony_ci
409e5c31af7Sopenharmony_ciclass FboTests : public TestCaseGroup
410e5c31af7Sopenharmony_ci{
411e5c31af7Sopenharmony_cipublic:
412e5c31af7Sopenharmony_ci	FboTests (Context& context)
413e5c31af7Sopenharmony_ci		: TestCaseGroup(context, "fbo", "Framebuffer Object Tests")
414e5c31af7Sopenharmony_ci	{
415e5c31af7Sopenharmony_ci	}
416e5c31af7Sopenharmony_ci
417e5c31af7Sopenharmony_ci	void init (void)
418e5c31af7Sopenharmony_ci	{
419e5c31af7Sopenharmony_ci		addChild(new FboColorTests						(m_context));
420e5c31af7Sopenharmony_ci		addChild(createFboNoAttachmentTests				(m_context));
421e5c31af7Sopenharmony_ci		addChild(createFboNoAttachmentCompletenessTests	(m_context));
422e5c31af7Sopenharmony_ci		addChild(new FboSRGBWriteControlTests			(m_context));
423e5c31af7Sopenharmony_ci	}
424e5c31af7Sopenharmony_ci};
425e5c31af7Sopenharmony_ci
426e5c31af7Sopenharmony_ciclass SRGBTextureDecodeTests : public TestCaseGroup
427e5c31af7Sopenharmony_ci{
428e5c31af7Sopenharmony_cipublic:
429e5c31af7Sopenharmony_ci	SRGBTextureDecodeTests (Context& context)
430e5c31af7Sopenharmony_ci		: TestCaseGroup (context, "srgb_texture_decode", "GL_EXT_texture_sRGB_decode tests")
431e5c31af7Sopenharmony_ci	{
432e5c31af7Sopenharmony_ci	}
433e5c31af7Sopenharmony_ci
434e5c31af7Sopenharmony_ci	void init (void)
435e5c31af7Sopenharmony_ci	{
436e5c31af7Sopenharmony_ci		addChild(new SRGBDecodeTests	(m_context));
437e5c31af7Sopenharmony_ci	}
438e5c31af7Sopenharmony_ci};
439e5c31af7Sopenharmony_ci
440e5c31af7Sopenharmony_ciGLES31FunctionalTests::GLES31FunctionalTests (Context& context)
441e5c31af7Sopenharmony_ci	: TestCaseGroup(context, "functional", "Functionality Tests")
442e5c31af7Sopenharmony_ci{
443e5c31af7Sopenharmony_ci}
444e5c31af7Sopenharmony_ci
445e5c31af7Sopenharmony_ciGLES31FunctionalTests::~GLES31FunctionalTests (void)
446e5c31af7Sopenharmony_ci{
447e5c31af7Sopenharmony_ci}
448e5c31af7Sopenharmony_ci
449e5c31af7Sopenharmony_civoid GLES31FunctionalTests::init (void)
450e5c31af7Sopenharmony_ci{
451e5c31af7Sopenharmony_ci	addChild(new ShaderTests							(m_context, false));
452e5c31af7Sopenharmony_ci	addChild(new ComputeTests							(m_context));
453e5c31af7Sopenharmony_ci	addChild(new DrawTests								(m_context));
454e5c31af7Sopenharmony_ci	addChild(new TessellationTests						(m_context, false));
455e5c31af7Sopenharmony_ci	addChild(new SSBOTests								(m_context));
456e5c31af7Sopenharmony_ci	addChild(new UniformBlockTests						(m_context));
457e5c31af7Sopenharmony_ci	addChild(new ShaderImageLoadStoreTests				(m_context));
458e5c31af7Sopenharmony_ci	addChild(new AtomicCounterTests						(m_context));
459e5c31af7Sopenharmony_ci	addChild(new StencilTexturingTests					(m_context));
460e5c31af7Sopenharmony_ci	addChild(new TextureTests							(m_context, false));
461e5c31af7Sopenharmony_ci	addChild(new StateQueryTests						(m_context));
462e5c31af7Sopenharmony_ci	addChild(new MultisampleTests						(m_context));
463e5c31af7Sopenharmony_ci	addChild(new SynchronizationTests					(m_context));
464e5c31af7Sopenharmony_ci	addChild(new GeometryShaderTests					(m_context, false));
465e5c31af7Sopenharmony_ci	addChild(new SampleShadingTests						(m_context));
466e5c31af7Sopenharmony_ci	addChild(new VertexAttributeBindingTests			(m_context));
467e5c31af7Sopenharmony_ci	addChild(new ProgramUniformTests					(m_context));
468e5c31af7Sopenharmony_ci	addChild(new AdvancedBlendTests						(m_context));
469e5c31af7Sopenharmony_ci	addChild(createGLESSeparateShaderTests				(m_context));
470e5c31af7Sopenharmony_ci	addChild(new UniformLocationTests					(m_context, false));
471e5c31af7Sopenharmony_ci	addChild(new TessellationGeometryInteractionTests	(m_context, false));
472e5c31af7Sopenharmony_ci	addChild(new DebugTests								(m_context));
473e5c31af7Sopenharmony_ci	addChild(new FboTests								(m_context));
474e5c31af7Sopenharmony_ci	addChild(new ProgramInterfaceQueryTests				(m_context, false));
475e5c31af7Sopenharmony_ci	addChild(new LayoutBindingTests						(m_context));
476e5c31af7Sopenharmony_ci	addChild(new PrimitiveBoundingBoxTests				(m_context));
477e5c31af7Sopenharmony_ci	addChild(new AndroidExtensionPackES31ATests			(m_context));
478e5c31af7Sopenharmony_ci	addChild(createCopyImageTests						(m_context, false));
479e5c31af7Sopenharmony_ci	addChild(new DefaultVertexArrayObjectTests			(m_context));
480e5c31af7Sopenharmony_ci	addChild(new SRGBTextureDecodeTests					(m_context));
481e5c31af7Sopenharmony_ci	addChild(new DrawElementsBaseVertexTests			(m_context));
482e5c31af7Sopenharmony_ci}
483e5c31af7Sopenharmony_ci
484e5c31af7Sopenharmony_ciGL45ES31FunctionalTests::GL45ES31FunctionalTests (Context& context)
485e5c31af7Sopenharmony_ci	: TestCaseGroup(context, "functional", "Functionality Tests")
486e5c31af7Sopenharmony_ci{
487e5c31af7Sopenharmony_ci}
488e5c31af7Sopenharmony_ci
489e5c31af7Sopenharmony_ciGL45ES31FunctionalTests::~GL45ES31FunctionalTests (void)
490e5c31af7Sopenharmony_ci{
491e5c31af7Sopenharmony_ci}
492e5c31af7Sopenharmony_ci
493e5c31af7Sopenharmony_civoid GL45ES31FunctionalTests::init (void)
494e5c31af7Sopenharmony_ci{
495e5c31af7Sopenharmony_ci	addChild(new ShaderTests							(m_context, true));
496e5c31af7Sopenharmony_ci	addChild(new ComputeTests							(m_context));
497e5c31af7Sopenharmony_ci	addChild(new DrawTests								(m_context));
498e5c31af7Sopenharmony_ci	addChild(new TessellationTests						(m_context, true));
499e5c31af7Sopenharmony_ci	addChild(new SSBOTests								(m_context));
500e5c31af7Sopenharmony_ci	addChild(new UniformBlockTests						(m_context));
501e5c31af7Sopenharmony_ci	addChild(new ShaderImageLoadStoreTests				(m_context));
502e5c31af7Sopenharmony_ci	addChild(new AtomicCounterTests						(m_context));
503e5c31af7Sopenharmony_ci	addChild(new StencilTexturingTests					(m_context));
504e5c31af7Sopenharmony_ci	addChild(new TextureTests							(m_context, true));
505e5c31af7Sopenharmony_ci	addChild(new StateQueryTests						(m_context));
506e5c31af7Sopenharmony_ci	addChild(new MultisampleTests						(m_context));
507e5c31af7Sopenharmony_ci	addChild(new SynchronizationTests					(m_context));
508e5c31af7Sopenharmony_ci	addChild(new GeometryShaderTests					(m_context, true));
509e5c31af7Sopenharmony_ci	addChild(new SampleShadingTests						(m_context));
510e5c31af7Sopenharmony_ci	addChild(new VertexAttributeBindingTests			(m_context));
511e5c31af7Sopenharmony_ci	addChild(new ProgramUniformTests					(m_context));
512e5c31af7Sopenharmony_ci	addChild(new AdvancedBlendTests						(m_context));
513e5c31af7Sopenharmony_ci	addChild(createCommonSeparateShaderTests			(m_context));
514e5c31af7Sopenharmony_ci	addChild(new UniformLocationTests					(m_context, true));
515e5c31af7Sopenharmony_ci	addChild(new TessellationGeometryInteractionTests	(m_context, true));
516e5c31af7Sopenharmony_ci	addChild(new DebugTests								(m_context));
517e5c31af7Sopenharmony_ci	addChild(new FboTests								(m_context));
518e5c31af7Sopenharmony_ci	addChild(new ProgramInterfaceQueryTests				(m_context, true));
519e5c31af7Sopenharmony_ci	addChild(new LayoutBindingTests						(m_context));
520e5c31af7Sopenharmony_ci	addChild(new PrimitiveBoundingBoxTests				(m_context));
521e5c31af7Sopenharmony_ci	addChild(createCopyImageTests						(m_context, true));
522e5c31af7Sopenharmony_ci	addChild(new SRGBTextureDecodeTests					(m_context));
523e5c31af7Sopenharmony_ci	addChild(new DrawElementsBaseVertexTests			(m_context));
524e5c31af7Sopenharmony_ci}
525e5c31af7Sopenharmony_ci
526e5c31af7Sopenharmony_ci} // Functional
527e5c31af7Sopenharmony_ci} // gles31
528e5c31af7Sopenharmony_ci} // deqp
529