• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*-------------------------------------------------------------------------
2  * OpenGL Conformance Test Suite
3  * -----------------------------
4  *
5  * Copyright (c) 2014-2016 The Khronos Group Inc.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */ /*!
20  * \file
21  * \brief
22  */ /*-------------------------------------------------------------------*/
23 
24 /*!
25  * \file esextcTextureBorderClampTests.cpp
26  * \brief Test group for texture border clamp tests
27  */ /*-------------------------------------------------------------------*/
28 
29 #include "esextcTextureBorderClampTests.hpp"
30 #include "esextcTextureBorderClampGetTexParameterIErrors.hpp"
31 #include "esextcTextureBorderClampParameterBorderColorError.hpp"
32 #include "esextcTextureBorderClampParameterTextureBorderColor.hpp"
33 #include "esextcTextureBorderClampSamplerParameterIError.hpp"
34 #include "esextcTextureBorderClampSamplerParameterIWithWrongPname.hpp"
35 #include "esextcTextureBorderClampSamplingTexture.cpp"
36 #include "esextcTextureBorderClampSamplingTextureGroup.hpp"
37 #include "esextcTextureBorderClampTexParameterIErrors.hpp"
38 #include "glwEnums.hpp"
39 
40 namespace glcts
41 {
42 
43 /** Constructor
44  *
45  * @param context       Test context
46  * @param glslVersion   GLSL version
47  **/
TextureBorderClampTests(glcts::Context & context,const ExtParameters & extParams)48 TextureBorderClampTests::TextureBorderClampTests(glcts::Context& context, const ExtParameters& extParams)
49 	: TestCaseGroupBase(context, extParams, "texture_border_clamp", "Texture Border Clamp Tests")
50 {
51 	/* No implementation needed */
52 }
53 
54 /** Initializes test cases for texture border clamp tests
55  **/
init(void)56 void TextureBorderClampTests::init(void)
57 {
58 	/* Initialize base class */
59 	TestCaseGroupBase::init();
60 
61 	/* Texture Border Clamp Border Color Errors (Test 1) */
62 	addChild(
63 		new TextureBorderClampParameterBorderColorErrorTest(m_context, m_extParams, "border_color_errors", "Test 1"));
64 
65 	/* Texture Border Clamp glTexParameterIivEXT(), glTexParameterIuivEXT() Errors (Test 2) */
66 	addChild(new TextureBorderClampTexParameterIErrorsTest(m_context, m_extParams, "texparameteri_errors", "Test 2"));
67 
68 	/* Texture Border Clamp glGetTexParameterIivEXT(), glGetTexParameterIuivEXT() Errors (Test 3)*/
69 	addChild(
70 		new TextureBorderClampGetTexParameterIErrorsTest(m_context, m_extParams, "gettexparameteri_errors", "Test 3"));
71 
72 	/* Texture Border Clamp glGetSamplerParameterI* and glSamplerParameterI* errors for non generate sampler (Test 4)*/
73 	addChild(new TextureBorderClampSamplerParameterIErrorTest(m_context, m_extParams,
74 															  "samplerparameteri_non_gen_sampler_error", "Test 4"));
75 
76 	/* Texture Border Clamp glGetSamplerParameterI* and glSamplerParameterI* errors for non generate sampler (Test 5)*/
77 	addChild(new TextureBorderClampSamplerParameterIWithWrongPnameTest(m_context, m_extParams,
78 																	   "samplerparameteri_with_wrong_pname", "Test 5"));
79 
80 	/* Texture Border Clamp glGetSamplerParameterI* and glSamplerParameterI* errors for non GL_TEXTURE_BORDER_COLOR_EXT (Test 6)*/
81 	addChild(new TextureBorderClampParameterTextureBorderColor(m_context, m_extParams, "samplerparameteri_border_color",
82 															   "Test 6"));
83 
84 	/* Texture Border Clamp Sampling Texture (Test 7) */
85 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DRGBA32F(
86 		4, 4, GL_TEXTURE_2D, GL_RGBA32F, GL_RGBA8, GL_NEAREST, GL_RGBA, GL_RGBA, 256, 256, 1, 0.0f, 1.0f, 0, 255,
87 		GL_FLOAT, GL_UNSIGNED_BYTE);
88 
89 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
90 		m_context, m_extParams, "Texture2DRGBA32F", "Test 7", configurationTexture2DRGBA32F));
91 
92 	/* GL_R32I */
93 	TestConfiguration<glw::GLint, glw::GLint> configurationTexture2DR32I(1, 4, GL_TEXTURE_2D, GL_R32I, GL_R32I,
94 																		 GL_NEAREST, GL_RED_INTEGER, GL_RGBA_INTEGER,
95 																		 256, 256, 1, 0, 255, 0, 255, GL_INT, GL_INT);
96 
97 	addChild(new TextureBorderClampSamplingTexture<glw::GLint, glw::GLint>(m_context, m_extParams, "Texture2DR32I",
98 																		   "Test 7", configurationTexture2DR32I));
99 
100 	/* GL_R32UI */
101 	TestConfiguration<glw::GLuint, glw::GLuint> configurationTexture2DR32UI(
102 		1, 4, GL_TEXTURE_2D, GL_R32UI, GL_R32UI, GL_NEAREST, GL_RED_INTEGER, GL_RGBA_INTEGER, 256, 256, 1, 0, 255, 0,
103 		255, GL_UNSIGNED_INT, GL_UNSIGNED_INT);
104 
105 	addChild(new TextureBorderClampSamplingTexture<glw::GLuint, glw::GLuint>(m_context, m_extParams, "Texture2DR32UI",
106 																			 "Test 7", configurationTexture2DR32UI));
107 
108 	/* GL_RGBA8 */
109 	TestConfiguration<glw::GLubyte, glw::GLubyte> configurationTexture2DRGBA8(
110 		4, 4, GL_TEXTURE_2D, GL_RGBA8, GL_RGBA8, GL_NEAREST, GL_RGBA, GL_RGBA, 256, 256, 1, 0, 255, 0, 255,
111 		GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE);
112 
113 	addChild(new TextureBorderClampSamplingTexture<glw::GLubyte, glw::GLubyte>(m_context, m_extParams, "Texture2DRGBA8",
114 																			   "Test 7", configurationTexture2DRGBA8));
115 
116 	/* GL_DEPTH_COMPONENT32F */
117 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DDC32F(
118 		1, 1, GL_TEXTURE_2D, GL_DEPTH_COMPONENT32F, GL_R8, GL_NEAREST, GL_DEPTH_COMPONENT, GL_RED, 256, 256, 1, 0, 255,
119 		0, 255, GL_FLOAT, GL_UNSIGNED_BYTE);
120 
121 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(m_context, m_extParams, "Texture2DDC32F",
122 																			   "Test 7", configurationTexture2DDC32F));
123 
124 	/* GL_DEPTH_COMPONENT16 */
125 	TestConfiguration<glw::GLushort, glw::GLubyte> configurationTexture2DDC16(
126 		1, 1, GL_TEXTURE_2D, GL_DEPTH_COMPONENT16, GL_R8, GL_NEAREST, GL_DEPTH_COMPONENT, GL_RED, 256, 256, 1, 0, 255,
127 		0, 255, GL_UNSIGNED_SHORT, GL_UNSIGNED_BYTE);
128 
129 	addChild(new TextureBorderClampSamplingTexture<glw::GLushort, glw::GLubyte>(m_context, m_extParams, "Texture2DDC16",
130 																				"Test 7", configurationTexture2DDC16));
131 
132 	/* GL_COMPRESSED_RGBA8_ETC2_EAC */
133 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DCompressed(
134 		4, 4, GL_TEXTURE_2D, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_RGBA8, GL_NEAREST, GL_RGBA, GL_RGBA, 64, 64, 1, 0, 1, 0,
135 		255, GL_FLOAT, GL_UNSIGNED_BYTE);
136 
137 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
138 		m_context, m_extParams, "Texture2DCompressed", "Test 7", configurationTexture2DCompressed));
139 
140 	/* Target GL_TEXTURE_2D_ARRAY */
141 
142 	/* GL_RGBA32F */
143 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DArrayRGBA32F(
144 		4, 4, GL_TEXTURE_2D_ARRAY, GL_RGBA32F, GL_RGBA8, GL_NEAREST, GL_RGBA, GL_RGBA, 256, 256, 6, 0.0f, 1.0f, 0, 255,
145 		GL_FLOAT, GL_UNSIGNED_BYTE);
146 
147 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
148 		m_context, m_extParams, "Texture2DArrayRGBA32F", "Test 7", configurationTexture2DArrayRGBA32F));
149 
150 	/* GL_R32I */
151 	TestConfiguration<glw::GLint, glw::GLint> configurationTexture2DArrayR32I(
152 		1, 4, GL_TEXTURE_2D_ARRAY, GL_R32I, GL_R32I, GL_NEAREST, GL_RED_INTEGER, GL_RGBA_INTEGER, 256, 256, 6, 0, 255,
153 		0, 255, GL_INT, GL_INT);
154 
155 	addChild(new TextureBorderClampSamplingTexture<glw::GLint, glw::GLint>(m_context, m_extParams, "Texture2DArrayR32I",
156 																		   "Test 7", configurationTexture2DArrayR32I));
157 
158 	/* GL_R32UI */
159 	TestConfiguration<glw::GLuint, glw::GLuint> configurationTexture2DArrayR32UI(
160 		1, 4, GL_TEXTURE_2D_ARRAY, GL_R32UI, GL_R32UI, GL_NEAREST, GL_RED_INTEGER, GL_RGBA_INTEGER, 256, 256, 6, 0, 255,
161 		0, 255, GL_UNSIGNED_INT, GL_UNSIGNED_INT);
162 
163 	addChild(new TextureBorderClampSamplingTexture<glw::GLuint, glw::GLuint>(
164 		m_context, m_extParams, "Texture2DArrayR32UI", "Test 7", configurationTexture2DArrayR32UI));
165 
166 	/* GL_RGBA8 */
167 	TestConfiguration<glw::GLubyte, glw::GLubyte> configurationTexture2DArrayRGBA8(
168 		4, 4, GL_TEXTURE_2D_ARRAY, GL_RGBA8, GL_RGBA8, GL_NEAREST, GL_RGBA, GL_RGBA, 256, 256, 6, 0, 255, 0, 255,
169 		GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE);
170 
171 	addChild(new TextureBorderClampSamplingTexture<glw::GLubyte, glw::GLubyte>(
172 		m_context, m_extParams, "Texture2DArrayRGBA8", "Test 7", configurationTexture2DArrayRGBA8));
173 
174 	/* GL_COMPRESSED_RGBA8_ETC2_EAC */
175 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DArrayCompressed(
176 		4, 4, GL_TEXTURE_2D_ARRAY, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_RGBA8, GL_NEAREST, GL_RGBA, GL_RGBA, 64, 64, 6, 0,
177 		1, 0, 255, GL_FLOAT, GL_UNSIGNED_BYTE);
178 
179 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
180 		m_context, m_extParams, "Texture2DArrayCompressed", "Test 7", configurationTexture2DArrayCompressed));
181 
182 	/* Target GL_TEXTURE_3D */
183 
184 	/* GL_RGBA32F */
185 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture3DRGBA32F(
186 		4, 4, GL_TEXTURE_3D, GL_RGBA32F, GL_RGBA8, GL_NEAREST, GL_RGBA, GL_RGBA, 256, 256, 6, 0.0f, 1.0f, 0, 255,
187 		GL_FLOAT, GL_UNSIGNED_BYTE);
188 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
189 		m_context, m_extParams, "Texture3DRGBA32F", "Test 7", configurationTexture3DRGBA32F));
190 
191 	/* GL_R32I */
192 	TestConfiguration<glw::GLint, glw::GLint> configurationTexture3DR32I(1, 4, GL_TEXTURE_3D, GL_R32I, GL_R32I,
193 																		 GL_NEAREST, GL_RED_INTEGER, GL_RGBA_INTEGER,
194 																		 256, 256, 6, 0, 255, 0, 255, GL_INT, GL_INT);
195 
196 	addChild(new TextureBorderClampSamplingTexture<glw::GLint, glw::GLint>(m_context, m_extParams, "Texture3DR32I",
197 																		   "Test 7", configurationTexture3DR32I));
198 
199 	/* GL_R32UI */
200 	TestConfiguration<glw::GLuint, glw::GLuint> configurationTexture3DR32UI(
201 		1, 4, GL_TEXTURE_3D, GL_R32UI, GL_R32UI, GL_NEAREST, GL_RED_INTEGER, GL_RGBA_INTEGER, 256, 256, 6, 0, 255, 0,
202 		255, GL_UNSIGNED_INT, GL_UNSIGNED_INT);
203 
204 	addChild(new TextureBorderClampSamplingTexture<glw::GLuint, glw::GLuint>(m_context, m_extParams, "Texture3DR32UI",
205 																			 "Test 7", configurationTexture3DR32UI));
206 
207 	/* GL_RGBA8 */
208 	TestConfiguration<glw::GLubyte, glw::GLubyte> configurationTexture3DRGBA8(
209 		4, 4, GL_TEXTURE_3D, GL_RGBA8, GL_RGBA8, GL_NEAREST, GL_RGBA, GL_RGBA, 256, 256, 6, 0, 255, 0, 255,
210 		GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE);
211 
212 	addChild(new TextureBorderClampSamplingTexture<glw::GLubyte, glw::GLubyte>(m_context, m_extParams, "Texture3DRGBA8",
213 																			   "Test 7", configurationTexture3DRGBA8));
214 
215 	/* Filtering GL_LINEAR */
216 
217 	/* Target GL_TEXTURE_2D */
218 
219 	/* GL_RGBA32F */
220 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DRGBA32FLinear(
221 		4, 4, GL_TEXTURE_2D, GL_RGBA32F, GL_RGBA8, GL_LINEAR, GL_RGBA, GL_RGBA, 256, 256, 1, 0.0f, 1.0f, 0, 255,
222 		GL_FLOAT, GL_UNSIGNED_BYTE);
223 
224 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
225 		m_context, m_extParams, "Texture2DRGBA32FLinear", "Test 7", configurationTexture2DRGBA32FLinear));
226 
227 	/* GL_RGBA8 */
228 	TestConfiguration<glw::GLubyte, glw::GLubyte> configurationTexture2DRGBA8Linear(
229 		4, 4, GL_TEXTURE_2D, GL_RGBA8, GL_RGBA8, GL_LINEAR, GL_RGBA, GL_RGBA, 256, 256, 1, 0, 255, 0, 255,
230 		GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE);
231 
232 	addChild(new TextureBorderClampSamplingTexture<glw::GLubyte, glw::GLubyte>(
233 		m_context, m_extParams, "Texture2DRGBA8Linear", "Test 7", configurationTexture2DRGBA8Linear));
234 
235 	/* Linear filtering of non-shadow-compare depth textures is texture incomplete on GLES. */
236 	if (!glu::isContextTypeES(m_context.getRenderContext().getType()))
237 	{
238 		/* GL_DEPTH_COMPONENT32F */
239 		TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DDC32FLinear(
240 			1, 1, GL_TEXTURE_2D, GL_DEPTH_COMPONENT32F, GL_R8, GL_LINEAR, GL_DEPTH_COMPONENT, GL_RED, 256, 256, 1, 0,
241 			255, 0, 255, GL_FLOAT, GL_UNSIGNED_BYTE);
242 
243 		addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
244 			m_context, m_extParams, "Texture2DDC32FLinear", "Test 7", configurationTexture2DDC32FLinear));
245 
246 		/* GL_DEPTH_COMPONENT16 */
247 		TestConfiguration<glw::GLushort, glw::GLubyte> configurationTexture2DDC16Linear(
248 			1, 1, GL_TEXTURE_2D, GL_DEPTH_COMPONENT16, GL_R8, GL_LINEAR, GL_DEPTH_COMPONENT, GL_RED, 256, 256, 1, 0,
249 			255, 0, 255, GL_UNSIGNED_SHORT, GL_UNSIGNED_BYTE);
250 
251 		addChild(new TextureBorderClampSamplingTexture<glw::GLushort, glw::GLubyte>(
252 			m_context, m_extParams, "Texture2DDC16Linear", "Test 7", configurationTexture2DDC16Linear));
253 	}
254 
255 	/* GL_COMPRESSED_RGBA8_ETC2_EAC */
256 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DCompressedLinear(
257 		4, 4, GL_TEXTURE_2D, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_RGBA8, GL_LINEAR, GL_RGBA, GL_RGBA, 64, 64, 1, 0, 1, 0,
258 		255, GL_FLOAT, GL_UNSIGNED_BYTE);
259 
260 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
261 		m_context, m_extParams, "Texture2DCompressedLinear", "Test 7", configurationTexture2DCompressedLinear));
262 
263 	/* Target GL_TEXTURE_2D_ARRAY */
264 
265 	/* GL_RGBA32F */
266 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DArrayRGBA32FLinear(
267 		4, 4, GL_TEXTURE_2D_ARRAY, GL_RGBA32F, GL_RGBA8, GL_LINEAR, GL_RGBA, GL_RGBA, 256, 256, 6, 0.0f, 1.0f, 0, 255,
268 		GL_FLOAT, GL_UNSIGNED_BYTE);
269 
270 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
271 		m_context, m_extParams, "Texture2DArrayRGBA32FLinear", "Test 7", configurationTexture2DArrayRGBA32FLinear));
272 
273 	/* GL_RGBA8 */
274 	TestConfiguration<glw::GLubyte, glw::GLubyte> configurationTexture2DArrayRGBA8Linear(
275 		4, 4, GL_TEXTURE_2D_ARRAY, GL_RGBA8, GL_RGBA8, GL_LINEAR, GL_RGBA, GL_RGBA, 256, 256, 6, 0, 255, 0, 255,
276 		GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE);
277 
278 	addChild(new TextureBorderClampSamplingTexture<glw::GLubyte, glw::GLubyte>(
279 		m_context, m_extParams, "Texture2DArrayRGBA8Linear", "Test 7", configurationTexture2DArrayRGBA8Linear));
280 
281 	/* GL_COMPRESSED_RGBA8_ETC2_EAC */
282 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture2DArrayCompressedLinear(
283 		4, 4, GL_TEXTURE_2D_ARRAY, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_RGBA8, GL_LINEAR, GL_RGBA, GL_RGBA, 64, 64, 6, 0, 1,
284 		0, 255, GL_FLOAT, GL_UNSIGNED_BYTE);
285 
286 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
287 		m_context, m_extParams, "Texture2DArrayCompressedLinear", "Test 7",
288 		configurationTexture2DArrayCompressedLinear));
289 
290 	/* Target GL_TEXTURE_3D*/
291 
292 	/* GL_RGBA32F */
293 	TestConfiguration<glw::GLfloat, glw::GLubyte> configurationTexture3DRGBA32FLinear(
294 		4, 4, GL_TEXTURE_3D, GL_RGBA32F, GL_RGBA8, GL_LINEAR, GL_RGBA, GL_RGBA, 256, 256, 6, 0.0f, 1.0f, 0, 255,
295 		GL_FLOAT, GL_UNSIGNED_BYTE);
296 
297 	addChild(new TextureBorderClampSamplingTexture<glw::GLfloat, glw::GLubyte>(
298 		m_context, m_extParams, "Texture3DRGBA32FLinear", "Test 7", configurationTexture3DRGBA32FLinear));
299 
300 	/* GL_RGBA8 */
301 	TestConfiguration<glw::GLubyte, glw::GLubyte> configurationTexture3DRGBA8Linear(
302 		4, 4, GL_TEXTURE_3D, GL_RGBA8, GL_RGBA8, GL_LINEAR, GL_RGBA, GL_RGBA, 256, 256, 6, 0, 255, 0, 255,
303 		GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE);
304 
305 	addChild(new TextureBorderClampSamplingTexture<glw::GLubyte, glw::GLubyte>(
306 		m_context, m_extParams, "Texture3DRGBA8Linear", "Test 7", configurationTexture3DRGBA8Linear));
307 }
308 
309 } // namespace glcts
310