1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL ES 2.0 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 Negative Texture API tests.
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "es2fNegativeTextureApiTests.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "es2fApiCase.hpp"
26*35238bceSAndroid Build Coastguard Worker #include "tcuFormatUtil.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "tcuCompressedTexture.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "gluTextureUtil.hpp"
29*35238bceSAndroid Build Coastguard Worker #include "gluContextInfo.hpp"
30*35238bceSAndroid Build Coastguard Worker
31*35238bceSAndroid Build Coastguard Worker #include <vector>
32*35238bceSAndroid Build Coastguard Worker #include <algorithm>
33*35238bceSAndroid Build Coastguard Worker
34*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp"
35*35238bceSAndroid Build Coastguard Worker #include "glwDefs.hpp"
36*35238bceSAndroid Build Coastguard Worker
37*35238bceSAndroid Build Coastguard Worker using namespace glw; // GL types
38*35238bceSAndroid Build Coastguard Worker
39*35238bceSAndroid Build Coastguard Worker namespace deqp
40*35238bceSAndroid Build Coastguard Worker {
41*35238bceSAndroid Build Coastguard Worker namespace gles2
42*35238bceSAndroid Build Coastguard Worker {
43*35238bceSAndroid Build Coastguard Worker namespace Functional
44*35238bceSAndroid Build Coastguard Worker {
45*35238bceSAndroid Build Coastguard Worker
46*35238bceSAndroid Build Coastguard Worker using std::vector;
47*35238bceSAndroid Build Coastguard Worker using tcu::TestLog;
48*35238bceSAndroid Build Coastguard Worker
cubeFaceToGLFace(tcu::CubeFace face)49*35238bceSAndroid Build Coastguard Worker static uint32_t cubeFaceToGLFace(tcu::CubeFace face)
50*35238bceSAndroid Build Coastguard Worker {
51*35238bceSAndroid Build Coastguard Worker switch (face)
52*35238bceSAndroid Build Coastguard Worker {
53*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_NEGATIVE_X:
54*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_NEGATIVE_X;
55*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_POSITIVE_X:
56*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_POSITIVE_X;
57*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_NEGATIVE_Y:
58*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y;
59*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_POSITIVE_Y:
60*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_POSITIVE_Y;
61*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_NEGATIVE_Z:
62*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z;
63*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_POSITIVE_Z:
64*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_POSITIVE_Z;
65*35238bceSAndroid Build Coastguard Worker default:
66*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
67*35238bceSAndroid Build Coastguard Worker return GL_NONE;
68*35238bceSAndroid Build Coastguard Worker }
69*35238bceSAndroid Build Coastguard Worker }
70*35238bceSAndroid Build Coastguard Worker
71*35238bceSAndroid Build Coastguard Worker #define FOR_CUBE_FACES(FACE_GL_VAR, BODY) \
72*35238bceSAndroid Build Coastguard Worker do \
73*35238bceSAndroid Build Coastguard Worker { \
74*35238bceSAndroid Build Coastguard Worker for (int faceIterTcu = 0; faceIterTcu < tcu::CUBEFACE_LAST; faceIterTcu++) \
75*35238bceSAndroid Build Coastguard Worker { \
76*35238bceSAndroid Build Coastguard Worker const GLenum FACE_GL_VAR = cubeFaceToGLFace((tcu::CubeFace)faceIterTcu); \
77*35238bceSAndroid Build Coastguard Worker BODY \
78*35238bceSAndroid Build Coastguard Worker } \
79*35238bceSAndroid Build Coastguard Worker } while (false)
80*35238bceSAndroid Build Coastguard Worker
getCompressedTexSubImage2DFormat(const vector<int32_t> & supported,vector<int32_t> & accepted)81*35238bceSAndroid Build Coastguard Worker static void getCompressedTexSubImage2DFormat(const vector<int32_t> &supported, vector<int32_t> &accepted)
82*35238bceSAndroid Build Coastguard Worker {
83*35238bceSAndroid Build Coastguard Worker // Find a supported compressed texture format that is accepted by compressedTexSubImage2D()
84*35238bceSAndroid Build Coastguard Worker
85*35238bceSAndroid Build Coastguard Worker static const GLuint compressedTexSubImage2DFormats[] = {
86*35238bceSAndroid Build Coastguard Worker 0x83F0, // GL_COMPRESSED_RGB_S3TC_DXT1_EXT
87*35238bceSAndroid Build Coastguard Worker 0x83F1, // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
88*35238bceSAndroid Build Coastguard Worker 0x8C00, // GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
89*35238bceSAndroid Build Coastguard Worker 0x8C01, // GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG
90*35238bceSAndroid Build Coastguard Worker 0x8C02, // GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
91*35238bceSAndroid Build Coastguard Worker 0x8C03 // GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
92*35238bceSAndroid Build Coastguard Worker };
93*35238bceSAndroid Build Coastguard Worker
94*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < DE_LENGTH_OF_ARRAY(compressedTexSubImage2DFormats); i++)
95*35238bceSAndroid Build Coastguard Worker {
96*35238bceSAndroid Build Coastguard Worker vector<int32_t>::const_iterator fmt =
97*35238bceSAndroid Build Coastguard Worker std::find(supported.begin(), supported.end(), compressedTexSubImage2DFormats[i]);
98*35238bceSAndroid Build Coastguard Worker if (fmt != supported.end())
99*35238bceSAndroid Build Coastguard Worker accepted.push_back(*fmt);
100*35238bceSAndroid Build Coastguard Worker }
101*35238bceSAndroid Build Coastguard Worker }
102*35238bceSAndroid Build Coastguard Worker
NegativeTextureApiTests(Context & context)103*35238bceSAndroid Build Coastguard Worker NegativeTextureApiTests::NegativeTextureApiTests(Context &context)
104*35238bceSAndroid Build Coastguard Worker : TestCaseGroup(context, "texture", "Negative Texture API Cases")
105*35238bceSAndroid Build Coastguard Worker {
106*35238bceSAndroid Build Coastguard Worker }
107*35238bceSAndroid Build Coastguard Worker
~NegativeTextureApiTests(void)108*35238bceSAndroid Build Coastguard Worker NegativeTextureApiTests::~NegativeTextureApiTests(void)
109*35238bceSAndroid Build Coastguard Worker {
110*35238bceSAndroid Build Coastguard Worker }
111*35238bceSAndroid Build Coastguard Worker
init(void)112*35238bceSAndroid Build Coastguard Worker void NegativeTextureApiTests::init(void)
113*35238bceSAndroid Build Coastguard Worker {
114*35238bceSAndroid Build Coastguard Worker // glActiveTexture
115*35238bceSAndroid Build Coastguard Worker
116*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(activetexture_invalid_texture, "Invalid glActiveTexture() usage", {
117*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if texture is not one of GL_TEXTUREi, where i "
118*35238bceSAndroid Build Coastguard Worker "ranges from 0 to (GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1).");
119*35238bceSAndroid Build Coastguard Worker glActiveTexture(-1);
120*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
121*35238bceSAndroid Build Coastguard Worker int numMaxTextureUnits = m_context.getContextInfo().getInt(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS);
122*35238bceSAndroid Build Coastguard Worker glActiveTexture(GL_TEXTURE0 + numMaxTextureUnits);
123*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
124*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
125*35238bceSAndroid Build Coastguard Worker });
126*35238bceSAndroid Build Coastguard Worker
127*35238bceSAndroid Build Coastguard Worker // glBindTexture
128*35238bceSAndroid Build Coastguard Worker
129*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(bindtexture_invalid_target, "Invalid glBindTexture() usage", {
130*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is not one of the allowable values.");
131*35238bceSAndroid Build Coastguard Worker glBindTexture(0, 1);
132*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
133*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
134*35238bceSAndroid Build Coastguard Worker });
135*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(bindtexture_type_mismatch, "Invalid glBindTexture() usage", {
136*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if texture was previously created with a "
137*35238bceSAndroid Build Coastguard Worker "target that doesn't match that of target.");
138*35238bceSAndroid Build Coastguard Worker GLuint texture;
139*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
140*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
141*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
142*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
143*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
144*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
145*35238bceSAndroid Build Coastguard Worker });
146*35238bceSAndroid Build Coastguard Worker
147*35238bceSAndroid Build Coastguard Worker // glCompressedTexImage2D
148*35238bceSAndroid Build Coastguard Worker
149*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage_2d_invalid_target, "Invalid glCompressedTexImage2D() usage", {
150*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
151*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
152*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
153*35238bceSAndroid Build Coastguard Worker {
154*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is invalid.");
155*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(0, 0, compressedFormats[0], 0, 0, 0, 0, 0);
156*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
157*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
158*35238bceSAndroid Build Coastguard Worker }
159*35238bceSAndroid Build Coastguard Worker });
160*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage_2d_invalid_format_tex2d, "Invalid glCompressedTexImage2D() usage", {
161*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if internalformat is not a supported format "
162*35238bceSAndroid Build Coastguard Worker "returned in GL_COMPRESSED_TEXTURE_FORMATS.");
163*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0);
164*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
165*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
166*35238bceSAndroid Build Coastguard Worker });
167*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage_2d_invalid_format_cube, "Invalid glCompressedTexImage2D() usage", {
168*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if internalformat is not a supported format "
169*35238bceSAndroid Build Coastguard Worker "returned in GL_COMPRESSED_TEXTURE_FORMATS.");
170*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 0, 0, 0, 0, 0, 0);
171*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
172*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, 0, 0, 0, 0, 0, 0);
173*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
174*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, 0, 0, 0, 0, 0, 0);
175*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
176*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 0, 0, 0, 0, 0, 0);
177*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
178*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, 0, 0, 0, 0, 0, 0);
179*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
180*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, 0, 0, 0, 0, 0, 0);
181*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
182*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
183*35238bceSAndroid Build Coastguard Worker });
184*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_level_tex2d, "Invalid glCompressedTexImage2D() usage", {
185*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
186*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
187*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
188*35238bceSAndroid Build Coastguard Worker {
189*35238bceSAndroid Build Coastguard Worker size_t firstNonPalettedFormatNdx = 0;
190*35238bceSAndroid Build Coastguard Worker // Negtive values are valid for palette formats
191*35238bceSAndroid Build Coastguard Worker if (m_context.getContextInfo().isExtensionSupported("GL_OES_compressed_paletted_texture"))
192*35238bceSAndroid Build Coastguard Worker {
193*35238bceSAndroid Build Coastguard Worker while (GL_PALETTE4_RGB8_OES <= compressedFormats[firstNonPalettedFormatNdx] &&
194*35238bceSAndroid Build Coastguard Worker GL_PALETTE8_RGB5_A1_OES >= compressedFormats[firstNonPalettedFormatNdx])
195*35238bceSAndroid Build Coastguard Worker {
196*35238bceSAndroid Build Coastguard Worker ++firstNonPalettedFormatNdx;
197*35238bceSAndroid Build Coastguard Worker }
198*35238bceSAndroid Build Coastguard Worker }
199*35238bceSAndroid Build Coastguard Worker if (firstNonPalettedFormatNdx < compressedFormats.size())
200*35238bceSAndroid Build Coastguard Worker {
201*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
202*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, -1, compressedFormats[firstNonPalettedFormatNdx], 0, 0, 0, 0, 0);
203*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
204*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
205*35238bceSAndroid Build Coastguard Worker }
206*35238bceSAndroid Build Coastguard Worker }
207*35238bceSAndroid Build Coastguard Worker });
208*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_level_cube, "Invalid glCompressedTexImage2D() usage", {
209*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
210*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
211*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
212*35238bceSAndroid Build Coastguard Worker {
213*35238bceSAndroid Build Coastguard Worker size_t firstNonPalettedFormatNdx = 0;
214*35238bceSAndroid Build Coastguard Worker // Negtive values are valid for palette formats
215*35238bceSAndroid Build Coastguard Worker if (m_context.getContextInfo().isExtensionSupported("GL_OES_compressed_paletted_texture"))
216*35238bceSAndroid Build Coastguard Worker {
217*35238bceSAndroid Build Coastguard Worker while (GL_PALETTE4_RGB8_OES <= compressedFormats[firstNonPalettedFormatNdx] &&
218*35238bceSAndroid Build Coastguard Worker GL_PALETTE8_RGB5_A1_OES >= compressedFormats[firstNonPalettedFormatNdx])
219*35238bceSAndroid Build Coastguard Worker {
220*35238bceSAndroid Build Coastguard Worker ++firstNonPalettedFormatNdx;
221*35238bceSAndroid Build Coastguard Worker }
222*35238bceSAndroid Build Coastguard Worker }
223*35238bceSAndroid Build Coastguard Worker if (firstNonPalettedFormatNdx < compressedFormats.size())
224*35238bceSAndroid Build Coastguard Worker {
225*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
226*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, compressedFormats[firstNonPalettedFormatNdx],
227*35238bceSAndroid Build Coastguard Worker 0, 0, 0, 0, 0);
228*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
229*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, compressedFormats[firstNonPalettedFormatNdx],
230*35238bceSAndroid Build Coastguard Worker 0, 0, 0, 0, 0);
231*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
232*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, compressedFormats[firstNonPalettedFormatNdx],
233*35238bceSAndroid Build Coastguard Worker 0, 0, 0, 0, 0);
234*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
235*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, compressedFormats[firstNonPalettedFormatNdx],
236*35238bceSAndroid Build Coastguard Worker 0, 0, 0, 0, 0);
237*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
238*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, compressedFormats[firstNonPalettedFormatNdx],
239*35238bceSAndroid Build Coastguard Worker 0, 0, 0, 0, 0);
240*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
241*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, compressedFormats[firstNonPalettedFormatNdx],
242*35238bceSAndroid Build Coastguard Worker 0, 0, 0, 0, 0);
243*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
244*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
245*35238bceSAndroid Build Coastguard Worker }
246*35238bceSAndroid Build Coastguard Worker }
247*35238bceSAndroid Build Coastguard Worker });
248*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_level_max_tex2d, "Invalid glCompressedTexImage2D() usage", {
249*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
250*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
251*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
252*35238bceSAndroid Build Coastguard Worker {
253*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
254*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
255*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE)) + 1;
256*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, log2MaxTextureSize, compressedFormats[0], 0, 0, 0, 0, 0);
257*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
258*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
259*35238bceSAndroid Build Coastguard Worker }
260*35238bceSAndroid Build Coastguard Worker });
261*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_level_max_cube_pos, "Invalid glCompressedTexImage2D() usage", {
262*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
263*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
264*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
265*35238bceSAndroid Build Coastguard Worker {
266*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
267*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
268*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize =
269*35238bceSAndroid Build Coastguard Worker deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
270*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxTextureSize, compressedFormats[0], 0, 0, 0, 0,
271*35238bceSAndroid Build Coastguard Worker 0);
272*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
273*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxTextureSize, compressedFormats[0], 0, 0, 0, 0,
274*35238bceSAndroid Build Coastguard Worker 0);
275*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
276*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxTextureSize, compressedFormats[0], 0, 0, 0, 0,
277*35238bceSAndroid Build Coastguard Worker 0);
278*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
279*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxTextureSize, compressedFormats[0], 0, 0, 0, 0,
280*35238bceSAndroid Build Coastguard Worker 0);
281*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
282*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxTextureSize, compressedFormats[0], 0, 0, 0, 0,
283*35238bceSAndroid Build Coastguard Worker 0);
284*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
285*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxTextureSize, compressedFormats[0], 0, 0, 0, 0,
286*35238bceSAndroid Build Coastguard Worker 0);
287*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
288*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
289*35238bceSAndroid Build Coastguard Worker }
290*35238bceSAndroid Build Coastguard Worker });
291*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_width_height_tex2d, "Invalid glCompressedTexImage2D() usage", {
292*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
293*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
294*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
295*35238bceSAndroid Build Coastguard Worker {
296*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
297*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], -1, 0, 0, 0, 0);
298*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
299*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], 0, -1, 0, 0, 0);
300*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
301*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], -1, -1, 0, 0, 0);
302*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
303*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
304*35238bceSAndroid Build Coastguard Worker }
305*35238bceSAndroid Build Coastguard Worker });
306*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_width_height_cube_pos_x, "Invalid glCompressedTexImage2D() usage", {
307*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
308*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
309*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
310*35238bceSAndroid Build Coastguard Worker {
311*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
312*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, compressedFormats[0], -1, 0, 0, 0, 0);
313*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
314*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, compressedFormats[0], 0, -1, 0, 0, 0);
315*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
316*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, compressedFormats[0], -1, -1, 0, 0, 0);
317*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
318*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
319*35238bceSAndroid Build Coastguard Worker }
320*35238bceSAndroid Build Coastguard Worker });
321*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_width_height_cube_pos_y, "Invalid glCompressedTexImage2D() usage", {
322*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
323*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
324*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
325*35238bceSAndroid Build Coastguard Worker {
326*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
327*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, compressedFormats[0], -1, 0, 0, 0, 0);
328*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
329*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, compressedFormats[0], 0, -1, 0, 0, 0);
330*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
331*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, compressedFormats[0], -1, -1, 0, 0, 0);
332*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
333*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
334*35238bceSAndroid Build Coastguard Worker }
335*35238bceSAndroid Build Coastguard Worker });
336*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_width_height_cube_pos_z, "Invalid glCompressedTexImage2D() usage", {
337*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
338*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
339*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
340*35238bceSAndroid Build Coastguard Worker {
341*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
342*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, compressedFormats[0], -1, 0, 0, 0, 0);
343*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
344*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, compressedFormats[0], 0, -1, 0, 0, 0);
345*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
346*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, compressedFormats[0], -1, -1, 0, 0, 0);
347*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
348*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
349*35238bceSAndroid Build Coastguard Worker }
350*35238bceSAndroid Build Coastguard Worker });
351*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_width_height_cube_neg_x, "Invalid glCompressedTexImage2D() usage", {
352*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
353*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
354*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
355*35238bceSAndroid Build Coastguard Worker {
356*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
357*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, compressedFormats[0], -1, 0, 0, 0, 0);
358*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
359*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, compressedFormats[0], 0, -1, 0, 0, 0);
360*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
361*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, compressedFormats[0], -1, -1, 0, 0, 0);
362*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
363*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
364*35238bceSAndroid Build Coastguard Worker }
365*35238bceSAndroid Build Coastguard Worker });
366*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_width_height_cube_neg_y, "Invalid glCompressedTexImage2D() usage", {
367*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
368*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
369*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
370*35238bceSAndroid Build Coastguard Worker {
371*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
372*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, compressedFormats[0], -1, 0, 0, 0, 0);
373*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
374*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, compressedFormats[0], 0, -1, 0, 0, 0);
375*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
376*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, compressedFormats[0], -1, -1, 0, 0, 0);
377*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
378*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
379*35238bceSAndroid Build Coastguard Worker }
380*35238bceSAndroid Build Coastguard Worker });
381*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_neg_width_height_cube_neg_z, "Invalid glCompressedTexImage2D() usage", {
382*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
383*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
384*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
385*35238bceSAndroid Build Coastguard Worker {
386*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
387*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, compressedFormats[0], -1, 0, 0, 0, 0);
388*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
389*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, compressedFormats[0], 0, -1, 0, 0, 0);
390*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
391*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, compressedFormats[0], -1, -1, 0, 0, 0);
392*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
393*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
394*35238bceSAndroid Build Coastguard Worker }
395*35238bceSAndroid Build Coastguard Worker });
396*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_width_height_max_tex2d, "Invalid glCompressedTexImage2D() usage", {
397*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
398*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
399*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
400*35238bceSAndroid Build Coastguard Worker {
401*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
402*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_TEXTURE_SIZE.");
403*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE) + 1;
404*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], maxTextureSize, 0, 0, 0, 0);
405*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
406*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], 0, maxTextureSize, 0, 0, 0);
407*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
408*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], maxTextureSize, maxTextureSize, 0, 0, 0);
409*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
410*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
411*35238bceSAndroid Build Coastguard Worker }
412*35238bceSAndroid Build Coastguard Worker });
413*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_width_height_max_cube_pos_x, "Invalid glCompressedTexImage2D() usage", {
414*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
415*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
416*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
417*35238bceSAndroid Build Coastguard Worker {
418*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
419*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
420*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
421*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, compressedFormats[0], maxTextureSize, 0, 0, 0, 0);
422*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
423*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, compressedFormats[0], 0, maxTextureSize, 0, 0, 0);
424*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
425*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, compressedFormats[0], maxTextureSize,
426*35238bceSAndroid Build Coastguard Worker maxTextureSize, 0, 0, 0);
427*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
428*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
429*35238bceSAndroid Build Coastguard Worker }
430*35238bceSAndroid Build Coastguard Worker });
431*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_width_height_max_cube_pos_y, "Invalid glCompressedTexImage2D() usage", {
432*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
433*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
434*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
435*35238bceSAndroid Build Coastguard Worker {
436*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
437*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
438*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
439*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, compressedFormats[0], maxTextureSize, 0, 0, 0, 0);
440*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
441*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, compressedFormats[0], 0, maxTextureSize, 0, 0, 0);
442*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
443*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, compressedFormats[0], maxTextureSize,
444*35238bceSAndroid Build Coastguard Worker maxTextureSize, 0, 0, 0);
445*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
446*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
447*35238bceSAndroid Build Coastguard Worker }
448*35238bceSAndroid Build Coastguard Worker });
449*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_width_height_max_cube_pos_z, "Invalid glCompressedTexImage2D() usage", {
450*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
451*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
452*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
453*35238bceSAndroid Build Coastguard Worker {
454*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
455*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
456*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
457*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, compressedFormats[0], maxTextureSize, 0, 0, 0, 0);
458*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
459*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, compressedFormats[0], 0, maxTextureSize, 0, 0, 0);
460*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
461*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, compressedFormats[0], maxTextureSize,
462*35238bceSAndroid Build Coastguard Worker maxTextureSize, 0, 0, 0);
463*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
464*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
465*35238bceSAndroid Build Coastguard Worker }
466*35238bceSAndroid Build Coastguard Worker });
467*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_width_height_max_cube_neg_x, "Invalid glCompressedTexImage2D() usage", {
468*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
469*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
470*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
471*35238bceSAndroid Build Coastguard Worker {
472*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
473*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
474*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
475*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, compressedFormats[0], maxTextureSize, 0, 0, 0, 0);
476*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
477*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, compressedFormats[0], 0, maxTextureSize, 0, 0, 0);
478*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
479*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, compressedFormats[0], maxTextureSize,
480*35238bceSAndroid Build Coastguard Worker maxTextureSize, 0, 0, 0);
481*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
482*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
483*35238bceSAndroid Build Coastguard Worker }
484*35238bceSAndroid Build Coastguard Worker });
485*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_width_height_max_cube_neg_y, "Invalid glCompressedTexImage2D() usage", {
486*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
487*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
488*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
489*35238bceSAndroid Build Coastguard Worker {
490*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
491*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
492*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
493*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, compressedFormats[0], maxTextureSize, 0, 0, 0, 0);
494*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
495*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, compressedFormats[0], 0, maxTextureSize, 0, 0, 0);
496*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
497*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, compressedFormats[0], maxTextureSize,
498*35238bceSAndroid Build Coastguard Worker maxTextureSize, 0, 0, 0);
499*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
500*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
501*35238bceSAndroid Build Coastguard Worker }
502*35238bceSAndroid Build Coastguard Worker });
503*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_width_height_max_cube_neg_z, "Invalid glCompressedTexImage2D() usage", {
504*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
505*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
506*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
507*35238bceSAndroid Build Coastguard Worker {
508*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
509*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
510*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
511*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, compressedFormats[0], maxTextureSize, 0, 0, 0, 0);
512*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
513*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, compressedFormats[0], 0, maxTextureSize, 0, 0, 0);
514*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
515*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, compressedFormats[0], maxTextureSize,
516*35238bceSAndroid Build Coastguard Worker maxTextureSize, 0, 0, 0);
517*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
518*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
519*35238bceSAndroid Build Coastguard Worker }
520*35238bceSAndroid Build Coastguard Worker });
521*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_invalid_border, "Invalid glCompressedTexImage2D() usage", {
522*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
523*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
524*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
525*35238bceSAndroid Build Coastguard Worker {
526*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
527*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], 0, 0, 1, 0, 0);
528*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
529*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], 0, 0, -1, 0, 0);
530*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
531*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
532*35238bceSAndroid Build Coastguard Worker }
533*35238bceSAndroid Build Coastguard Worker });
534*35238bceSAndroid Build Coastguard Worker
535*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_invalid_border_cube_pos_x, "Invalid glCompressedTexImage2D() usage", {
536*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
537*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
538*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
539*35238bceSAndroid Build Coastguard Worker {
540*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
541*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, compressedFormats[0], 0, 0, 1, 0, 0);
542*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
543*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, compressedFormats[0], 0, 0, -1, 0, 0);
544*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
545*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
546*35238bceSAndroid Build Coastguard Worker }
547*35238bceSAndroid Build Coastguard Worker });
548*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_invalid_border_cube_pos_y, "Invalid glCompressedTexImage2D() usage", {
549*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
550*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
551*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
552*35238bceSAndroid Build Coastguard Worker {
553*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
554*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, compressedFormats[0], 0, 0, 1, 0, 0);
555*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
556*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, compressedFormats[0], 0, 0, -1, 0, 0);
557*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
558*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
559*35238bceSAndroid Build Coastguard Worker }
560*35238bceSAndroid Build Coastguard Worker });
561*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_invalid_border_cube_pos_z, "Invalid glCompressedTexImage2D() usage", {
562*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
563*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
564*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
565*35238bceSAndroid Build Coastguard Worker {
566*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
567*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, compressedFormats[0], 0, 0, 1, 0, 0);
568*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
569*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, compressedFormats[0], 0, 0, -1, 0, 0);
570*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
571*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
572*35238bceSAndroid Build Coastguard Worker }
573*35238bceSAndroid Build Coastguard Worker });
574*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_invalid_border_cube_neg_x, "Invalid glCompressedTexImage2D() usage", {
575*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
576*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
577*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
578*35238bceSAndroid Build Coastguard Worker {
579*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
580*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, compressedFormats[0], 0, 0, 1, 0, 0);
581*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
582*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, compressedFormats[0], 0, 0, -1, 0, 0);
583*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
584*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
585*35238bceSAndroid Build Coastguard Worker }
586*35238bceSAndroid Build Coastguard Worker });
587*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_invalid_border_cube_neg_y, "Invalid glCompressedTexImage2D() usage", {
588*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
589*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
590*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
591*35238bceSAndroid Build Coastguard Worker {
592*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
593*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, compressedFormats[0], 0, 0, 1, 0, 0);
594*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
595*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, compressedFormats[0], 0, 0, -1, 0, 0);
596*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
597*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
598*35238bceSAndroid Build Coastguard Worker }
599*35238bceSAndroid Build Coastguard Worker });
600*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_invalid_border_cube_neg_z, "Invalid glCompressedTexImage2D() usage", {
601*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
602*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
603*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
604*35238bceSAndroid Build Coastguard Worker {
605*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
606*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, compressedFormats[0], 0, 0, 1, 0, 0);
607*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
608*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, compressedFormats[0], 0, 0, -1, 0, 0);
609*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
610*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
611*35238bceSAndroid Build Coastguard Worker }
612*35238bceSAndroid Build Coastguard Worker });
613*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedteximage2d_invalid_size, "Invalid glCompressedTexImage2D() usage", {
614*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
615*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
616*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
617*35238bceSAndroid Build Coastguard Worker {
618*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if imageSize is not consistent with the "
619*35238bceSAndroid Build Coastguard Worker "format, dimensions, and contents of the specified compressed image data.");
620*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], 0, 0, 0, -1, 0);
621*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
622*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
623*35238bceSAndroid Build Coastguard Worker }
624*35238bceSAndroid Build Coastguard Worker });
625*35238bceSAndroid Build Coastguard Worker
626*35238bceSAndroid Build Coastguard Worker // glCopyTexImage2D
627*35238bceSAndroid Build Coastguard Worker
628*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_target, "Invalid glCopyTexImage2D() usage", {
629*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is invalid.");
630*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(0, 0, GL_RGB, 0, 0, 64, 64, 0);
631*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
632*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
633*35238bceSAndroid Build Coastguard Worker });
634*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_format_tex2d, "Invalid glCopyTexImage2D() usage", {
635*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
636*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM or GL_INVALID_VALUE is generated if internalformat is not an accepted format.");
637*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 64, 64, 0);
638*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
639*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
640*35238bceSAndroid Build Coastguard Worker });
641*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_format_cube, "Invalid glCopyTexImage2D() usage", {
642*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
643*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM or GL_INVALID_VALUE is generated if internalformat is not an accepted format.");
644*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 0, 0, 0, 16, 16, 0);
645*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
646*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, 0, 0, 0, 16, 16, 0);
647*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
648*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, 0, 0, 0, 16, 16, 0);
649*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
650*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 0, 0, 0, 16, 16, 0);
651*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
652*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, 0, 0, 0, 16, 16, 0);
653*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
654*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, 0, 0, 0, 16, 16, 0);
655*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
656*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
657*35238bceSAndroid Build Coastguard Worker });
658*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_inequal_width_height_cube, "Invalid glCopyTexImage2D() usage", {
659*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if target is one of the six cube map 2D image "
660*35238bceSAndroid Build Coastguard Worker "targets and the width and height parameters are not equal.");
661*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 16, 17, 0);
662*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
663*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 16, 17, 0);
664*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
665*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 16, 17, 0);
666*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
667*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 16, 17, 0);
668*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
669*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 16, 17, 0);
670*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
671*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 16, 17, 0);
672*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
673*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
674*35238bceSAndroid Build Coastguard Worker });
675*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_neg_level_tex2d, "Invalid glCopyTexImage2D() usage", {
676*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "");
677*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, -1, GL_RGB, 0, 0, 64, 64, 0);
678*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
679*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
680*35238bceSAndroid Build Coastguard Worker });
681*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_neg_level_cube, "Invalid glCopyTexImage2D() usage", {
682*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
683*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, GL_RGB, 0, 0, 16, 16, 0);
684*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
685*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, GL_RGB, 0, 0, 16, 16, 0);
686*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
687*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, GL_RGB, 0, 0, 16, 16, 0);
688*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
689*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, GL_RGB, 0, 0, 16, 16, 0);
690*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
691*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, GL_RGB, 0, 0, 16, 16, 0);
692*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
693*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, GL_RGB, 0, 0, 16, 16, 0);
694*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
695*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
696*35238bceSAndroid Build Coastguard Worker });
697*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_level_max_tex2d, "Invalid glCopyTexImage2D() usage", {
698*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("",
699*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
700*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE)) + 1;
701*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, log2MaxTextureSize, GL_RGB, 0, 0, 64, 64, 0);
702*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
703*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
704*35238bceSAndroid Build Coastguard Worker });
705*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_level_max_cube, "Invalid glCopyTexImage2D() usage", {
706*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
707*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
708*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize =
709*35238bceSAndroid Build Coastguard Worker deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
710*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxTextureSize, GL_RGB, 0, 0, 16, 16, 0);
711*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
712*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxTextureSize, GL_RGB, 0, 0, 16, 16, 0);
713*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
714*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxTextureSize, GL_RGB, 0, 0, 16, 16, 0);
715*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
716*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxTextureSize, GL_RGB, 0, 0, 16, 16, 0);
717*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
718*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxTextureSize, GL_RGB, 0, 0, 16, 16, 0);
719*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
720*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxTextureSize, GL_RGB, 0, 0, 16, 16, 0);
721*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
722*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
723*35238bceSAndroid Build Coastguard Worker });
724*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_width_height_tex2d, "Invalid glCopyTexImage2D() usage", {
725*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
726*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, -1, 1, 0);
727*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
728*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 1, -1, 0);
729*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
730*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, -1, -1, 0);
731*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
732*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
733*35238bceSAndroid Build Coastguard Worker });
734*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_width_height_cube_pos_x, "Invalid glCopyTexImage2D() usage", {
735*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
736*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, -1, 1, 0);
737*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
738*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 1, -1, 0);
739*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
740*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, -1, -1, 0);
741*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
742*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
743*35238bceSAndroid Build Coastguard Worker });
744*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_width_height_cube_pos_y, "Invalid glCopyTexImage2D() usage", {
745*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
746*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, -1, 1, 0);
747*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
748*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 1, -1, 0);
749*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
750*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, -1, -1, 0);
751*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
752*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
753*35238bceSAndroid Build Coastguard Worker });
754*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_width_height_cube_pos_z, "Invalid glCopyTexImage2D() usage", {
755*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
756*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, -1, 1, 0);
757*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
758*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 1, -1, 0);
759*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
760*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, -1, -1, 0);
761*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
762*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
763*35238bceSAndroid Build Coastguard Worker });
764*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_width_height_cube_neg_x, "Invalid glCopyTexImage2D() usage", {
765*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
766*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, -1, 1, 0);
767*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
768*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 1, -1, 0);
769*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
770*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, -1, -1, 0);
771*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
772*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
773*35238bceSAndroid Build Coastguard Worker });
774*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_width_height_cube_neg_y, "Invalid glCopyTexImage2D() usage", {
775*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
776*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, -1, 1, 0);
777*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
778*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 1, -1, 0);
779*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
780*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, -1, -1, 0);
781*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
782*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
783*35238bceSAndroid Build Coastguard Worker });
784*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_width_height_cube_neg_z, "Invalid glCopyTexImage2D() usage", {
785*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
786*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, -1, 1, 0);
787*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
788*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 1, -1, 0);
789*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
790*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, -1, -1, 0);
791*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
792*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
793*35238bceSAndroid Build Coastguard Worker });
794*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_width_height_max_tex2d, "Invalid glCopyTexImage2D() usage", {
795*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
796*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_TEXTURE_SIZE.");
797*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE) + 1;
798*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, maxTextureSize, 1, 0);
799*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
800*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 1, maxTextureSize, 0);
801*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
802*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, maxTextureSize, maxTextureSize, 0);
803*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
804*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
805*35238bceSAndroid Build Coastguard Worker });
806*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_width_height_max_cube_pos_x, "Invalid glCopyTexImage2D() usage", {
807*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
808*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
809*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
810*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 1, maxTextureSize, 0);
811*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
812*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, maxTextureSize, 1, 0);
813*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
814*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, maxTextureSize, maxTextureSize, 0);
815*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
816*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
817*35238bceSAndroid Build Coastguard Worker });
818*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_width_height_max_cube_pos_y, "Invalid glCopyTexImage2D() usage", {
819*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
820*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
821*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
822*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 1, maxTextureSize, 0);
823*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
824*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, maxTextureSize, 1, 0);
825*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
826*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, maxTextureSize, maxTextureSize, 0);
827*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
828*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
829*35238bceSAndroid Build Coastguard Worker });
830*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_width_height_max_cube_pos_z, "Invalid glCopyTexImage2D() usage", {
831*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
832*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
833*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
834*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 1, maxTextureSize, 0);
835*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
836*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, maxTextureSize, 1, 0);
837*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
838*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, maxTextureSize, maxTextureSize, 0);
839*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
840*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
841*35238bceSAndroid Build Coastguard Worker });
842*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_width_height_max_cube_neg_x, "Invalid glCopyTexImage2D() usage", {
843*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
844*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
845*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
846*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 1, maxTextureSize, 0);
847*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
848*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, maxTextureSize, 1, 0);
849*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
850*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, maxTextureSize, maxTextureSize, 0);
851*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
852*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
853*35238bceSAndroid Build Coastguard Worker });
854*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_width_height_max_cube_neg_y, "Invalid glCopyTexImage2D() usage", {
855*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
856*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
857*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
858*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 1, maxTextureSize, 0);
859*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
860*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, maxTextureSize, 1, 0);
861*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
862*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, maxTextureSize, maxTextureSize, 0);
863*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
864*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
865*35238bceSAndroid Build Coastguard Worker });
866*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_width_height_max_cube_neg_z, "Invalid glCopyTexImage2D() usage", {
867*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
868*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
869*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
870*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 1, maxTextureSize, 0);
871*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
872*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, maxTextureSize, 1, 0);
873*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
874*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, maxTextureSize, maxTextureSize, 0);
875*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
876*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
877*35238bceSAndroid Build Coastguard Worker });
878*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_border_tex2d, "Invalid glCopyTexImage2D() usage", {
879*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
880*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 64, 64, -1);
881*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
882*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 64, 64, 1);
883*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
884*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
885*35238bceSAndroid Build Coastguard Worker });
886*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_border_cube_pos_x, "Invalid glCopyTexImage2D() usage", {
887*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
888*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 16, 16, -1);
889*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
890*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 16, 16, 1);
891*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
892*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
893*35238bceSAndroid Build Coastguard Worker });
894*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_border_cube_pos_y, "Invalid glCopyTexImage2D() usage", {
895*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
896*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 16, 16, -1);
897*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
898*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 16, 16, 1);
899*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
900*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
901*35238bceSAndroid Build Coastguard Worker });
902*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_border_cube_pos_z, "Invalid glCopyTexImage2D() usage", {
903*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
904*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 16, 16, -1);
905*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
906*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 16, 16, 1);
907*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
908*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
909*35238bceSAndroid Build Coastguard Worker });
910*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_border_cube_neg_x, "Invalid glCopyTexImage2D() usage", {
911*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
912*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 16, 16, -1);
913*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
914*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 16, 16, 1);
915*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
916*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
917*35238bceSAndroid Build Coastguard Worker });
918*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_border_cube_neg_y, "Invalid glCopyTexImage2D() usage", {
919*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
920*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 16, 16, -1);
921*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
922*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 16, 16, 1);
923*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
924*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
925*35238bceSAndroid Build Coastguard Worker });
926*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_invalid_border_cube_neg_z, "Invalid glCopyTexImage2D() usage", {
927*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
928*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 16, 16, -1);
929*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
930*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 16, 16, 1);
931*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
932*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
933*35238bceSAndroid Build Coastguard Worker });
934*35238bceSAndroid Build Coastguard Worker
935*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copyteximage2d_incomplete_framebuffer, "Invalid glCopyTexImage2D() usage", {
936*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::Section("", "GL_INVALID_FRAMEBUFFER_OPERATION is generated if the currently bound "
937*35238bceSAndroid Build Coastguard Worker "framebuffer is not framebuffer complete.");
938*35238bceSAndroid Build Coastguard Worker GLuint fbo;
939*35238bceSAndroid Build Coastguard Worker glGenFramebuffers(1, &fbo);
940*35238bceSAndroid Build Coastguard Worker glBindFramebuffer(GL_FRAMEBUFFER, fbo);
941*35238bceSAndroid Build Coastguard Worker glCheckFramebufferStatus(GL_FRAMEBUFFER);
942*35238bceSAndroid Build Coastguard Worker
943*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 64, 64, 0);
944*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
945*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 16, 16, 0);
946*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
947*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 16, 16, 0);
948*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
949*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 16, 16, 0);
950*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
951*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 16, 16, 0);
952*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
953*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 16, 16, 0);
954*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
955*35238bceSAndroid Build Coastguard Worker glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 16, 16, 0);
956*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
957*35238bceSAndroid Build Coastguard Worker
958*35238bceSAndroid Build Coastguard Worker glBindFramebuffer(GL_FRAMEBUFFER, 0);
959*35238bceSAndroid Build Coastguard Worker glDeleteFramebuffers(1, &fbo);
960*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::EndSection;
961*35238bceSAndroid Build Coastguard Worker });
962*35238bceSAndroid Build Coastguard Worker
963*35238bceSAndroid Build Coastguard Worker // glCopyTexSubImage2D
964*35238bceSAndroid Build Coastguard Worker
965*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_invalid_target, "Invalid glCopyTexSubImage2D() usage", {
966*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is invalid.");
967*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(0, 0, 0, 0, 0, 0, 0, 0);
968*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
969*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
970*35238bceSAndroid Build Coastguard Worker });
971*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_neg_level_tex2d, "Invalid glCopyTexSubImage2D() usage", {
972*35238bceSAndroid Build Coastguard Worker GLuint texture;
973*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
974*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
975*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
976*35238bceSAndroid Build Coastguard Worker
977*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
978*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, -1, 0, 0, 0, 0, 0, 0);
979*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
980*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
981*35238bceSAndroid Build Coastguard Worker
982*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
983*35238bceSAndroid Build Coastguard Worker });
984*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_neg_level_cube, "Invalid glCopyTexSubImage2D() usage", {
985*35238bceSAndroid Build Coastguard Worker GLuint texture;
986*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
987*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
988*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, glTexImage2D(faceGL, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL););
989*35238bceSAndroid Build Coastguard Worker
990*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("",
991*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
992*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, 0, 0, 0, 0, 0, 0);
993*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
994*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, 0, 0, 0, 0, 0, 0);
995*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
996*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, 0, 0, 0, 0, 0, 0);
997*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
998*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, 0, 0, 0, 0, 0, 0);
999*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1000*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, 0, 0, 0, 0, 0, 0);
1001*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1002*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, 0, 0, 0, 0, 0, 0);
1003*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1004*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1005*35238bceSAndroid Build Coastguard Worker
1006*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1007*35238bceSAndroid Build Coastguard Worker });
1008*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_level_max_tex2d, "Invalid glCopyTexSubImage2D() usage", {
1009*35238bceSAndroid Build Coastguard Worker GLuint texture;
1010*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1011*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1012*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1013*35238bceSAndroid Build Coastguard Worker
1014*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("",
1015*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
1016*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE)) + 1;
1017*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, 0, 0);
1018*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1019*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1020*35238bceSAndroid Build Coastguard Worker
1021*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1022*35238bceSAndroid Build Coastguard Worker });
1023*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_level_max_cube_pos, "Invalid glCopyTexSubImage2D() usage", {
1024*35238bceSAndroid Build Coastguard Worker GLuint texture;
1025*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1026*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
1027*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, glTexImage2D(faceGL, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL););
1028*35238bceSAndroid Build Coastguard Worker
1029*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1030*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_SIZE).");
1031*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize =
1032*35238bceSAndroid Build Coastguard Worker deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
1033*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxTextureSize, 0, 0, 0, 0, 0, 0);
1034*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1035*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxTextureSize, 0, 0, 0, 0, 0, 0);
1036*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1037*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxTextureSize, 0, 0, 0, 0, 0, 0);
1038*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1039*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxTextureSize, 0, 0, 0, 0, 0, 0);
1040*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1041*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxTextureSize, 0, 0, 0, 0, 0, 0);
1042*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1043*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxTextureSize, 0, 0, 0, 0, 0, 0);
1044*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1045*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1046*35238bceSAndroid Build Coastguard Worker
1047*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1048*35238bceSAndroid Build Coastguard Worker });
1049*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_neg_offset, "Invalid glCopyTexSubImage2D() usage", {
1050*35238bceSAndroid Build Coastguard Worker GLuint texture;
1051*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1052*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1053*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1054*35238bceSAndroid Build Coastguard Worker
1055*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if xoffset < 0 or yoffset < 0.");
1056*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, -1, 0, 0, 0, 0, 0);
1057*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1058*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, -1, 0, 0, 0, 0);
1059*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1060*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, -1, -1, 0, 0, 0, 0);
1061*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1062*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1063*35238bceSAndroid Build Coastguard Worker
1064*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1065*35238bceSAndroid Build Coastguard Worker });
1066*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_offset_allowed, "Invalid glCopyTexSubImage2D() usage", {
1067*35238bceSAndroid Build Coastguard Worker GLuint texture;
1068*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1069*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1070*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1071*35238bceSAndroid Build Coastguard Worker
1072*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1073*35238bceSAndroid Build Coastguard Worker "",
1074*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if xoffset + width > texture_width or yoffset + height > texture_height.");
1075*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 8, 4, 0, 0, 10, 10);
1076*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1077*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 4, 8, 0, 0, 10, 10);
1078*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1079*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 8, 8, 0, 0, 10, 10);
1080*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1081*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1082*35238bceSAndroid Build Coastguard Worker
1083*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1084*35238bceSAndroid Build Coastguard Worker });
1085*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_neg_wdt_hgt, "Invalid glCopyTexSubImage2D() usage", {
1086*35238bceSAndroid Build Coastguard Worker GLuint texture;
1087*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1088*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1089*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1090*35238bceSAndroid Build Coastguard Worker
1091*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1092*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, -1, 0);
1093*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1094*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 0, -1);
1095*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1096*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, -1, -1);
1097*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1098*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1099*35238bceSAndroid Build Coastguard Worker
1100*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1101*35238bceSAndroid Build Coastguard Worker });
1102*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(copytexsubimage2d_incomplete_framebuffer, "Invalid glCopyTexSubImage2D() usage", {
1103*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::Section("", "GL_INVALID_FRAMEBUFFER_OPERATION is generated if the currently bound "
1104*35238bceSAndroid Build Coastguard Worker "framebuffer is not framebuffer complete.");
1105*35238bceSAndroid Build Coastguard Worker
1106*35238bceSAndroid Build Coastguard Worker GLuint texture[2];
1107*35238bceSAndroid Build Coastguard Worker GLuint fbo;
1108*35238bceSAndroid Build Coastguard Worker
1109*35238bceSAndroid Build Coastguard Worker glGenTextures(2, texture);
1110*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture[0]);
1111*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1112*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_CUBE_MAP, texture[1]);
1113*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1114*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1115*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1116*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1117*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1118*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1119*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
1120*35238bceSAndroid Build Coastguard Worker
1121*35238bceSAndroid Build Coastguard Worker glGenFramebuffers(1, &fbo);
1122*35238bceSAndroid Build Coastguard Worker glBindFramebuffer(GL_FRAMEBUFFER, fbo);
1123*35238bceSAndroid Build Coastguard Worker glCheckFramebufferStatus(GL_FRAMEBUFFER);
1124*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
1125*35238bceSAndroid Build Coastguard Worker
1126*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0);
1127*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1128*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 0, 0, 0, 0, 0, 0);
1129*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1130*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, 0, 0, 0, 0, 0, 0);
1131*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1132*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, 0, 0, 0, 0, 0, 0);
1133*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1134*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 0, 0, 0, 0, 0, 0);
1135*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1136*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, 0, 0, 0, 0, 0, 0);
1137*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1138*35238bceSAndroid Build Coastguard Worker glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, 0, 0, 0, 0, 0, 0);
1139*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1140*35238bceSAndroid Build Coastguard Worker
1141*35238bceSAndroid Build Coastguard Worker glBindFramebuffer(GL_FRAMEBUFFER, 0);
1142*35238bceSAndroid Build Coastguard Worker glDeleteFramebuffers(1, &fbo);
1143*35238bceSAndroid Build Coastguard Worker glDeleteTextures(2, texture);
1144*35238bceSAndroid Build Coastguard Worker
1145*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::EndSection;
1146*35238bceSAndroid Build Coastguard Worker });
1147*35238bceSAndroid Build Coastguard Worker
1148*35238bceSAndroid Build Coastguard Worker // glDeleteTextures
1149*35238bceSAndroid Build Coastguard Worker
1150*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(deletetextures_invalid_number, "Invalid glDeleteTextures() usage", {
1151*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if n is negative.");
1152*35238bceSAndroid Build Coastguard Worker glDeleteTextures(-1, 0);
1153*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1154*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1155*35238bceSAndroid Build Coastguard Worker });
1156*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(deletetextures_invalid_number_bind, "Invalid glDeleteTextures() usage", {
1157*35238bceSAndroid Build Coastguard Worker GLuint texture;
1158*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1159*35238bceSAndroid Build Coastguard Worker
1160*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if n is negative.");
1161*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1162*35238bceSAndroid Build Coastguard Worker glDeleteTextures(-1, 0);
1163*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1164*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1165*35238bceSAndroid Build Coastguard Worker
1166*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1167*35238bceSAndroid Build Coastguard Worker });
1168*35238bceSAndroid Build Coastguard Worker
1169*35238bceSAndroid Build Coastguard Worker // glGenerateMipmap
1170*35238bceSAndroid Build Coastguard Worker
1171*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(generatemipmap_invalid_target, "Invalid glGenerateMipmap() usage", {
1172*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1173*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target is not GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP.");
1174*35238bceSAndroid Build Coastguard Worker glGenerateMipmap(0);
1175*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1176*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1177*35238bceSAndroid Build Coastguard Worker });
1178*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(generatemipmap_npot_wdt_hgt, "Invalid glGenerateMipmap() usage", {
1179*35238bceSAndroid Build Coastguard Worker GLuint texture;
1180*35238bceSAndroid Build Coastguard Worker
1181*35238bceSAndroid Build Coastguard Worker if (m_context.getContextInfo().isExtensionSupported("GL_OES_texture_npot"))
1182*35238bceSAndroid Build Coastguard Worker {
1183*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::Message << "GL_OES_texture_npot extension removes error condition, skipping test"
1184*35238bceSAndroid Build Coastguard Worker << tcu::TestLog::EndMessage;
1185*35238bceSAndroid Build Coastguard Worker return;
1186*35238bceSAndroid Build Coastguard Worker }
1187*35238bceSAndroid Build Coastguard Worker
1188*35238bceSAndroid Build Coastguard Worker glActiveTexture(GL_TEXTURE0);
1189*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1190*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1191*35238bceSAndroid Build Coastguard Worker
1192*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if either the width or height of the zero "
1193*35238bceSAndroid Build Coastguard Worker "level array is not a power of two.");
1194*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 256, 257, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1195*35238bceSAndroid Build Coastguard Worker glGenerateMipmap(GL_TEXTURE_2D);
1196*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1197*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 257, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1198*35238bceSAndroid Build Coastguard Worker glGenerateMipmap(GL_TEXTURE_2D);
1199*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1200*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 257, 257, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1201*35238bceSAndroid Build Coastguard Worker glGenerateMipmap(GL_TEXTURE_2D);
1202*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1203*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1204*35238bceSAndroid Build Coastguard Worker
1205*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1206*35238bceSAndroid Build Coastguard Worker });
1207*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(generatemipmap_zero_level_array_compressed, "Invalid glGenerateMipmap() usage", {
1208*35238bceSAndroid Build Coastguard Worker vector<int32_t> compressedFormats;
1209*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats);
1210*35238bceSAndroid Build Coastguard Worker if (!compressedFormats.empty())
1211*35238bceSAndroid Build Coastguard Worker {
1212*35238bceSAndroid Build Coastguard Worker GLuint texture;
1213*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1214*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1215*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1216*35238bceSAndroid Build Coastguard Worker "",
1217*35238bceSAndroid Build Coastguard Worker "GL_INVALID_OPERATION is generated if the zero level array is stored in a compressed internal format.");
1218*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, compressedFormats[0], 0, 0, 0, 0, 0);
1219*35238bceSAndroid Build Coastguard Worker glGenerateMipmap(GL_TEXTURE_2D);
1220*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1221*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1222*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1223*35238bceSAndroid Build Coastguard Worker }
1224*35238bceSAndroid Build Coastguard Worker });
1225*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(generatemipmap_incomplete_cube, "Invalid glGenerateMipmap() usage", {
1226*35238bceSAndroid Build Coastguard Worker GLuint texture;
1227*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1228*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
1229*35238bceSAndroid Build Coastguard Worker
1230*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1231*35238bceSAndroid Build Coastguard Worker "", "INVALID_OPERATION is generated if the texture bound to target is not cube complete.");
1232*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1233*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1234*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1235*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1236*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1237*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1238*35238bceSAndroid Build Coastguard Worker glGenerateMipmap(GL_TEXTURE_CUBE_MAP);
1239*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1240*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1241*35238bceSAndroid Build Coastguard Worker
1242*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1243*35238bceSAndroid Build Coastguard Worker });
1244*35238bceSAndroid Build Coastguard Worker
1245*35238bceSAndroid Build Coastguard Worker // glGenTextures
1246*35238bceSAndroid Build Coastguard Worker
1247*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(gentextures_invalid_size, "Invalid glGenTextures() usage", {
1248*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if n is negative.");
1249*35238bceSAndroid Build Coastguard Worker glGenTextures(-1, 0);
1250*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1251*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1252*35238bceSAndroid Build Coastguard Worker });
1253*35238bceSAndroid Build Coastguard Worker
1254*35238bceSAndroid Build Coastguard Worker // glPixelStorei
1255*35238bceSAndroid Build Coastguard Worker
1256*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(pixelstorei_invalid_pname, "Invalid glPixelStorei() usage", {
1257*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not an accepted value.");
1258*35238bceSAndroid Build Coastguard Worker glPixelStorei(0, 1);
1259*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1260*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1261*35238bceSAndroid Build Coastguard Worker });
1262*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(pixelstorei_invalid_param, "Invalid glPixelStorei() usage", {
1263*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1264*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if alignment is specified as other than 1, 2, 4, or 8.");
1265*35238bceSAndroid Build Coastguard Worker glPixelStorei(GL_PACK_ALIGNMENT, 0);
1266*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1267*35238bceSAndroid Build Coastguard Worker glPixelStorei(GL_UNPACK_ALIGNMENT, 0);
1268*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1269*35238bceSAndroid Build Coastguard Worker glPixelStorei(GL_PACK_ALIGNMENT, 16);
1270*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1271*35238bceSAndroid Build Coastguard Worker glPixelStorei(GL_UNPACK_ALIGNMENT, 16);
1272*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1273*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1274*35238bceSAndroid Build Coastguard Worker });
1275*35238bceSAndroid Build Coastguard Worker
1276*35238bceSAndroid Build Coastguard Worker // glTexImage2D
1277*35238bceSAndroid Build Coastguard Worker
1278*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_invalid_target, "Invalid glTexImage2D() usage", {
1279*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is invalid.");
1280*35238bceSAndroid Build Coastguard Worker glTexImage2D(0, 0, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1281*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1282*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1283*35238bceSAndroid Build Coastguard Worker });
1284*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_invalid_format, "Invalid glTexImage2D() usage", {
1285*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if format or type is not an accepted value.");
1286*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, 0, GL_UNSIGNED_BYTE, 0);
1287*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1288*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1289*35238bceSAndroid Build Coastguard Worker });
1290*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_invalid_type, "Invalid glTexImage2D() usage", {
1291*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if format or type is not an accepted value.");
1292*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, GL_RGB, 0, 0);
1293*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1294*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1295*35238bceSAndroid Build Coastguard Worker });
1296*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_inequal_width_height_cube, "Invalid glTexImage2D() usage", {
1297*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if target is one of the six cube map 2D image "
1298*35238bceSAndroid Build Coastguard Worker "targets and the width and height parameters are not equal.");
1299*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1300*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1301*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1302*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1303*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1304*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1305*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1306*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1307*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1308*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1309*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1310*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1311*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1312*35238bceSAndroid Build Coastguard Worker });
1313*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_level_tex2d, "Invalid glTexImage2D() usage", {
1314*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
1315*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1316*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1317*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1318*35238bceSAndroid Build Coastguard Worker });
1319*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_level_cube, "Invalid glTexImage2D() usage", {
1320*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
1321*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1322*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1323*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1324*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1325*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1326*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1327*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1328*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1329*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1330*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1331*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1332*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1333*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1334*35238bceSAndroid Build Coastguard Worker });
1335*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_level_max_tex2d, "Invalid glTexImage2D() usage", {
1336*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("",
1337*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
1338*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE)) + 1;
1339*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, log2MaxTextureSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1340*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1341*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1342*35238bceSAndroid Build Coastguard Worker });
1343*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_level_max_cube, "Invalid glTexImage2D() usage", {
1344*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1345*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
1346*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize =
1347*35238bceSAndroid Build Coastguard Worker deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
1348*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxTextureSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1349*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1350*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxTextureSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1351*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1352*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxTextureSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1353*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1354*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxTextureSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1355*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1356*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxTextureSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1357*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1358*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxTextureSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1359*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1360*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1361*35238bceSAndroid Build Coastguard Worker });
1362*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_invalid_internalformat, "Invalid glTexImage2D() usage", {
1363*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if internalformat is not an accepted format.");
1364*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, 0, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1365*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1366*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1367*35238bceSAndroid Build Coastguard Worker });
1368*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_width_height_tex2d, "Invalid glTexImage2D() usage", {
1369*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1370*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1371*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1372*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1373*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1374*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1375*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1376*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1377*35238bceSAndroid Build Coastguard Worker });
1378*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_width_height_cube_pos_x, "Invalid glTexImage2D() usage", {
1379*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1380*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1381*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1382*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1383*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1384*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1385*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1386*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1387*35238bceSAndroid Build Coastguard Worker });
1388*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_width_height_cube_pos_y, "Invalid glTexImage2D() usage", {
1389*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1390*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1391*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1392*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1393*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1394*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1395*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1396*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1397*35238bceSAndroid Build Coastguard Worker });
1398*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_width_height_cube_pos_z, "Invalid glTexImage2D() usage", {
1399*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1400*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1401*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1402*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1403*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1404*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1405*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1406*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1407*35238bceSAndroid Build Coastguard Worker });
1408*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_width_height_cube_neg_x, "Invalid glTexImage2D() usage", {
1409*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1410*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1411*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1412*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1413*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1414*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1415*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1416*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1417*35238bceSAndroid Build Coastguard Worker });
1418*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_width_height_cube_neg_y, "Invalid glTexImage2D() usage", {
1419*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1420*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1421*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1422*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1423*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1424*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1425*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1426*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1427*35238bceSAndroid Build Coastguard Worker });
1428*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_neg_width_height_cube_neg_z, "Invalid glTexImage2D() usage", {
1429*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1430*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1431*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1432*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1433*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1434*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1435*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1436*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1437*35238bceSAndroid Build Coastguard Worker });
1438*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_width_height_max_tex2d, "Invalid glTexImage2D() usage", {
1439*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1440*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_TEXTURE_SIZE.");
1441*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE) + 1;
1442*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, maxTextureSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1443*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1444*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1445*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1446*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, maxTextureSize, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1447*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1448*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1449*35238bceSAndroid Build Coastguard Worker });
1450*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_width_height_max_cube_pos_x, "Invalid glTexImage2D() usage", {
1451*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1452*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
1453*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
1454*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, maxTextureSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1455*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1456*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 1, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1457*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1458*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, maxTextureSize, maxTextureSize, 0, GL_RGB,
1459*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1460*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1461*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1462*35238bceSAndroid Build Coastguard Worker });
1463*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_width_height_max_cube_pos_y, "Invalid glTexImage2D() usage", {
1464*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1465*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
1466*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
1467*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, maxTextureSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1468*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1469*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 1, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1470*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1471*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, maxTextureSize, maxTextureSize, 0, GL_RGB,
1472*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1473*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1474*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1475*35238bceSAndroid Build Coastguard Worker });
1476*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_width_height_max_cube_pos_z, "Invalid glTexImage2D() usage", {
1477*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1478*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
1479*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
1480*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, maxTextureSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1481*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1482*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 1, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1483*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1484*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, maxTextureSize, maxTextureSize, 0, GL_RGB,
1485*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1486*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1487*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1488*35238bceSAndroid Build Coastguard Worker });
1489*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_width_height_max_cube_neg_x, "Invalid glTexImage2D() usage", {
1490*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1491*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
1492*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
1493*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, maxTextureSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1494*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1495*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 1, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1496*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1497*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, maxTextureSize, maxTextureSize, 0, GL_RGB,
1498*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1499*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1500*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1501*35238bceSAndroid Build Coastguard Worker });
1502*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_width_height_max_cube_neg_y, "Invalid glTexImage2D() usage", {
1503*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1504*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
1505*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
1506*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, maxTextureSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1507*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1508*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 1, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1509*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1510*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, maxTextureSize, maxTextureSize, 0, GL_RGB,
1511*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1512*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1513*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1514*35238bceSAndroid Build Coastguard Worker });
1515*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_width_height_max_cube_neg_z, "Invalid glTexImage2D() usage", {
1516*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1517*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
1518*35238bceSAndroid Build Coastguard Worker int maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
1519*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, maxTextureSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1520*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1521*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 1, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1522*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1523*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, maxTextureSize, maxTextureSize, 0, GL_RGB,
1524*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1525*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1526*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1527*35238bceSAndroid Build Coastguard Worker });
1528*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_invalid_border, "Invalid glTexImage2D() usage", {
1529*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if border is not 0.");
1530*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1531*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1532*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, -1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1533*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1534*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1535*35238bceSAndroid Build Coastguard Worker });
1536*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_format_mismatch, "Invalid glTexImage2D() usage", {
1537*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if format does not match internalformat.");
1538*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1539*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1540*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1541*35238bceSAndroid Build Coastguard Worker });
1542*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(teximage2d_type_format_mismatch, "Invalid glTexImage2D() usage", {
1543*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if type is GL_UNSIGNED_SHORT_4_4_4_4 or "
1544*35238bceSAndroid Build Coastguard Worker "GL_UNSIGNED_SHORT_5_5_5_1 and format is not GL_RGBA.");
1545*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_SHORT_4_4_4_4, 0);
1546*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1547*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_SHORT_5_5_5_1, 0);
1548*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1549*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1550*35238bceSAndroid Build Coastguard Worker });
1551*35238bceSAndroid Build Coastguard Worker
1552*35238bceSAndroid Build Coastguard Worker // glTexSubImage2D
1553*35238bceSAndroid Build Coastguard Worker
1554*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_invalid_target, "Invalid glTexSubImage2D() usage", {
1555*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is invalid.");
1556*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(0, 0, 0, 0, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1557*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1558*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1559*35238bceSAndroid Build Coastguard Worker });
1560*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_invalid_format, "Invalid glTexSubImage2D() usage", {
1561*35238bceSAndroid Build Coastguard Worker GLuint texture;
1562*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1563*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1564*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1565*35238bceSAndroid Build Coastguard Worker
1566*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if format or type is not an accepted value.");
1567*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 0, GL_UNSIGNED_BYTE, 0);
1568*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1569*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1570*35238bceSAndroid Build Coastguard Worker
1571*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1572*35238bceSAndroid Build Coastguard Worker });
1573*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_invalid_type, "Invalid glTexSubImage2D() usage", {
1574*35238bceSAndroid Build Coastguard Worker GLuint texture;
1575*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1576*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1577*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1578*35238bceSAndroid Build Coastguard Worker
1579*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if format or type is not an accepted value.");
1580*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, GL_RGB, 0, 0);
1581*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1582*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1583*35238bceSAndroid Build Coastguard Worker
1584*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1585*35238bceSAndroid Build Coastguard Worker });
1586*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_neg_level_tex2d, "Invalid glTexSubImage2D() usage", {
1587*35238bceSAndroid Build Coastguard Worker GLuint texture;
1588*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1589*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1590*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1591*35238bceSAndroid Build Coastguard Worker
1592*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
1593*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1594*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1595*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1596*35238bceSAndroid Build Coastguard Worker
1597*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1598*35238bceSAndroid Build Coastguard Worker });
1599*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_neg_level_cube, "Invalid glTexSubImage2D() usage", {
1600*35238bceSAndroid Build Coastguard Worker GLuint texture;
1601*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1602*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
1603*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, glTexImage2D(faceGL, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL););
1604*35238bceSAndroid Build Coastguard Worker
1605*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
1606*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1607*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1608*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1609*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1610*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1611*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1612*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1613*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1614*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1615*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1616*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1617*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1618*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1619*35238bceSAndroid Build Coastguard Worker
1620*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1621*35238bceSAndroid Build Coastguard Worker });
1622*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_level_max_tex2d, "Invalid glTexSubImage2D() usage", {
1623*35238bceSAndroid Build Coastguard Worker GLuint texture;
1624*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1625*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1626*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1627*35238bceSAndroid Build Coastguard Worker
1628*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("",
1629*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
1630*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE)) + 1;
1631*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1632*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1633*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1634*35238bceSAndroid Build Coastguard Worker
1635*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1636*35238bceSAndroid Build Coastguard Worker });
1637*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_level_max_cube, "Invalid glTexSubImage2D() usage", {
1638*35238bceSAndroid Build Coastguard Worker GLuint texture;
1639*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1640*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
1641*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, glTexImage2D(faceGL, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL););
1642*35238bceSAndroid Build Coastguard Worker
1643*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1644*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
1645*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize =
1646*35238bceSAndroid Build Coastguard Worker deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
1647*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxTextureSize, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1648*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1649*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxTextureSize, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1650*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1651*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxTextureSize, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1652*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1653*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxTextureSize, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1654*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1655*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxTextureSize, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1656*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1657*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxTextureSize, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1658*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1659*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1660*35238bceSAndroid Build Coastguard Worker
1661*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1662*35238bceSAndroid Build Coastguard Worker });
1663*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_neg_offset, "Invalid glTexSubImage2D() usage", {
1664*35238bceSAndroid Build Coastguard Worker GLuint texture;
1665*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1666*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1667*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1668*35238bceSAndroid Build Coastguard Worker
1669*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if xoffset or yoffset are negative.");
1670*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, -1, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1671*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1672*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, -1, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1673*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1674*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, -1, -1, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1675*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1676*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1677*35238bceSAndroid Build Coastguard Worker
1678*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1679*35238bceSAndroid Build Coastguard Worker });
1680*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_offset_allowed, "Invalid glTexSubImage2D() usage", {
1681*35238bceSAndroid Build Coastguard Worker GLuint texture;
1682*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1683*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1684*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1685*35238bceSAndroid Build Coastguard Worker
1686*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1687*35238bceSAndroid Build Coastguard Worker "",
1688*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if xoffset + width > texture_width or yoffset + height > texture_height.");
1689*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 8, 4, 10, 10, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1690*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1691*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 4, 8, 10, 10, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1692*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1693*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 8, 8, 10, 10, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1694*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1695*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1696*35238bceSAndroid Build Coastguard Worker
1697*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1698*35238bceSAndroid Build Coastguard Worker });
1699*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_neg_wdt_hgt, "Invalid glTexSubImage2D() usage", {
1700*35238bceSAndroid Build Coastguard Worker GLuint texture;
1701*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1702*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1703*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1704*35238bceSAndroid Build Coastguard Worker
1705*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
1706*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1707*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1708*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1709*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1710*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1711*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
1712*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1713*35238bceSAndroid Build Coastguard Worker
1714*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1715*35238bceSAndroid Build Coastguard Worker });
1716*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texsubimage2d_type_format_mismatch, "Invalid glTexSubImage2D() usage", {
1717*35238bceSAndroid Build Coastguard Worker GLuint texture;
1718*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1719*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1720*35238bceSAndroid Build Coastguard Worker glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, DE_NULL);
1721*35238bceSAndroid Build Coastguard Worker
1722*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::Section(
1723*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_OPERATION is generated if type is GL_UNSIGNED_SHORT_5_6_5 and format is not GL_RGB");
1724*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_6_5, 0);
1725*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1726*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::EndSection;
1727*35238bceSAndroid Build Coastguard Worker
1728*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::Section("", "GL_INVALID_OPERATION is generated if type is GL_UNSIGNED_SHORT_4_4_4_4 or "
1729*35238bceSAndroid Build Coastguard Worker "GL_UNSIGNED_SHORT_5_5_5_1 and format is not GL_RGBA.");
1730*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, GL_RGB, GL_UNSIGNED_SHORT_4_4_4_4, 0);
1731*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1732*35238bceSAndroid Build Coastguard Worker glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, GL_RGB, GL_UNSIGNED_SHORT_5_5_5_1, 0);
1733*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
1734*35238bceSAndroid Build Coastguard Worker m_log << tcu::TestLog::EndSection;
1735*35238bceSAndroid Build Coastguard Worker
1736*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1737*35238bceSAndroid Build Coastguard Worker });
1738*35238bceSAndroid Build Coastguard Worker
1739*35238bceSAndroid Build Coastguard Worker // glTexParameteri
1740*35238bceSAndroid Build Coastguard Worker
1741*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texparameteri, "Invalid glTexParameteri() usage", {
1742*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1743*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1744*35238bceSAndroid Build Coastguard Worker glTexParameteri(0, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
1745*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1746*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, 0, GL_LINEAR);
1747*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1748*35238bceSAndroid Build Coastguard Worker glTexParameteri(0, 0, GL_LINEAR);
1749*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1750*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1751*35238bceSAndroid Build Coastguard Worker
1752*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if params should have a defined symbolic constant "
1753*35238bceSAndroid Build Coastguard Worker "value (based on the value of pname) and does not.");
1754*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 0);
1755*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1756*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_REPEAT);
1757*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1758*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 0);
1759*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1760*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_NEAREST);
1761*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1762*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1763*35238bceSAndroid Build Coastguard Worker });
1764*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texparameteri_bind, "Invalid glTexParameteri() usage", {
1765*35238bceSAndroid Build Coastguard Worker GLuint texture;
1766*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1767*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1768*35238bceSAndroid Build Coastguard Worker
1769*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1770*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1771*35238bceSAndroid Build Coastguard Worker glTexParameteri(0, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
1772*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1773*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, 0, GL_LINEAR);
1774*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1775*35238bceSAndroid Build Coastguard Worker glTexParameteri(0, 0, GL_LINEAR);
1776*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1777*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1778*35238bceSAndroid Build Coastguard Worker
1779*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if params should have a defined symbolic constant "
1780*35238bceSAndroid Build Coastguard Worker "value (based on the value of pname) and does not.");
1781*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 0);
1782*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1783*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_REPEAT);
1784*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1785*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 0);
1786*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1787*35238bceSAndroid Build Coastguard Worker glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_NEAREST);
1788*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1789*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1790*35238bceSAndroid Build Coastguard Worker
1791*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1792*35238bceSAndroid Build Coastguard Worker });
1793*35238bceSAndroid Build Coastguard Worker
1794*35238bceSAndroid Build Coastguard Worker // glTexParameterf
1795*35238bceSAndroid Build Coastguard Worker
1796*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texparameterf, "Invalid glTexParameterf() usage", {
1797*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1798*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1799*35238bceSAndroid Build Coastguard Worker glTexParameterf(0, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
1800*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1801*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, 0, GL_LINEAR);
1802*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1803*35238bceSAndroid Build Coastguard Worker glTexParameterf(0, 0, GL_LINEAR);
1804*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1805*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1806*35238bceSAndroid Build Coastguard Worker
1807*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if params should have a defined symbolic constant "
1808*35238bceSAndroid Build Coastguard Worker "value (based on the value of pname) and does not.");
1809*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 0);
1810*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1811*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_REPEAT);
1812*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1813*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 0);
1814*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1815*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_NEAREST);
1816*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1817*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1818*35238bceSAndroid Build Coastguard Worker });
1819*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texparameterf_bind, "Invalid glTexParameterf() usage", {
1820*35238bceSAndroid Build Coastguard Worker GLuint texture;
1821*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1822*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1823*35238bceSAndroid Build Coastguard Worker
1824*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1825*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1826*35238bceSAndroid Build Coastguard Worker glTexParameterf(0, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
1827*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1828*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, 0, GL_LINEAR);
1829*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1830*35238bceSAndroid Build Coastguard Worker glTexParameterf(0, 0, GL_LINEAR);
1831*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1832*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1833*35238bceSAndroid Build Coastguard Worker
1834*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if params should have a defined symbolic constant "
1835*35238bceSAndroid Build Coastguard Worker "value (based on the value of pname) and does not.");
1836*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 0);
1837*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1838*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_REPEAT);
1839*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1840*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 0);
1841*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1842*35238bceSAndroid Build Coastguard Worker glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_NEAREST);
1843*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1844*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1845*35238bceSAndroid Build Coastguard Worker
1846*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1847*35238bceSAndroid Build Coastguard Worker });
1848*35238bceSAndroid Build Coastguard Worker
1849*35238bceSAndroid Build Coastguard Worker // glTexParameteriv
1850*35238bceSAndroid Build Coastguard Worker
1851*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texparameteriv, "Invalid glTexParameteriv() usage", {
1852*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1853*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1854*35238bceSAndroid Build Coastguard Worker GLint params[1] = {GL_LINEAR};
1855*35238bceSAndroid Build Coastguard Worker glTexParameteriv(0, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
1856*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1857*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, 0, ¶ms[0]);
1858*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1859*35238bceSAndroid Build Coastguard Worker glTexParameteriv(0, 0, ¶ms[0]);
1860*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1861*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1862*35238bceSAndroid Build Coastguard Worker
1863*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if params should have a defined symbolic constant "
1864*35238bceSAndroid Build Coastguard Worker "value (based on the value of pname) and does not.");
1865*35238bceSAndroid Build Coastguard Worker params[0] = 0;
1866*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
1867*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1868*35238bceSAndroid Build Coastguard Worker params[0] = GL_REPEAT;
1869*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
1870*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1871*35238bceSAndroid Build Coastguard Worker params[0] = 0;
1872*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ¶ms[0]);
1873*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1874*35238bceSAndroid Build Coastguard Worker params[0] = GL_NEAREST;
1875*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, ¶ms[0]);
1876*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1877*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1878*35238bceSAndroid Build Coastguard Worker });
1879*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texparameteriv_bind, "Invalid glTexParameteriv() usage", {
1880*35238bceSAndroid Build Coastguard Worker GLuint texture;
1881*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1882*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1883*35238bceSAndroid Build Coastguard Worker
1884*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1885*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1886*35238bceSAndroid Build Coastguard Worker GLint params[1] = {GL_LINEAR};
1887*35238bceSAndroid Build Coastguard Worker glTexParameteriv(0, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
1888*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1889*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, 0, ¶ms[0]);
1890*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1891*35238bceSAndroid Build Coastguard Worker glTexParameteriv(0, 0, ¶ms[0]);
1892*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1893*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1894*35238bceSAndroid Build Coastguard Worker
1895*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if params should have a defined symbolic constant "
1896*35238bceSAndroid Build Coastguard Worker "value (based on the value of pname) and does not.");
1897*35238bceSAndroid Build Coastguard Worker params[0] = 0;
1898*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
1899*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1900*35238bceSAndroid Build Coastguard Worker params[0] = GL_REPEAT;
1901*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
1902*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1903*35238bceSAndroid Build Coastguard Worker params[0] = 0;
1904*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ¶ms[0]);
1905*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1906*35238bceSAndroid Build Coastguard Worker params[0] = GL_NEAREST;
1907*35238bceSAndroid Build Coastguard Worker glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, ¶ms[0]);
1908*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1909*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1910*35238bceSAndroid Build Coastguard Worker
1911*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1912*35238bceSAndroid Build Coastguard Worker });
1913*35238bceSAndroid Build Coastguard Worker
1914*35238bceSAndroid Build Coastguard Worker // glTexParameterfv
1915*35238bceSAndroid Build Coastguard Worker
1916*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texparameterfv, "Invalid glTexParameterfv() usage", {
1917*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1918*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1919*35238bceSAndroid Build Coastguard Worker GLfloat params[1] = {GL_LINEAR};
1920*35238bceSAndroid Build Coastguard Worker glTexParameterfv(0, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
1921*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1922*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, 0, ¶ms[0]);
1923*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1924*35238bceSAndroid Build Coastguard Worker glTexParameterfv(0, 0, ¶ms[0]);
1925*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1926*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1927*35238bceSAndroid Build Coastguard Worker
1928*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if params should have a defined symbolic constant "
1929*35238bceSAndroid Build Coastguard Worker "value (based on the value of pname) and does not.");
1930*35238bceSAndroid Build Coastguard Worker params[0] = 0.0f;
1931*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
1932*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1933*35238bceSAndroid Build Coastguard Worker params[0] = GL_REPEAT;
1934*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
1935*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1936*35238bceSAndroid Build Coastguard Worker params[0] = 0.0f;
1937*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ¶ms[0]);
1938*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1939*35238bceSAndroid Build Coastguard Worker params[0] = GL_NEAREST;
1940*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, ¶ms[0]);
1941*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1942*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1943*35238bceSAndroid Build Coastguard Worker });
1944*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(texparameterfv_bind, "Invalid glTexParameterfv() usage", {
1945*35238bceSAndroid Build Coastguard Worker GLuint texture;
1946*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
1947*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
1948*35238bceSAndroid Build Coastguard Worker
1949*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
1950*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1951*35238bceSAndroid Build Coastguard Worker GLfloat params[1] = {GL_LINEAR};
1952*35238bceSAndroid Build Coastguard Worker glTexParameterfv(0, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
1953*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1954*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, 0, ¶ms[0]);
1955*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1956*35238bceSAndroid Build Coastguard Worker glTexParameterfv(0, 0, ¶ms[0]);
1957*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1958*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1959*35238bceSAndroid Build Coastguard Worker
1960*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if params should have a defined symbolic constant "
1961*35238bceSAndroid Build Coastguard Worker "value (based on the value of pname) and does not.");
1962*35238bceSAndroid Build Coastguard Worker params[0] = 0.0f;
1963*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
1964*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1965*35238bceSAndroid Build Coastguard Worker params[0] = GL_REPEAT;
1966*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
1967*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1968*35238bceSAndroid Build Coastguard Worker params[0] = 0.0f;
1969*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ¶ms[0]);
1970*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1971*35238bceSAndroid Build Coastguard Worker params[0] = GL_NEAREST;
1972*35238bceSAndroid Build Coastguard Worker glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, ¶ms[0]);
1973*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
1974*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
1975*35238bceSAndroid Build Coastguard Worker
1976*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
1977*35238bceSAndroid Build Coastguard Worker });
1978*35238bceSAndroid Build Coastguard Worker
1979*35238bceSAndroid Build Coastguard Worker // glCompressedTexSubImage2D
1980*35238bceSAndroid Build Coastguard Worker
1981*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_invalid_target, "Invalid glCompressedTexSubImage2D() usage", {
1982*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
1983*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
1984*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
1985*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
1986*35238bceSAndroid Build Coastguard Worker
1987*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
1988*35238bceSAndroid Build Coastguard Worker {
1989*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
1990*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
1991*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
1992*35238bceSAndroid Build Coastguard Worker }
1993*35238bceSAndroid Build Coastguard Worker else
1994*35238bceSAndroid Build Coastguard Worker {
1995*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
1996*35238bceSAndroid Build Coastguard Worker {
1997*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
1998*35238bceSAndroid Build Coastguard Worker
1999*35238bceSAndroid Build Coastguard Worker try
2000*35238bceSAndroid Build Coastguard Worker {
2001*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2002*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2003*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2004*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2005*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2006*35238bceSAndroid Build Coastguard Worker
2007*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2008*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2009*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2010*35238bceSAndroid Build Coastguard Worker
2011*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2012*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2013*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2014*35238bceSAndroid Build Coastguard Worker
2015*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is invalid.");
2016*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i])
2017*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2018*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2019*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(0, 0, 0, 0, 0, 0, accepted[i], 0, 0);
2020*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
2021*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2022*35238bceSAndroid Build Coastguard Worker
2023*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2024*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2025*35238bceSAndroid Build Coastguard Worker }
2026*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2027*35238bceSAndroid Build Coastguard Worker {
2028*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2029*35238bceSAndroid Build Coastguard Worker }
2030*35238bceSAndroid Build Coastguard Worker }
2031*35238bceSAndroid Build Coastguard Worker }
2032*35238bceSAndroid Build Coastguard Worker });
2033*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_neg_level_tex2d, "Invalid glCompressedTexSubImage2D() usage", {
2034*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
2035*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
2036*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
2037*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
2038*35238bceSAndroid Build Coastguard Worker
2039*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
2040*35238bceSAndroid Build Coastguard Worker {
2041*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
2042*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2043*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
2044*35238bceSAndroid Build Coastguard Worker }
2045*35238bceSAndroid Build Coastguard Worker else
2046*35238bceSAndroid Build Coastguard Worker {
2047*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
2048*35238bceSAndroid Build Coastguard Worker {
2049*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
2050*35238bceSAndroid Build Coastguard Worker
2051*35238bceSAndroid Build Coastguard Worker try
2052*35238bceSAndroid Build Coastguard Worker {
2053*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2054*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2055*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2056*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2057*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2058*35238bceSAndroid Build Coastguard Worker
2059*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2060*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2061*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2062*35238bceSAndroid Build Coastguard Worker
2063*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2064*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2065*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2066*35238bceSAndroid Build Coastguard Worker
2067*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
2068*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i])
2069*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2070*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2071*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2072*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, -1, 0, 0, 0, 0, accepted[i], 0, 0);
2073*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2074*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2075*35238bceSAndroid Build Coastguard Worker
2076*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2077*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2078*35238bceSAndroid Build Coastguard Worker }
2079*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2080*35238bceSAndroid Build Coastguard Worker {
2081*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2082*35238bceSAndroid Build Coastguard Worker }
2083*35238bceSAndroid Build Coastguard Worker }
2084*35238bceSAndroid Build Coastguard Worker }
2085*35238bceSAndroid Build Coastguard Worker });
2086*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_neg_level_cube, "Invalid glCompressedTexSubImage2D() usage", {
2087*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
2088*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
2089*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
2090*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
2091*35238bceSAndroid Build Coastguard Worker
2092*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
2093*35238bceSAndroid Build Coastguard Worker {
2094*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
2095*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2096*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
2097*35238bceSAndroid Build Coastguard Worker }
2098*35238bceSAndroid Build Coastguard Worker else
2099*35238bceSAndroid Build Coastguard Worker {
2100*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
2101*35238bceSAndroid Build Coastguard Worker {
2102*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
2103*35238bceSAndroid Build Coastguard Worker
2104*35238bceSAndroid Build Coastguard Worker try
2105*35238bceSAndroid Build Coastguard Worker {
2106*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2107*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2108*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2109*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2110*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2111*35238bceSAndroid Build Coastguard Worker
2112*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2113*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2114*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2115*35238bceSAndroid Build Coastguard Worker
2116*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2117*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2118*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2119*35238bceSAndroid Build Coastguard Worker
2120*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
2121*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i])
2122*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2123*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
2124*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2125*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, 0, 0, 0, 0, accepted[i], 0, 0);
2126*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2127*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
2128*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2129*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, 0, 0, 0, 0, accepted[i], 0, 0);
2130*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2131*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
2132*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2133*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, 0, 0, 0, 0, accepted[i], 0, 0);
2134*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2135*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
2136*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2137*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, 0, 0, 0, 0, accepted[i], 0, 0);
2138*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2139*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
2140*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2141*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, 0, 0, 0, 0, accepted[i], 0, 0);
2142*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2143*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
2144*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2145*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, 0, 0, 0, 0, accepted[i], 0, 0);
2146*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2147*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2148*35238bceSAndroid Build Coastguard Worker
2149*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2150*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2151*35238bceSAndroid Build Coastguard Worker }
2152*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2153*35238bceSAndroid Build Coastguard Worker {
2154*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2155*35238bceSAndroid Build Coastguard Worker }
2156*35238bceSAndroid Build Coastguard Worker }
2157*35238bceSAndroid Build Coastguard Worker }
2158*35238bceSAndroid Build Coastguard Worker });
2159*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_level_max_tex2d, "Invalid glCompressedTexSubImage2D() usage", {
2160*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
2161*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
2162*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
2163*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
2164*35238bceSAndroid Build Coastguard Worker
2165*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
2166*35238bceSAndroid Build Coastguard Worker {
2167*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
2168*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2169*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
2170*35238bceSAndroid Build Coastguard Worker }
2171*35238bceSAndroid Build Coastguard Worker else
2172*35238bceSAndroid Build Coastguard Worker {
2173*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
2174*35238bceSAndroid Build Coastguard Worker {
2175*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
2176*35238bceSAndroid Build Coastguard Worker
2177*35238bceSAndroid Build Coastguard Worker try
2178*35238bceSAndroid Build Coastguard Worker {
2179*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2180*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2181*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2182*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2183*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2184*35238bceSAndroid Build Coastguard Worker
2185*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2186*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2187*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2188*35238bceSAndroid Build Coastguard Worker
2189*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2190*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2191*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2192*35238bceSAndroid Build Coastguard Worker
2193*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
2194*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
2195*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i])
2196*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2197*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize =
2198*35238bceSAndroid Build Coastguard Worker deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE)) + 1;
2199*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2200*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2201*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
2202*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2203*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2204*35238bceSAndroid Build Coastguard Worker
2205*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2206*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2207*35238bceSAndroid Build Coastguard Worker }
2208*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2209*35238bceSAndroid Build Coastguard Worker {
2210*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2211*35238bceSAndroid Build Coastguard Worker }
2212*35238bceSAndroid Build Coastguard Worker }
2213*35238bceSAndroid Build Coastguard Worker }
2214*35238bceSAndroid Build Coastguard Worker });
2215*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_level_max_cube, "Invalid glCompressedTexSubImage2D() usage", {
2216*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
2217*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
2218*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
2219*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
2220*35238bceSAndroid Build Coastguard Worker
2221*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
2222*35238bceSAndroid Build Coastguard Worker {
2223*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
2224*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2225*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
2226*35238bceSAndroid Build Coastguard Worker }
2227*35238bceSAndroid Build Coastguard Worker else
2228*35238bceSAndroid Build Coastguard Worker {
2229*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
2230*35238bceSAndroid Build Coastguard Worker {
2231*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
2232*35238bceSAndroid Build Coastguard Worker
2233*35238bceSAndroid Build Coastguard Worker try
2234*35238bceSAndroid Build Coastguard Worker {
2235*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2236*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2237*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2238*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2239*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2240*35238bceSAndroid Build Coastguard Worker
2241*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2242*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2243*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2244*35238bceSAndroid Build Coastguard Worker
2245*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2246*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2247*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2248*35238bceSAndroid Build Coastguard Worker
2249*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
2250*35238bceSAndroid Build Coastguard Worker "",
2251*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
2252*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i])
2253*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2254*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize =
2255*35238bceSAndroid Build Coastguard Worker deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
2256*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2257*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2258*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
2259*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2260*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
2261*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2262*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxTextureSize, 0, 0, 0, 0,
2263*35238bceSAndroid Build Coastguard Worker accepted[i], 0, 0);
2264*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2265*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
2266*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2267*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxTextureSize, 0, 0, 0, 0,
2268*35238bceSAndroid Build Coastguard Worker accepted[i], 0, 0);
2269*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2270*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
2271*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2272*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxTextureSize, 0, 0, 0, 0,
2273*35238bceSAndroid Build Coastguard Worker accepted[i], 0, 0);
2274*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2275*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
2276*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2277*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxTextureSize, 0, 0, 0, 0,
2278*35238bceSAndroid Build Coastguard Worker accepted[i], 0, 0);
2279*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2280*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
2281*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2282*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxTextureSize, 0, 0, 0, 0,
2283*35238bceSAndroid Build Coastguard Worker accepted[i], 0, 0);
2284*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2285*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
2286*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2287*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxTextureSize, 0, 0, 0, 0,
2288*35238bceSAndroid Build Coastguard Worker accepted[i], 0, 0);
2289*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2290*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2291*35238bceSAndroid Build Coastguard Worker
2292*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2293*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2294*35238bceSAndroid Build Coastguard Worker }
2295*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2296*35238bceSAndroid Build Coastguard Worker {
2297*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2298*35238bceSAndroid Build Coastguard Worker }
2299*35238bceSAndroid Build Coastguard Worker }
2300*35238bceSAndroid Build Coastguard Worker }
2301*35238bceSAndroid Build Coastguard Worker });
2302*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_neg_offset, "Invalid glCompressedTexSubImage2D() usage", {
2303*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
2304*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
2305*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
2306*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
2307*35238bceSAndroid Build Coastguard Worker
2308*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
2309*35238bceSAndroid Build Coastguard Worker {
2310*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
2311*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2312*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
2313*35238bceSAndroid Build Coastguard Worker }
2314*35238bceSAndroid Build Coastguard Worker else
2315*35238bceSAndroid Build Coastguard Worker {
2316*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
2317*35238bceSAndroid Build Coastguard Worker {
2318*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
2319*35238bceSAndroid Build Coastguard Worker
2320*35238bceSAndroid Build Coastguard Worker try
2321*35238bceSAndroid Build Coastguard Worker {
2322*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2323*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2324*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2325*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2326*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2327*35238bceSAndroid Build Coastguard Worker
2328*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2329*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2330*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2331*35238bceSAndroid Build Coastguard Worker
2332*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2333*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2334*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2335*35238bceSAndroid Build Coastguard Worker
2336*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if xoffset or yoffset are negative.");
2337*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i])
2338*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2339*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2340*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2341*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, -1, 0, 0, 0, accepted[i], 0, 0);
2342*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2343*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2344*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2345*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, -1, 0, 0, accepted[i], 0, 0);
2346*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2347*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2348*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2349*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, -1, -1, 0, 0, accepted[i], 0, 0);
2350*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2351*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2352*35238bceSAndroid Build Coastguard Worker
2353*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2354*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2355*35238bceSAndroid Build Coastguard Worker }
2356*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2357*35238bceSAndroid Build Coastguard Worker {
2358*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2359*35238bceSAndroid Build Coastguard Worker }
2360*35238bceSAndroid Build Coastguard Worker }
2361*35238bceSAndroid Build Coastguard Worker }
2362*35238bceSAndroid Build Coastguard Worker });
2363*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_offset_allowed, "Invalid glCompressedTexSubImage2D() usage", {
2364*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
2365*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
2366*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
2367*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
2368*35238bceSAndroid Build Coastguard Worker
2369*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
2370*35238bceSAndroid Build Coastguard Worker {
2371*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
2372*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2373*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
2374*35238bceSAndroid Build Coastguard Worker }
2375*35238bceSAndroid Build Coastguard Worker else
2376*35238bceSAndroid Build Coastguard Worker {
2377*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
2378*35238bceSAndroid Build Coastguard Worker {
2379*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
2380*35238bceSAndroid Build Coastguard Worker
2381*35238bceSAndroid Build Coastguard Worker try
2382*35238bceSAndroid Build Coastguard Worker {
2383*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2384*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2385*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2386*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2387*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2388*35238bceSAndroid Build Coastguard Worker
2389*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2390*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2391*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2392*35238bceSAndroid Build Coastguard Worker
2393*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2394*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2395*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2396*35238bceSAndroid Build Coastguard Worker
2397*35238bceSAndroid Build Coastguard Worker uint32_t maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
2398*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if xoffset + width > texture_width or "
2399*35238bceSAndroid Build Coastguard Worker "yoffset + height > texture_height.");
2400*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i])
2401*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2402*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2403*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2404*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, maxTextureSize, 0, 0, 0, accepted[i], 0, 0);
2405*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2406*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2407*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2408*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, maxTextureSize, 0, 0, accepted[i], 0, 0);
2409*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2410*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2411*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2412*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, maxTextureSize, maxTextureSize, 0, 0, accepted[i], 0,
2413*35238bceSAndroid Build Coastguard Worker 0);
2414*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2415*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2416*35238bceSAndroid Build Coastguard Worker
2417*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2418*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2419*35238bceSAndroid Build Coastguard Worker }
2420*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2421*35238bceSAndroid Build Coastguard Worker {
2422*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2423*35238bceSAndroid Build Coastguard Worker }
2424*35238bceSAndroid Build Coastguard Worker }
2425*35238bceSAndroid Build Coastguard Worker }
2426*35238bceSAndroid Build Coastguard Worker });
2427*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_neg_wdt_hgt, "Invalid glCompressedTexSubImage2D() usage", {
2428*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
2429*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
2430*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
2431*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
2432*35238bceSAndroid Build Coastguard Worker
2433*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
2434*35238bceSAndroid Build Coastguard Worker {
2435*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
2436*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2437*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
2438*35238bceSAndroid Build Coastguard Worker }
2439*35238bceSAndroid Build Coastguard Worker else
2440*35238bceSAndroid Build Coastguard Worker {
2441*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
2442*35238bceSAndroid Build Coastguard Worker {
2443*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
2444*35238bceSAndroid Build Coastguard Worker
2445*35238bceSAndroid Build Coastguard Worker try
2446*35238bceSAndroid Build Coastguard Worker {
2447*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2448*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2449*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2450*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2451*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2452*35238bceSAndroid Build Coastguard Worker
2453*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2454*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2455*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2456*35238bceSAndroid Build Coastguard Worker
2457*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2458*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2459*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2460*35238bceSAndroid Build Coastguard Worker
2461*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
2462*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i])
2463*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2464*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2465*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2466*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, 0, accepted[i], 0, 0);
2467*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2468*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2469*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2470*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, -1, accepted[i], 0, 0);
2471*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2472*35238bceSAndroid Build Coastguard Worker //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
2473*35238bceSAndroid Build Coastguard Worker //expectError(GL_NO_ERROR);
2474*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, -1, accepted[i], 0, 0);
2475*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2476*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2477*35238bceSAndroid Build Coastguard Worker
2478*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2479*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2480*35238bceSAndroid Build Coastguard Worker }
2481*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2482*35238bceSAndroid Build Coastguard Worker {
2483*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2484*35238bceSAndroid Build Coastguard Worker }
2485*35238bceSAndroid Build Coastguard Worker }
2486*35238bceSAndroid Build Coastguard Worker }
2487*35238bceSAndroid Build Coastguard Worker });
2488*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(compressedtexsubimage2d_invalid_size, "Invalid glCompressedTexImage2D() usage", {
2489*35238bceSAndroid Build Coastguard Worker vector<int32_t> supported;
2490*35238bceSAndroid Build Coastguard Worker vector<int32_t> accepted;
2491*35238bceSAndroid Build Coastguard Worker getSupportedExtensions(GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_COMPRESSED_TEXTURE_FORMATS, supported);
2492*35238bceSAndroid Build Coastguard Worker getCompressedTexSubImage2DFormat(supported, accepted);
2493*35238bceSAndroid Build Coastguard Worker
2494*35238bceSAndroid Build Coastguard Worker if (accepted.empty())
2495*35238bceSAndroid Build Coastguard Worker {
2496*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// No suitable compressed formats found, cannot evaluate test."
2497*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2498*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "No suitable compressed formats found");
2499*35238bceSAndroid Build Coastguard Worker }
2500*35238bceSAndroid Build Coastguard Worker else
2501*35238bceSAndroid Build Coastguard Worker {
2502*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)accepted.size(); i++)
2503*35238bceSAndroid Build Coastguard Worker {
2504*35238bceSAndroid Build Coastguard Worker const int32_t glFormat = accepted[i];
2505*35238bceSAndroid Build Coastguard Worker
2506*35238bceSAndroid Build Coastguard Worker try
2507*35238bceSAndroid Build Coastguard Worker {
2508*35238bceSAndroid Build Coastguard Worker const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
2509*35238bceSAndroid Build Coastguard Worker const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
2510*35238bceSAndroid Build Coastguard Worker const int blockSize = tcu::getBlockSize(format);
2511*35238bceSAndroid Build Coastguard Worker const std::vector<uint8_t> data(blockSize, 0);
2512*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
2513*35238bceSAndroid Build Coastguard Worker
2514*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
2515*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
2516*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2517*35238bceSAndroid Build Coastguard Worker
2518*35238bceSAndroid Build Coastguard Worker glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0,
2519*35238bceSAndroid Build Coastguard Worker blockSize, DE_NULL);
2520*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2521*35238bceSAndroid Build Coastguard Worker
2522*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
2523*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if imageSize is not consistent with the format, dimensions, "
2524*35238bceSAndroid Build Coastguard Worker "and contents of the specified compressed image data.");
2525*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Using texture format " << tcu::toHex(glFormat)
2526*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
2527*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x(), blockPixelSize.y(), glFormat,
2528*35238bceSAndroid Build Coastguard Worker -1, &data[0]);
2529*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2530*35238bceSAndroid Build Coastguard Worker
2531*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x(), blockPixelSize.y(), glFormat,
2532*35238bceSAndroid Build Coastguard Worker blockSize / 2, &data[0]);
2533*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2534*35238bceSAndroid Build Coastguard Worker
2535*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x(), blockPixelSize.y(), glFormat,
2536*35238bceSAndroid Build Coastguard Worker blockSize * 2, &data[0]);
2537*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2538*35238bceSAndroid Build Coastguard Worker
2539*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x(), blockPixelSize.y() * 2,
2540*35238bceSAndroid Build Coastguard Worker glFormat, blockSize, &data[0]);
2541*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2542*35238bceSAndroid Build Coastguard Worker
2543*35238bceSAndroid Build Coastguard Worker glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x() * 2, blockPixelSize.y(),
2544*35238bceSAndroid Build Coastguard Worker glFormat, blockSize, &data[0]);
2545*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
2546*35238bceSAndroid Build Coastguard Worker
2547*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
2548*35238bceSAndroid Build Coastguard Worker
2549*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
2550*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
2551*35238bceSAndroid Build Coastguard Worker }
2552*35238bceSAndroid Build Coastguard Worker catch (const tcu::InternalError &)
2553*35238bceSAndroid Build Coastguard Worker {
2554*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
2555*35238bceSAndroid Build Coastguard Worker }
2556*35238bceSAndroid Build Coastguard Worker }
2557*35238bceSAndroid Build Coastguard Worker }
2558*35238bceSAndroid Build Coastguard Worker });
2559*35238bceSAndroid Build Coastguard Worker }
2560*35238bceSAndroid Build Coastguard Worker
2561*35238bceSAndroid Build Coastguard Worker } // namespace Functional
2562*35238bceSAndroid Build Coastguard Worker } // namespace gles2
2563*35238bceSAndroid Build Coastguard Worker } // namespace deqp
2564