1 /*-------------------------------------------------------------------------
2 * drawElements Quality Program OpenGL ES 3.0 Module
3 * -------------------------------------------------
4 *
5 * Copyright 2014 The Android Open Source Project
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 Sampler object tests.
22 *//*--------------------------------------------------------------------*/
23 #include "es3fSamplerObjectTests.hpp"
24
25 #include "glsSamplerObjectTest.hpp"
26
27 #include "tcuTexture.hpp"
28 #include "tcuSurface.hpp"
29 #include "tcuTextureUtil.hpp"
30 #include "tcuImageCompare.hpp"
31 #include "tcuTestLog.hpp"
32 #include "tcuRGBA.hpp"
33 #include "tcuRenderTarget.hpp"
34
35 #include "gluShaderProgram.hpp"
36 #include "gluPixelTransfer.hpp"
37 #include "gluRenderContext.hpp"
38
39 #include "deRandom.hpp"
40 #include "deString.h"
41
42 #include "glwEnums.hpp"
43
44 namespace deqp
45 {
46 namespace gles3
47 {
48 namespace Functional
49 {
50
SamplerObjectTests(Context & context)51 SamplerObjectTests::SamplerObjectTests(Context &context) : TestCaseGroup(context, "samplers", "Texture sampler tests")
52 {
53 }
54
~SamplerObjectTests(void)55 SamplerObjectTests::~SamplerObjectTests(void)
56 {
57 }
58
init(void)59 void SamplerObjectTests::init(void)
60 {
61 gls::TextureSamplerTest::TestSpec simpleTestCases[] = {
62 {"diff_wrap_t",
63 "Different GL_TEXTURE_WRAP_T",
64 GL_TEXTURE_2D,
65 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
66 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
67 {"diff_wrap_s",
68 "Different GL_TEXTURE_WRAP_S",
69 GL_TEXTURE_2D,
70 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
71 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
72 {"diff_wrap_r",
73 "Different GL_TEXTURE_WRAP_R",
74 GL_TEXTURE_2D,
75 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
76 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
77 {"diff_min_filter",
78 "Different GL_TEXTURE_MIN_FILTER",
79 GL_TEXTURE_2D,
80 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
81 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
82 {"diff_mag_filter",
83 "Different GL_TEXTURE_MAG_FILTER",
84 GL_TEXTURE_2D,
85 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
86 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
87 {"diff_max_lod",
88 "Different GL_TEXTURE_MAX_LOD",
89 GL_TEXTURE_2D,
90 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
91 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f}},
92 {"diff_min_lod",
93 "Different GL_TEXTURE_MIN_LOD",
94 GL_TEXTURE_2D,
95 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
96 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f}}};
97
98 TestCaseGroup *simpleTexture2D = new TestCaseGroup(m_context, "single_tex_2d", "Simple 2D texture with sampler");
99
100 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(simpleTestCases); testNdx++)
101 simpleTexture2D->addChild(
102 new gls::TextureSamplerTest(m_testCtx, m_context.getRenderContext(), simpleTestCases[testNdx]));
103
104 addChild(simpleTexture2D);
105
106 gls::MultiTextureSamplerTest::TestSpec multiTestCases[] = {
107 {"diff_wrap_t",
108 "Different GL_TEXTURE_WRAP_T",
109 GL_TEXTURE_2D,
110 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
111 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
112 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
113 {"diff_wrap_s",
114 "Different GL_TEXTURE_WRAP_S",
115 GL_TEXTURE_2D,
116 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
117 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
118 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
119 {"diff_wrap_r",
120 "Different GL_TEXTURE_WRAP_R",
121 GL_TEXTURE_2D,
122 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
123 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
124 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
125 {"diff_min_filter",
126 "Different GL_TEXTURE_MIN_FILTER",
127 GL_TEXTURE_2D,
128 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
129 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
130 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
131 {"diff_mag_filter",
132 "Different GL_TEXTURE_MAG_FILTER",
133 GL_TEXTURE_2D,
134 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
135 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
136 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
137 {"diff_max_lod",
138 "Different GL_TEXTURE_MAX_LOD",
139 GL_TEXTURE_2D,
140 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
141 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
142 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f}},
143 {"diff_min_lod",
144 "Different GL_TEXTURE_MIN_LOD",
145 GL_TEXTURE_2D,
146 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
147 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
148 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f}}};
149
150 TestCaseGroup *multiTexture2D =
151 new TestCaseGroup(m_context, "multi_tex_2d", "Multiple texture units 2D texture with sampler");
152
153 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(multiTestCases); testNdx++)
154 multiTexture2D->addChild(
155 new gls::MultiTextureSamplerTest(m_testCtx, m_context.getRenderContext(), multiTestCases[testNdx]));
156
157 addChild(multiTexture2D);
158
159 gls::TextureSamplerTest::TestSpec simpleTestCases3D[] = {
160 {"diff_wrap_t",
161 "Different GL_TEXTURE_WRAP_T",
162 GL_TEXTURE_3D,
163 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
164 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
165 {"diff_wrap_s",
166 "Different GL_TEXTURE_WRAP_S",
167 GL_TEXTURE_3D,
168 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
169 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
170 {"diff_wrap_r",
171 "Different GL_TEXTURE_WRAP_R",
172 GL_TEXTURE_3D,
173 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
174 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
175 {"diff_min_filter",
176 "Different GL_TEXTURE_MIN_FILTER",
177 GL_TEXTURE_3D,
178 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
179 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
180 {"diff_mag_filter",
181 "Different GL_TEXTURE_MAG_FILTER",
182 GL_TEXTURE_3D,
183 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
184 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
185 {"diff_max_lod",
186 "Different GL_TEXTURE_MAX_LOD",
187 GL_TEXTURE_3D,
188 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
189 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f}},
190 {"diff_min_lod",
191 "Different GL_TEXTURE_MIN_LOD",
192 GL_TEXTURE_3D,
193 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
194 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f}}};
195
196 TestCaseGroup *simpleTexture3D = new TestCaseGroup(m_context, "single_tex_3d", "Simple 3D texture with sampler");
197
198 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(simpleTestCases3D); testNdx++)
199 simpleTexture3D->addChild(
200 new gls::TextureSamplerTest(m_testCtx, m_context.getRenderContext(), simpleTestCases3D[testNdx]));
201
202 addChild(simpleTexture3D);
203
204 gls::MultiTextureSamplerTest::TestSpec multiTestCases3D[] = {
205 {"diff_wrap_t",
206 "Different GL_TEXTURE_WRAP_T",
207 GL_TEXTURE_3D,
208 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
209 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
210 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
211 {"diff_wrap_s",
212 "Different GL_TEXTURE_WRAP_S",
213 GL_TEXTURE_3D,
214 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
215 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
216 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
217 {"diff_wrap_r",
218 "Different GL_TEXTURE_WRAP_R",
219 GL_TEXTURE_3D,
220 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
221 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
222 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
223 {"diff_min_filter",
224 "Different GL_TEXTURE_MIN_FILTER",
225 GL_TEXTURE_3D,
226 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
227 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
228 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
229 {"diff_mag_filter",
230 "Different GL_TEXTURE_MAG_FILTER",
231 GL_TEXTURE_3D,
232 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
233 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
234 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
235 {"diff_max_lod",
236 "Different GL_TEXTURE_MAX_LOD",
237 GL_TEXTURE_3D,
238 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
239 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
240 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f}},
241 {"diff_min_lod",
242 "Different GL_TEXTURE_MIN_LOD",
243 GL_TEXTURE_3D,
244 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
245 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
246 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f}}};
247
248 TestCaseGroup *multiTexture3D =
249 new TestCaseGroup(m_context, "multi_tex_3d", "Multiple texture units 3D texture with sampler");
250
251 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(multiTestCases3D); testNdx++)
252 multiTexture3D->addChild(
253 new gls::MultiTextureSamplerTest(m_testCtx, m_context.getRenderContext(), multiTestCases3D[testNdx]));
254
255 addChild(multiTexture3D);
256
257 gls::TextureSamplerTest::TestSpec simpleTestCasesCube[] = {
258 {"diff_wrap_t",
259 "Different GL_TEXTURE_WRAP_T",
260 GL_TEXTURE_CUBE_MAP,
261 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
262 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
263 {"diff_wrap_s",
264 "Different GL_TEXTURE_WRAP_S",
265 GL_TEXTURE_CUBE_MAP,
266 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
267 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
268 {"diff_wrap_r",
269 "Different GL_TEXTURE_WRAP_R",
270 GL_TEXTURE_CUBE_MAP,
271 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
272 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
273 {"diff_min_filter",
274 "Different GL_TEXTURE_MIN_FILTER",
275 GL_TEXTURE_CUBE_MAP,
276 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
277 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
278 {"diff_mag_filter",
279 "Different GL_TEXTURE_MAG_FILTER",
280 GL_TEXTURE_CUBE_MAP,
281 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
282 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
283 {"diff_max_lod",
284 "Different GL_TEXTURE_MAX_LOD",
285 GL_TEXTURE_CUBE_MAP,
286 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
287 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f}},
288 {"diff_min_lod",
289 "Different GL_TEXTURE_MIN_LOD",
290 GL_TEXTURE_CUBE_MAP,
291 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
292 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f}}};
293
294 TestCaseGroup *simpleTextureCube =
295 new TestCaseGroup(m_context, "single_cubemap", "Simple cubemap texture with sampler");
296
297 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(simpleTestCasesCube); testNdx++)
298 simpleTextureCube->addChild(
299 new gls::TextureSamplerTest(m_testCtx, m_context.getRenderContext(), simpleTestCasesCube[testNdx]));
300
301 addChild(simpleTextureCube);
302
303 gls::MultiTextureSamplerTest::TestSpec multiTestCasesCube[] = {
304 {"diff_wrap_t",
305 "Different GL_TEXTURE_WRAP_T",
306 GL_TEXTURE_CUBE_MAP,
307 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
308 {GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
309 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
310 {"diff_wrap_s",
311 "Different GL_TEXTURE_WRAP_S",
312 GL_TEXTURE_CUBE_MAP,
313 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
314 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
315 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
316 {"diff_wrap_r",
317 "Different GL_TEXTURE_WRAP_R",
318 GL_TEXTURE_CUBE_MAP,
319 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
320 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f},
321 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
322 {"diff_min_filter",
323 "Different GL_TEXTURE_MIN_FILTER",
324 GL_TEXTURE_CUBE_MAP,
325 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
326 {GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
327 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
328 {"diff_mag_filter",
329 "Different GL_TEXTURE_MAG_FILTER",
330 GL_TEXTURE_CUBE_MAP,
331 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
332 {GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
333 {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f}},
334 {"diff_max_lod",
335 "Different GL_TEXTURE_MAX_LOD",
336 GL_TEXTURE_CUBE_MAP,
337 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
338 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f},
339 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f}},
340 {"diff_min_lod",
341 "Different GL_TEXTURE_MIN_LOD",
342 GL_TEXTURE_CUBE_MAP,
343 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
344 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f},
345 {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f}}};
346
347 TestCaseGroup *multiTextureCube =
348 new TestCaseGroup(m_context, "multi_cubemap", "Multiple texture units cubemap textures with sampler");
349
350 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(multiTestCasesCube); testNdx++)
351 multiTextureCube->addChild(
352 new gls::MultiTextureSamplerTest(m_testCtx, m_context.getRenderContext(), multiTestCasesCube[testNdx]));
353
354 addChild(multiTextureCube);
355 }
356
357 } // namespace Functional
358 } // namespace gles3
359 } // namespace deqp
360