1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL ES 3.1 Module
3*35238bceSAndroid Build Coastguard Worker * -------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker *
5*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker *
7*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker *
11*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker *
13*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker *
19*35238bceSAndroid Build Coastguard Worker *//*!
20*35238bceSAndroid Build Coastguard Worker * \file
21*35238bceSAndroid Build Coastguard Worker * \brief Negative Texture API tests.
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "es31fNegativeTextureApiTests.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "es31fNegativeTestShared.hpp"
26*35238bceSAndroid Build Coastguard Worker
27*35238bceSAndroid Build Coastguard Worker #include "gluCallLogWrapper.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "gluContextInfo.hpp"
29*35238bceSAndroid Build Coastguard Worker #include "gluRenderContext.hpp"
30*35238bceSAndroid Build Coastguard Worker
31*35238bceSAndroid Build Coastguard Worker #include "glwDefs.hpp"
32*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp"
33*35238bceSAndroid Build Coastguard Worker
34*35238bceSAndroid Build Coastguard Worker namespace deqp
35*35238bceSAndroid Build Coastguard Worker {
36*35238bceSAndroid Build Coastguard Worker namespace gles31
37*35238bceSAndroid Build Coastguard Worker {
38*35238bceSAndroid Build Coastguard Worker namespace Functional
39*35238bceSAndroid Build Coastguard Worker {
40*35238bceSAndroid Build Coastguard Worker namespace NegativeTestShared
41*35238bceSAndroid Build Coastguard Worker {
42*35238bceSAndroid Build Coastguard Worker
43*35238bceSAndroid Build Coastguard Worker using glu::CallLogWrapper;
44*35238bceSAndroid Build Coastguard Worker using tcu::TestLog;
45*35238bceSAndroid Build Coastguard Worker using namespace glw;
46*35238bceSAndroid Build Coastguard Worker
divRoundUp(int a,int b)47*35238bceSAndroid Build Coastguard Worker static inline int divRoundUp(int a, int b)
48*35238bceSAndroid Build Coastguard Worker {
49*35238bceSAndroid Build Coastguard Worker return a / b + (a % b != 0 ? 1 : 0);
50*35238bceSAndroid Build Coastguard Worker }
51*35238bceSAndroid Build Coastguard Worker
etc2DataSize(int width,int height)52*35238bceSAndroid Build Coastguard Worker static inline int etc2DataSize(int width, int height)
53*35238bceSAndroid Build Coastguard Worker {
54*35238bceSAndroid Build Coastguard Worker return (int)(divRoundUp(width, 4) * divRoundUp(height, 4) * sizeof(uint64_t));
55*35238bceSAndroid Build Coastguard Worker }
56*35238bceSAndroid Build Coastguard Worker
etc2EacDataSize(int width,int height)57*35238bceSAndroid Build Coastguard Worker static inline int etc2EacDataSize(int width, int height)
58*35238bceSAndroid Build Coastguard Worker {
59*35238bceSAndroid Build Coastguard Worker return 2 * etc2DataSize(width, height);
60*35238bceSAndroid Build Coastguard Worker }
61*35238bceSAndroid Build Coastguard Worker
cubeFaceToGLFace(tcu::CubeFace face)62*35238bceSAndroid Build Coastguard Worker static uint32_t cubeFaceToGLFace(tcu::CubeFace face)
63*35238bceSAndroid Build Coastguard Worker {
64*35238bceSAndroid Build Coastguard Worker switch (face)
65*35238bceSAndroid Build Coastguard Worker {
66*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_NEGATIVE_X:
67*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_NEGATIVE_X;
68*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_POSITIVE_X:
69*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_POSITIVE_X;
70*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_NEGATIVE_Y:
71*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y;
72*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_POSITIVE_Y:
73*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_POSITIVE_Y;
74*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_NEGATIVE_Z:
75*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z;
76*35238bceSAndroid Build Coastguard Worker case tcu::CUBEFACE_POSITIVE_Z:
77*35238bceSAndroid Build Coastguard Worker return GL_TEXTURE_CUBE_MAP_POSITIVE_Z;
78*35238bceSAndroid Build Coastguard Worker default:
79*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
80*35238bceSAndroid Build Coastguard Worker return GL_NONE;
81*35238bceSAndroid Build Coastguard Worker }
82*35238bceSAndroid Build Coastguard Worker }
83*35238bceSAndroid Build Coastguard Worker
supportsES32orGL45(NegativeTestContext & ctx)84*35238bceSAndroid Build Coastguard Worker static bool supportsES32orGL45(NegativeTestContext &ctx)
85*35238bceSAndroid Build Coastguard Worker {
86*35238bceSAndroid Build Coastguard Worker return contextSupports(ctx.getRenderContext().getType(), glu::ApiType::es(3, 2)) ||
87*35238bceSAndroid Build Coastguard Worker contextSupports(ctx.getRenderContext().getType(), glu::ApiType::core(4, 5));
88*35238bceSAndroid Build Coastguard Worker }
89*35238bceSAndroid Build Coastguard Worker
90*35238bceSAndroid Build Coastguard Worker #define FOR_CUBE_FACES(FACE_GL_VAR, BODY) \
91*35238bceSAndroid Build Coastguard Worker do \
92*35238bceSAndroid Build Coastguard Worker { \
93*35238bceSAndroid Build Coastguard Worker for (int faceIterTcu = 0; faceIterTcu < tcu::CUBEFACE_LAST; faceIterTcu++) \
94*35238bceSAndroid Build Coastguard Worker { \
95*35238bceSAndroid Build Coastguard Worker const GLenum FACE_GL_VAR = cubeFaceToGLFace((tcu::CubeFace)faceIterTcu); \
96*35238bceSAndroid Build Coastguard Worker BODY \
97*35238bceSAndroid Build Coastguard Worker } \
98*35238bceSAndroid Build Coastguard Worker } while (false)
99*35238bceSAndroid Build Coastguard Worker
100*35238bceSAndroid Build Coastguard Worker // glActiveTexture
101*35238bceSAndroid Build Coastguard Worker
activetexture(NegativeTestContext & ctx)102*35238bceSAndroid Build Coastguard Worker void activetexture(NegativeTestContext &ctx)
103*35238bceSAndroid Build Coastguard Worker {
104*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if texture is not one of GL_TEXTUREi, where i ranges from 0 to "
105*35238bceSAndroid Build Coastguard Worker "(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1).");
106*35238bceSAndroid Build Coastguard Worker ctx.glActiveTexture(-1);
107*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
108*35238bceSAndroid Build Coastguard Worker int numMaxTextureUnits = ctx.getInteger(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS);
109*35238bceSAndroid Build Coastguard Worker ctx.glActiveTexture(GL_TEXTURE0 + numMaxTextureUnits);
110*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
111*35238bceSAndroid Build Coastguard Worker ctx.endSection();
112*35238bceSAndroid Build Coastguard Worker }
113*35238bceSAndroid Build Coastguard Worker
114*35238bceSAndroid Build Coastguard Worker // glBindTexture
115*35238bceSAndroid Build Coastguard Worker
bindtexture(NegativeTestContext & ctx)116*35238bceSAndroid Build Coastguard Worker void bindtexture(NegativeTestContext &ctx)
117*35238bceSAndroid Build Coastguard Worker {
118*35238bceSAndroid Build Coastguard Worker GLuint texture[5];
119*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(5, texture);
120*35238bceSAndroid Build Coastguard Worker
121*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is not one of the allowable values.");
122*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(0, 1);
123*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
124*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_FRAMEBUFFER, 1);
125*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
126*35238bceSAndroid Build Coastguard Worker ctx.endSection();
127*35238bceSAndroid Build Coastguard Worker
128*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if texture was previously created with a target that doesn't "
129*35238bceSAndroid Build Coastguard Worker "match that of target.");
130*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture[0]);
131*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
132*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, texture[0]);
133*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
134*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture[0]);
135*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
136*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture[0]);
137*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
138*35238bceSAndroid Build Coastguard Worker
139*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, texture[1]);
140*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
141*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture[1]);
142*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
143*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture[1]);
144*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
145*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture[1]);
146*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
147*35238bceSAndroid Build Coastguard Worker
148*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture[2]);
149*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
150*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture[2]);
151*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
152*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, texture[2]);
153*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
154*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture[2]);
155*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
156*35238bceSAndroid Build Coastguard Worker
157*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture[3]);
158*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
159*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture[3]);
160*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
161*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, texture[3]);
162*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
163*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture[3]);
164*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
165*35238bceSAndroid Build Coastguard Worker
166*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
167*35238bceSAndroid Build Coastguard Worker {
168*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, texture[0]);
169*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
170*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, texture[1]);
171*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
172*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, texture[2]);
173*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
174*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, texture[3]);
175*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
176*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, texture[4]);
177*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
178*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture[4]);
179*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
180*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, texture[4]);
181*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
182*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture[4]);
183*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
184*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture[4]);
185*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
186*35238bceSAndroid Build Coastguard Worker }
187*35238bceSAndroid Build Coastguard Worker ctx.endSection();
188*35238bceSAndroid Build Coastguard Worker
189*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(5, texture);
190*35238bceSAndroid Build Coastguard Worker }
191*35238bceSAndroid Build Coastguard Worker
192*35238bceSAndroid Build Coastguard Worker // glCompressedTexImage2D
193*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_invalid_target(NegativeTestContext & ctx)194*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_invalid_target(NegativeTestContext &ctx)
195*35238bceSAndroid Build Coastguard Worker {
196*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
197*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
198*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
199*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
200*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
201*35238bceSAndroid Build Coastguard Worker ctx.endSection();
202*35238bceSAndroid Build Coastguard Worker }
203*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_invalid_format(NegativeTestContext & ctx)204*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_invalid_format(NegativeTestContext &ctx)
205*35238bceSAndroid Build Coastguard Worker {
206*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if internalformat is not a supported format returned in "
207*35238bceSAndroid Build Coastguard Worker "GL_COMPRESSED_TEXTURE_FORMATS.");
208*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0);
209*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
210*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 0, 0, 0);
211*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
212*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 0, 0, 0, 0, 0);
213*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
214*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 0, 0, 0, 0, 0, 0);
215*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
216*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, 0, 0, 0, 0, 0, 0);
217*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
218*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, 0, 0, 0, 0, 0, 0);
219*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
220*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 0, 0, 0, 0, 0, 0);
221*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
222*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, 0, 0, 0, 0, 0, 0);
223*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
224*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, 0, 0, 0, 0, 0, 0);
225*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
226*35238bceSAndroid Build Coastguard Worker ctx.endSection();
227*35238bceSAndroid Build Coastguard Worker }
228*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_neg_level(NegativeTestContext & ctx)229*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_neg_level(NegativeTestContext &ctx)
230*35238bceSAndroid Build Coastguard Worker {
231*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
232*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, -1, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
233*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
234*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
235*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
236*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
237*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
238*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
239*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
240*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
241*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
242*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
243*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
244*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
245*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
246*35238bceSAndroid Build Coastguard Worker ctx.endSection();
247*35238bceSAndroid Build Coastguard Worker }
248*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_max_level(NegativeTestContext & ctx)249*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_max_level(NegativeTestContext &ctx)
250*35238bceSAndroid Build Coastguard Worker {
251*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
252*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE) for a 2d texture target.");
253*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
254*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, log2MaxTextureSize, GL_COMPRESSED_RGB8_ETC2, 16, 16, 0,
255*35238bceSAndroid Build Coastguard Worker etc2DataSize(16, 16), 0);
256*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
257*35238bceSAndroid Build Coastguard Worker ctx.endSection();
258*35238bceSAndroid Build Coastguard Worker
259*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE) for a "
260*35238bceSAndroid Build Coastguard Worker "cubemap target.");
261*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxCubemapSize = deLog2Floor32(ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
262*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxCubemapSize, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16,
263*35238bceSAndroid Build Coastguard Worker 0, etc2EacDataSize(16, 16), 0);
264*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
265*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxCubemapSize, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16,
266*35238bceSAndroid Build Coastguard Worker 0, etc2EacDataSize(16, 16), 0);
267*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
268*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxCubemapSize, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16,
269*35238bceSAndroid Build Coastguard Worker 0, etc2EacDataSize(16, 16), 0);
270*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
271*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxCubemapSize, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16,
272*35238bceSAndroid Build Coastguard Worker 0, etc2EacDataSize(16, 16), 0);
273*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
274*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxCubemapSize, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16,
275*35238bceSAndroid Build Coastguard Worker 0, etc2EacDataSize(16, 16), 0);
276*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
277*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxCubemapSize, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16,
278*35238bceSAndroid Build Coastguard Worker 0, etc2EacDataSize(16, 16), 0);
279*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
280*35238bceSAndroid Build Coastguard Worker ctx.endSection();
281*35238bceSAndroid Build Coastguard Worker }
282*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_neg_width_height(NegativeTestContext & ctx)283*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_neg_width_height(NegativeTestContext &ctx)
284*35238bceSAndroid Build Coastguard Worker {
285*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is less than 0.");
286*35238bceSAndroid Build Coastguard Worker
287*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_2D target");
288*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0, 0, 0, 0);
289*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
290*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, -1, 0, 0, 0);
291*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
292*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, -1, 0, 0, 0);
293*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
294*35238bceSAndroid Build Coastguard Worker ctx.endSection();
295*35238bceSAndroid Build Coastguard Worker
296*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
297*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0, 0, 0, 0);
298*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
299*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, -1, 0, 0, 0);
300*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
301*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, -1, 0, 0, 0);
302*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
303*35238bceSAndroid Build Coastguard Worker ctx.endSection();
304*35238bceSAndroid Build Coastguard Worker
305*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
306*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0, 0, 0, 0);
307*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
308*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, -1, 0, 0, 0);
309*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
310*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, -1, 0, 0, 0);
311*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
312*35238bceSAndroid Build Coastguard Worker ctx.endSection();
313*35238bceSAndroid Build Coastguard Worker
314*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Z target");
315*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0, 0, 0, 0);
316*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
317*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, -1, 0, 0, 0);
318*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
319*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, -1, 0, 0, 0);
320*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
321*35238bceSAndroid Build Coastguard Worker ctx.endSection();
322*35238bceSAndroid Build Coastguard Worker
323*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
324*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0, 0, 0, 0);
325*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
326*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, -1, 0, 0, 0);
327*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
328*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, -1, 0, 0, 0);
329*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
330*35238bceSAndroid Build Coastguard Worker ctx.endSection();
331*35238bceSAndroid Build Coastguard Worker
332*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
333*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0, 0, 0, 0);
334*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
335*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, -1, 0, 0, 0);
336*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
337*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, -1, 0, 0, 0);
338*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
339*35238bceSAndroid Build Coastguard Worker ctx.endSection();
340*35238bceSAndroid Build Coastguard Worker
341*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
342*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0, 0, 0, 0);
343*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
344*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, -1, 0, 0, 0);
345*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
346*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, -1, 0, 0, 0);
347*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
348*35238bceSAndroid Build Coastguard Worker ctx.endSection();
349*35238bceSAndroid Build Coastguard Worker
350*35238bceSAndroid Build Coastguard Worker ctx.endSection();
351*35238bceSAndroid Build Coastguard Worker }
352*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_max_width_height(NegativeTestContext & ctx)353*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_max_width_height(NegativeTestContext &ctx)
354*35238bceSAndroid Build Coastguard Worker {
355*35238bceSAndroid Build Coastguard Worker int maxTextureSize = ctx.getInteger(GL_MAX_TEXTURE_SIZE) + 1;
356*35238bceSAndroid Build Coastguard Worker int maxCubemapSize = ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
357*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_TEXTURE_SIZE.");
358*35238bceSAndroid Build Coastguard Worker
359*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_2D target");
360*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, 1, 0,
361*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(maxTextureSize, 1), 0);
362*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
363*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 1, maxTextureSize, 0,
364*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(1, maxTextureSize), 0);
365*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
366*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, maxTextureSize, 0,
367*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(maxTextureSize, maxTextureSize), 0);
368*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
369*35238bceSAndroid Build Coastguard Worker ctx.endSection();
370*35238bceSAndroid Build Coastguard Worker
371*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
372*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize, 1, 0,
373*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(maxCubemapSize, 1), 0);
374*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
375*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 1, maxCubemapSize, 0,
376*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(1, maxCubemapSize), 0);
377*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
378*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize,
379*35238bceSAndroid Build Coastguard Worker maxCubemapSize, 0, etc2EacDataSize(maxCubemapSize, maxCubemapSize), 0);
380*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
381*35238bceSAndroid Build Coastguard Worker ctx.endSection();
382*35238bceSAndroid Build Coastguard Worker
383*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
384*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize, 1, 0,
385*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(maxCubemapSize, 1), 0);
386*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
387*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 1, maxCubemapSize, 0,
388*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(1, maxCubemapSize), 0);
389*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
390*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize,
391*35238bceSAndroid Build Coastguard Worker maxCubemapSize, 0, etc2EacDataSize(maxCubemapSize, maxCubemapSize), 0);
392*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
393*35238bceSAndroid Build Coastguard Worker ctx.endSection();
394*35238bceSAndroid Build Coastguard Worker
395*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Z target");
396*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize, 1, 0,
397*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(maxCubemapSize, 1), 0);
398*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
399*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 1, maxCubemapSize, 0,
400*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(1, maxCubemapSize), 0);
401*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
402*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize,
403*35238bceSAndroid Build Coastguard Worker maxCubemapSize, 0, etc2EacDataSize(maxCubemapSize, maxCubemapSize), 0);
404*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
405*35238bceSAndroid Build Coastguard Worker ctx.endSection();
406*35238bceSAndroid Build Coastguard Worker
407*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
408*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize, 1, 0,
409*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(maxCubemapSize, 1), 0);
410*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
411*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 1, maxCubemapSize, 0,
412*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(1, maxCubemapSize), 0);
413*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
414*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize,
415*35238bceSAndroid Build Coastguard Worker maxCubemapSize, 0, etc2EacDataSize(maxCubemapSize, maxCubemapSize), 0);
416*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
417*35238bceSAndroid Build Coastguard Worker ctx.endSection();
418*35238bceSAndroid Build Coastguard Worker
419*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
420*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize, 1, 0,
421*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(maxCubemapSize, 1), 0);
422*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
423*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 1, maxCubemapSize, 0,
424*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(1, maxCubemapSize), 0);
425*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
426*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize,
427*35238bceSAndroid Build Coastguard Worker maxCubemapSize, 0, etc2EacDataSize(maxCubemapSize, maxCubemapSize), 0);
428*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
429*35238bceSAndroid Build Coastguard Worker ctx.endSection();
430*35238bceSAndroid Build Coastguard Worker
431*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
432*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize, 1, 0,
433*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(maxCubemapSize, 1), 0);
434*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
435*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 1, maxCubemapSize, 0,
436*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(1, maxCubemapSize), 0);
437*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
438*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxCubemapSize,
439*35238bceSAndroid Build Coastguard Worker maxCubemapSize, 0, etc2EacDataSize(maxCubemapSize, maxCubemapSize), 0);
440*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
441*35238bceSAndroid Build Coastguard Worker ctx.endSection();
442*35238bceSAndroid Build Coastguard Worker
443*35238bceSAndroid Build Coastguard Worker ctx.endSection();
444*35238bceSAndroid Build Coastguard Worker }
445*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_invalid_border(NegativeTestContext & ctx)446*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_invalid_border(NegativeTestContext &ctx)
447*35238bceSAndroid Build Coastguard Worker {
448*35238bceSAndroid Build Coastguard Worker bool isES = glu::isContextTypeES(ctx.getRenderContext().getType());
449*35238bceSAndroid Build Coastguard Worker GLenum error = isES ? GL_INVALID_VALUE : GL_INVALID_OPERATION;
450*35238bceSAndroid Build Coastguard Worker
451*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if border is not 0.");
452*35238bceSAndroid Build Coastguard Worker
453*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_2D target");
454*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 1, 0, 0);
455*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
456*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, -1, 0, 0);
457*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
458*35238bceSAndroid Build Coastguard Worker ctx.endSection();
459*35238bceSAndroid Build Coastguard Worker
460*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
461*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 1, 0, 0);
462*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
463*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, -1, 0, 0);
464*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
465*35238bceSAndroid Build Coastguard Worker ctx.endSection();
466*35238bceSAndroid Build Coastguard Worker
467*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
468*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 1, 0, 0);
469*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
470*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, -1, 0, 0);
471*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
472*35238bceSAndroid Build Coastguard Worker ctx.endSection();
473*35238bceSAndroid Build Coastguard Worker
474*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Z target");
475*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 1, 0, 0);
476*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
477*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, -1, 0, 0);
478*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
479*35238bceSAndroid Build Coastguard Worker ctx.endSection();
480*35238bceSAndroid Build Coastguard Worker
481*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
482*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 1, 0, 0);
483*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
484*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, -1, 0, 0);
485*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
486*35238bceSAndroid Build Coastguard Worker ctx.endSection();
487*35238bceSAndroid Build Coastguard Worker
488*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
489*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 1, 0, 0);
490*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
491*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, -1, 0, 0);
492*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
493*35238bceSAndroid Build Coastguard Worker ctx.endSection();
494*35238bceSAndroid Build Coastguard Worker
495*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
496*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 1, 0, 0);
497*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
498*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, -1, 0, 0);
499*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
500*35238bceSAndroid Build Coastguard Worker ctx.endSection();
501*35238bceSAndroid Build Coastguard Worker
502*35238bceSAndroid Build Coastguard Worker ctx.endSection();
503*35238bceSAndroid Build Coastguard Worker }
504*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_invalid_size(NegativeTestContext & ctx)505*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_invalid_size(NegativeTestContext &ctx)
506*35238bceSAndroid Build Coastguard Worker {
507*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if imageSize is not consistent with the format, dimensions, and "
508*35238bceSAndroid Build Coastguard Worker "contents of the specified compressed image data.");
509*35238bceSAndroid Build Coastguard Worker // Subtracting 1 to the imageSize field to deviate from the expected size. Removing the -1 would cause the imageSize to be correct.
510*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_R11_EAC, 1, 1, 0,
511*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 8 - 1, 0);
512*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
513*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SIGNED_R11_EAC, 1, 1, 0,
514*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 8 - 1, 0);
515*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
516*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RG11_EAC, 1, 1, 0,
517*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 16 - 1, 0);
518*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
519*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SIGNED_RG11_EAC, 1, 1, 0,
520*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 16 - 1, 0);
521*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
522*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB8_ETC2, 1, 1, 0,
523*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 8 - 1, 0);
524*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
525*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ETC2, 1, 1, 0,
526*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 8 - 1, 0);
527*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
528*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, 1, 1, 0,
529*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 8 - 1, 0);
530*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
531*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, 1, 1, 0,
532*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 8 - 1, 0);
533*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
534*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 1, 1, 0,
535*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 16 - 1, 0);
536*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
537*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, 1, 1, 0,
538*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 16 - 1, 0);
539*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
540*35238bceSAndroid Build Coastguard Worker
541*35238bceSAndroid Build Coastguard Worker if (contextSupports(ctx.getRenderContext().getType(), glu::ApiType::es(3, 2)) ||
542*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_KHR_texture_compression_astc_ldr"))
543*35238bceSAndroid Build Coastguard Worker {
544*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_4x4, 1, 1, 0,
545*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 16 - 1, 0);
546*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
547*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_5x4, 1, 1, 0,
548*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 5) * divRoundUp(1, 4) * 16 - 1, 0);
549*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
550*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_5x5, 1, 1, 0,
551*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 5) * divRoundUp(1, 5) * 16 - 1, 0);
552*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
553*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_6x5, 1, 1, 0,
554*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 6) * divRoundUp(1, 5) * 16 - 1, 0);
555*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
556*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_6x6, 1, 1, 0,
557*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 6) * divRoundUp(1, 6) * 16 - 1, 0);
558*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
559*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_8x5, 1, 1, 0,
560*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 8) * divRoundUp(1, 5) * 16 - 1, 0);
561*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
562*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_8x6, 1, 1, 0,
563*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 8) * divRoundUp(1, 6) * 16 - 1, 0);
564*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
565*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_8x8, 1, 1, 0,
566*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 8) * divRoundUp(1, 8) * 16 - 1, 0);
567*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
568*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_10x5, 1, 1, 0,
569*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 10) * divRoundUp(1, 5) * 16 - 1, 0);
570*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
571*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_10x6, 1, 1, 0,
572*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 10) * divRoundUp(1, 6) * 16 - 1, 0);
573*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
574*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_10x8, 1, 1, 0,
575*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 10) * divRoundUp(1, 8) * 16 - 1, 0);
576*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
577*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_10x10, 1, 1, 0,
578*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 10) * divRoundUp(1, 10) * 16 - 1, 0);
579*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
580*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_12x10, 1, 1, 0,
581*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 12) * divRoundUp(1, 10) * 16 - 1, 0);
582*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
583*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_12x12, 1, 1, 0,
584*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 12) * divRoundUp(1, 12) * 16 - 1, 0);
585*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
586*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4, 1, 1, 0,
587*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(1, 4) * 16 - 1, 0);
588*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
589*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4, 1, 1, 0,
590*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 5) * divRoundUp(1, 4) * 16 - 1, 0);
591*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
592*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5, 1, 1, 0,
593*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 5) * divRoundUp(1, 5) * 16 - 1, 0);
594*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
595*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5, 1, 1, 0,
596*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 6) * divRoundUp(1, 5) * 16 - 1, 0);
597*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
598*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6, 1, 1, 0,
599*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 6) * divRoundUp(1, 6) * 16 - 1, 0);
600*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
601*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5, 1, 1, 0,
602*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 8) * divRoundUp(1, 5) * 16 - 1, 0);
603*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
604*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6, 1, 1, 0,
605*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 8) * divRoundUp(1, 6) * 16 - 1, 0);
606*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
607*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8, 1, 1, 0,
608*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 8) * divRoundUp(1, 8) * 16 - 1, 0);
609*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
610*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5, 1, 1, 0,
611*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 10) * divRoundUp(1, 5) * 16 - 1, 0);
612*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
613*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6, 1, 1, 0,
614*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 10) * divRoundUp(1, 6) * 16 - 1, 0);
615*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
616*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8, 1, 1, 0,
617*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 10) * divRoundUp(1, 8) * 16 - 1, 0);
618*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
619*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10, 1, 1, 0,
620*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 10) * divRoundUp(1, 10) * 16 - 1, 0);
621*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
622*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10, 1, 1, 0,
623*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 12) * divRoundUp(1, 10) * 16 - 1, 0);
624*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
625*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12, 1, 1, 0,
626*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 12) * divRoundUp(1, 12) * 16 - 1, 0);
627*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
628*35238bceSAndroid Build Coastguard Worker }
629*35238bceSAndroid Build Coastguard Worker ctx.endSection();
630*35238bceSAndroid Build Coastguard Worker }
631*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_neg_size(NegativeTestContext & ctx)632*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_neg_size(NegativeTestContext &ctx)
633*35238bceSAndroid Build Coastguard Worker {
634*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if imageSize is negative.");
635*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_R11_EAC, 0, 0, 0, -1, 0);
636*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
637*35238bceSAndroid Build Coastguard Worker ctx.endSection();
638*35238bceSAndroid Build Coastguard Worker }
639*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_invalid_width_height(NegativeTestContext & ctx)640*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_invalid_width_height(NegativeTestContext &ctx)
641*35238bceSAndroid Build Coastguard Worker {
642*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if target is a cube map face and width and height are not equal.");
643*35238bceSAndroid Build Coastguard Worker
644*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
645*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_R11_EAC, 1, 2, 0,
646*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(2, 4) * 8, 0);
647*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
648*35238bceSAndroid Build Coastguard Worker ctx.endSection();
649*35238bceSAndroid Build Coastguard Worker
650*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
651*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_COMPRESSED_R11_EAC, 1, 2, 0,
652*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(2, 4) * 8, 0);
653*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
654*35238bceSAndroid Build Coastguard Worker ctx.endSection();
655*35238bceSAndroid Build Coastguard Worker
656*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Z target");
657*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_COMPRESSED_R11_EAC, 1, 2, 0,
658*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(2, 4) * 8, 0);
659*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
660*35238bceSAndroid Build Coastguard Worker ctx.endSection();
661*35238bceSAndroid Build Coastguard Worker
662*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
663*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_COMPRESSED_R11_EAC, 1, 2, 0,
664*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(2, 4) * 8, 0);
665*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
666*35238bceSAndroid Build Coastguard Worker ctx.endSection();
667*35238bceSAndroid Build Coastguard Worker
668*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
669*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_COMPRESSED_R11_EAC, 1, 2, 0,
670*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(2, 4) * 8, 0);
671*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
672*35238bceSAndroid Build Coastguard Worker ctx.endSection();
673*35238bceSAndroid Build Coastguard Worker
674*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
675*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_COMPRESSED_R11_EAC, 1, 2, 0,
676*35238bceSAndroid Build Coastguard Worker divRoundUp(1, 4) * divRoundUp(2, 4) * 8, 0);
677*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
678*35238bceSAndroid Build Coastguard Worker ctx.endSection();
679*35238bceSAndroid Build Coastguard Worker
680*35238bceSAndroid Build Coastguard Worker ctx.endSection();
681*35238bceSAndroid Build Coastguard Worker }
682*35238bceSAndroid Build Coastguard Worker
compressedteximage2d_invalid_buffer_target(NegativeTestContext & ctx)683*35238bceSAndroid Build Coastguard Worker void compressedteximage2d_invalid_buffer_target(NegativeTestContext &ctx)
684*35238bceSAndroid Build Coastguard Worker {
685*35238bceSAndroid Build Coastguard Worker uint32_t buf = 1234;
686*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(64);
687*35238bceSAndroid Build Coastguard Worker
688*35238bceSAndroid Build Coastguard Worker ctx.glGenBuffers(1, &buf);
689*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
690*35238bceSAndroid Build Coastguard Worker ctx.glBufferData(GL_PIXEL_UNPACK_BUFFER, 64, &data[0], GL_DYNAMIC_COPY);
691*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
692*35238bceSAndroid Build Coastguard Worker
693*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
694*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and the buffer object's data store is currently mapped.");
695*35238bceSAndroid Build Coastguard Worker ctx.glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, 32, GL_MAP_WRITE_BIT);
696*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB8_ETC2, 4, 4, 0, etc2DataSize(4, 4), 0);
697*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
698*35238bceSAndroid Build Coastguard Worker ctx.glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
699*35238bceSAndroid Build Coastguard Worker ctx.endSection();
700*35238bceSAndroid Build Coastguard Worker
701*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
702*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and the data would be unpacked from the buffer object such that "
703*35238bceSAndroid Build Coastguard Worker "the memory reads required would exceed the data store size.");
704*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB8_ETC2, 16, 16, 0, etc2DataSize(16, 16), 0);
705*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
706*35238bceSAndroid Build Coastguard Worker ctx.endSection();
707*35238bceSAndroid Build Coastguard Worker
708*35238bceSAndroid Build Coastguard Worker ctx.glDeleteBuffers(1, &buf);
709*35238bceSAndroid Build Coastguard Worker }
710*35238bceSAndroid Build Coastguard Worker
711*35238bceSAndroid Build Coastguard Worker // glCopyTexImage2D
712*35238bceSAndroid Build Coastguard Worker
copyteximage2d_invalid_target(NegativeTestContext & ctx)713*35238bceSAndroid Build Coastguard Worker void copyteximage2d_invalid_target(NegativeTestContext &ctx)
714*35238bceSAndroid Build Coastguard Worker {
715*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
716*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(0, 0, GL_RGB, 0, 0, 64, 64, 0);
717*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
718*35238bceSAndroid Build Coastguard Worker ctx.endSection();
719*35238bceSAndroid Build Coastguard Worker }
720*35238bceSAndroid Build Coastguard Worker
copyteximage2d_invalid_format(NegativeTestContext & ctx)721*35238bceSAndroid Build Coastguard Worker void copyteximage2d_invalid_format(NegativeTestContext &ctx)
722*35238bceSAndroid Build Coastguard Worker {
723*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM or GL_INVALID_VALUE is generated if internalformat is not an accepted format.");
724*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 64, 64, 0);
725*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
726*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 0, 0, 0, 16, 16, 0);
727*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
728*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, 0, 0, 0, 16, 16, 0);
729*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
730*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, 0, 0, 0, 16, 16, 0);
731*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
732*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 0, 0, 0, 16, 16, 0);
733*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
734*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, 0, 0, 0, 16, 16, 0);
735*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
736*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, 0, 0, 0, 16, 16, 0);
737*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
738*35238bceSAndroid Build Coastguard Worker ctx.endSection();
739*35238bceSAndroid Build Coastguard Worker }
740*35238bceSAndroid Build Coastguard Worker
copyteximage2d_inequal_width_height_cube(NegativeTestContext & ctx)741*35238bceSAndroid Build Coastguard Worker void copyteximage2d_inequal_width_height_cube(NegativeTestContext &ctx)
742*35238bceSAndroid Build Coastguard Worker {
743*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if target is one of the six cube map 2D image targets and the "
744*35238bceSAndroid Build Coastguard Worker "width and height parameters are not equal.");
745*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 16, 17, 0);
746*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
747*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 16, 17, 0);
748*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
749*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 16, 17, 0);
750*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
751*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 16, 17, 0);
752*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
753*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 16, 17, 0);
754*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
755*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 16, 17, 0);
756*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
757*35238bceSAndroid Build Coastguard Worker ctx.endSection();
758*35238bceSAndroid Build Coastguard Worker }
759*35238bceSAndroid Build Coastguard Worker
copyteximage2d_neg_level(NegativeTestContext & ctx)760*35238bceSAndroid Build Coastguard Worker void copyteximage2d_neg_level(NegativeTestContext &ctx)
761*35238bceSAndroid Build Coastguard Worker {
762*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
763*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, -1, GL_RGB, 0, 0, 64, 64, 0);
764*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
765*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, GL_RGB, 0, 0, 16, 16, 0);
766*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
767*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, GL_RGB, 0, 0, 16, 16, 0);
768*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
769*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, GL_RGB, 0, 0, 16, 16, 0);
770*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
771*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, GL_RGB, 0, 0, 16, 16, 0);
772*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
773*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, GL_RGB, 0, 0, 16, 16, 0);
774*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
775*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, GL_RGB, 0, 0, 16, 16, 0);
776*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
777*35238bceSAndroid Build Coastguard Worker ctx.endSection();
778*35238bceSAndroid Build Coastguard Worker }
779*35238bceSAndroid Build Coastguard Worker
copyteximage2d_max_level(NegativeTestContext & ctx)780*35238bceSAndroid Build Coastguard Worker void copyteximage2d_max_level(NegativeTestContext &ctx)
781*35238bceSAndroid Build Coastguard Worker {
782*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
783*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
784*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, log2MaxTextureSize, GL_RGB, 0, 0, 64, 64, 0);
785*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
786*35238bceSAndroid Build Coastguard Worker ctx.endSection();
787*35238bceSAndroid Build Coastguard Worker
788*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
789*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxCubemapSize = deLog2Floor32(ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
790*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxCubemapSize, GL_RGB, 0, 0, 16, 16, 0);
791*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
792*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxCubemapSize, GL_RGB, 0, 0, 16, 16, 0);
793*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
794*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxCubemapSize, GL_RGB, 0, 0, 16, 16, 0);
795*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
796*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxCubemapSize, GL_RGB, 0, 0, 16, 16, 0);
797*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
798*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxCubemapSize, GL_RGB, 0, 0, 16, 16, 0);
799*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
800*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxCubemapSize, GL_RGB, 0, 0, 16, 16, 0);
801*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
802*35238bceSAndroid Build Coastguard Worker ctx.endSection();
803*35238bceSAndroid Build Coastguard Worker }
804*35238bceSAndroid Build Coastguard Worker
copyteximage2d_neg_width_height(NegativeTestContext & ctx)805*35238bceSAndroid Build Coastguard Worker void copyteximage2d_neg_width_height(NegativeTestContext &ctx)
806*35238bceSAndroid Build Coastguard Worker {
807*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is less than 0.");
808*35238bceSAndroid Build Coastguard Worker
809*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_2D target");
810*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, -1, 1, 0);
811*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
812*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 1, -1, 0);
813*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
814*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, -1, -1, 0);
815*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
816*35238bceSAndroid Build Coastguard Worker ctx.endSection();
817*35238bceSAndroid Build Coastguard Worker
818*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
819*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, -1, 1, 0);
820*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
821*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 1, -1, 0);
822*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
823*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, -1, -1, 0);
824*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
825*35238bceSAndroid Build Coastguard Worker ctx.endSection();
826*35238bceSAndroid Build Coastguard Worker
827*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
828*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, -1, 1, 0);
829*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
830*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 1, -1, 0);
831*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
832*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, -1, -1, 0);
833*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
834*35238bceSAndroid Build Coastguard Worker ctx.endSection();
835*35238bceSAndroid Build Coastguard Worker
836*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Z target");
837*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, -1, 1, 0);
838*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
839*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 1, -1, 0);
840*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
841*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, -1, -1, 0);
842*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
843*35238bceSAndroid Build Coastguard Worker ctx.endSection();
844*35238bceSAndroid Build Coastguard Worker
845*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
846*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, -1, 1, 0);
847*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
848*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 1, -1, 0);
849*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
850*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, -1, -1, 0);
851*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
852*35238bceSAndroid Build Coastguard Worker ctx.endSection();
853*35238bceSAndroid Build Coastguard Worker
854*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
855*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, -1, 1, 0);
856*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
857*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 1, -1, 0);
858*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
859*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, -1, -1, 0);
860*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
861*35238bceSAndroid Build Coastguard Worker ctx.endSection();
862*35238bceSAndroid Build Coastguard Worker
863*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
864*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, -1, 1, 0);
865*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
866*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 1, -1, 0);
867*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
868*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, -1, -1, 0);
869*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
870*35238bceSAndroid Build Coastguard Worker ctx.endSection();
871*35238bceSAndroid Build Coastguard Worker
872*35238bceSAndroid Build Coastguard Worker ctx.endSection();
873*35238bceSAndroid Build Coastguard Worker }
874*35238bceSAndroid Build Coastguard Worker
copyteximage2d_max_width_height(NegativeTestContext & ctx)875*35238bceSAndroid Build Coastguard Worker void copyteximage2d_max_width_height(NegativeTestContext &ctx)
876*35238bceSAndroid Build Coastguard Worker {
877*35238bceSAndroid Build Coastguard Worker int maxTextureSize = ctx.getInteger(GL_MAX_TEXTURE_SIZE) + 1;
878*35238bceSAndroid Build Coastguard Worker int maxCubemapSize = ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
879*35238bceSAndroid Build Coastguard Worker
880*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_TEXTURE_SIZE.");
881*35238bceSAndroid Build Coastguard Worker
882*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_2D target");
883*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, maxTextureSize, 1, 0);
884*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
885*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 1, maxTextureSize, 0);
886*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
887*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, maxTextureSize, maxTextureSize, 0);
888*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
889*35238bceSAndroid Build Coastguard Worker ctx.endSection();
890*35238bceSAndroid Build Coastguard Worker
891*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
892*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 1, maxCubemapSize, 0);
893*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
894*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, maxCubemapSize, 1, 0);
895*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
896*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, maxCubemapSize, maxCubemapSize, 0);
897*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
898*35238bceSAndroid Build Coastguard Worker ctx.endSection();
899*35238bceSAndroid Build Coastguard Worker
900*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
901*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 1, maxCubemapSize, 0);
902*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
903*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, maxCubemapSize, 1, 0);
904*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
905*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, maxCubemapSize, maxCubemapSize, 0);
906*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
907*35238bceSAndroid Build Coastguard Worker ctx.endSection();
908*35238bceSAndroid Build Coastguard Worker
909*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Z target");
910*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 1, maxCubemapSize, 0);
911*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
912*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, maxCubemapSize, 1, 0);
913*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
914*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, maxCubemapSize, maxCubemapSize, 0);
915*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
916*35238bceSAndroid Build Coastguard Worker ctx.endSection();
917*35238bceSAndroid Build Coastguard Worker
918*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
919*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 1, maxCubemapSize, 0);
920*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
921*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, maxCubemapSize, 1, 0);
922*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
923*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, maxCubemapSize, maxCubemapSize, 0);
924*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
925*35238bceSAndroid Build Coastguard Worker ctx.endSection();
926*35238bceSAndroid Build Coastguard Worker
927*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
928*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 1, maxCubemapSize, 0);
929*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
930*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, maxCubemapSize, 1, 0);
931*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
932*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, maxCubemapSize, maxCubemapSize, 0);
933*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
934*35238bceSAndroid Build Coastguard Worker ctx.endSection();
935*35238bceSAndroid Build Coastguard Worker
936*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
937*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 1, maxCubemapSize, 0);
938*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
939*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, maxCubemapSize, 1, 0);
940*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
941*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, maxCubemapSize, maxCubemapSize, 0);
942*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
943*35238bceSAndroid Build Coastguard Worker ctx.endSection();
944*35238bceSAndroid Build Coastguard Worker
945*35238bceSAndroid Build Coastguard Worker ctx.endSection();
946*35238bceSAndroid Build Coastguard Worker }
947*35238bceSAndroid Build Coastguard Worker
copyteximage2d_invalid_border(NegativeTestContext & ctx)948*35238bceSAndroid Build Coastguard Worker void copyteximage2d_invalid_border(NegativeTestContext &ctx)
949*35238bceSAndroid Build Coastguard Worker {
950*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if border is not 0.");
951*35238bceSAndroid Build Coastguard Worker
952*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_2D target");
953*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 0, 0, -1);
954*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
955*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 0, 0, 1);
956*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
957*35238bceSAndroid Build Coastguard Worker ctx.endSection();
958*35238bceSAndroid Build Coastguard Worker
959*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
960*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 0, 0, -1);
961*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
962*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 0, 0, 1);
963*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
964*35238bceSAndroid Build Coastguard Worker ctx.endSection();
965*35238bceSAndroid Build Coastguard Worker
966*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
967*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 0, 0, -1);
968*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
969*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 0, 0, 0, 0, 1);
970*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
971*35238bceSAndroid Build Coastguard Worker ctx.endSection();
972*35238bceSAndroid Build Coastguard Worker
973*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_2D target");
974*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 0, 0, -1);
975*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
976*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 0, 0, 0, 0, 1);
977*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
978*35238bceSAndroid Build Coastguard Worker ctx.endSection();
979*35238bceSAndroid Build Coastguard Worker
980*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
981*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 0, 0, -1);
982*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
983*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 0, 0, 0, 0, 1);
984*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
985*35238bceSAndroid Build Coastguard Worker ctx.endSection();
986*35238bceSAndroid Build Coastguard Worker
987*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
988*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 0, 0, -1);
989*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
990*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 0, 0, 0, 0, 1);
991*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
992*35238bceSAndroid Build Coastguard Worker ctx.endSection();
993*35238bceSAndroid Build Coastguard Worker
994*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
995*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 0, 0, -1);
996*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
997*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 0, 0, 0, 0, 1);
998*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
999*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1000*35238bceSAndroid Build Coastguard Worker
1001*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1002*35238bceSAndroid Build Coastguard Worker }
1003*35238bceSAndroid Build Coastguard Worker
copyteximage2d_incomplete_framebuffer(NegativeTestContext & ctx)1004*35238bceSAndroid Build Coastguard Worker void copyteximage2d_incomplete_framebuffer(NegativeTestContext &ctx)
1005*35238bceSAndroid Build Coastguard Worker {
1006*35238bceSAndroid Build Coastguard Worker GLuint fbo = 0x1234;
1007*35238bceSAndroid Build Coastguard Worker ctx.glGenFramebuffers(1, &fbo);
1008*35238bceSAndroid Build Coastguard Worker ctx.glBindFramebuffer(GL_FRAMEBUFFER, fbo);
1009*35238bceSAndroid Build Coastguard Worker ctx.glCheckFramebufferStatus(GL_FRAMEBUFFER);
1010*35238bceSAndroid Build Coastguard Worker
1011*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_FRAMEBUFFER_OPERATION is generated if the currently bound framebuffer is not "
1012*35238bceSAndroid Build Coastguard Worker "framebuffer complete.");
1013*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, 0, 0, 0);
1014*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1015*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA8, 0, 0, 0, 0, 0);
1016*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1017*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGBA8, 0, 0, 0, 0, 0);
1018*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1019*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGBA8, 0, 0, 0, 0, 0);
1020*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1021*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGBA8, 0, 0, 0, 0, 0);
1022*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1023*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA8, 0, 0, 0, 0, 0);
1024*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1025*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGBA8, 0, 0, 0, 0, 0);
1026*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1027*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1028*35238bceSAndroid Build Coastguard Worker
1029*35238bceSAndroid Build Coastguard Worker ctx.glBindFramebuffer(GL_FRAMEBUFFER, 0);
1030*35238bceSAndroid Build Coastguard Worker ctx.glDeleteFramebuffers(1, &fbo);
1031*35238bceSAndroid Build Coastguard Worker }
1032*35238bceSAndroid Build Coastguard Worker
copytexsubimage2d_invalid_target(NegativeTestContext & ctx)1033*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_invalid_target(NegativeTestContext &ctx)
1034*35238bceSAndroid Build Coastguard Worker {
1035*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
1036*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1037*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1038*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1039*35238bceSAndroid Build Coastguard Worker
1040*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
1041*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(0, 0, 0, 0, 0, 0, 4, 4);
1042*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1043*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1044*35238bceSAndroid Build Coastguard Worker
1045*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1046*35238bceSAndroid Build Coastguard Worker }
copytexsubimage2d_read_buffer_is_none(NegativeTestContext & ctx)1047*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_read_buffer_is_none(NegativeTestContext &ctx)
1048*35238bceSAndroid Build Coastguard Worker {
1049*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
1050*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1051*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1052*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1053*35238bceSAndroid Build Coastguard Worker
1054*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if the read buffer is NONE");
1055*35238bceSAndroid Build Coastguard Worker ctx.glReadBuffer(GL_NONE);
1056*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 4, 4);
1057*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1058*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1059*35238bceSAndroid Build Coastguard Worker
1060*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1061*35238bceSAndroid Build Coastguard Worker }
1062*35238bceSAndroid Build Coastguard Worker
copytexsubimage2d_texture_internalformat(NegativeTestContext & ctx)1063*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_texture_internalformat(NegativeTestContext &ctx)
1064*35238bceSAndroid Build Coastguard Worker {
1065*35238bceSAndroid Build Coastguard Worker if (!glu::isContextTypeES(ctx.getRenderContext().getType()))
1066*35238bceSAndroid Build Coastguard Worker return;
1067*35238bceSAndroid Build Coastguard Worker
1068*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
1069*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1070*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1071*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB9_E5, 16, 16, 0, GL_RGB, GL_FLOAT, 0);
1072*35238bceSAndroid Build Coastguard Worker
1073*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if internal format of the texture is GL_RGB9_E5");
1074*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 4, 4);
1075*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1076*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1077*35238bceSAndroid Build Coastguard Worker
1078*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1079*35238bceSAndroid Build Coastguard Worker }
1080*35238bceSAndroid Build Coastguard Worker
copytexsubimage2d_neg_level(NegativeTestContext & ctx)1081*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_neg_level(NegativeTestContext &ctx)
1082*35238bceSAndroid Build Coastguard Worker {
1083*35238bceSAndroid Build Coastguard Worker GLuint textures[2];
1084*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, &textures[0]);
1085*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
1086*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1087*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, textures[1]);
1088*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, ctx.glTexImage2D(faceGL, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0););
1089*35238bceSAndroid Build Coastguard Worker
1090*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
1091*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, -1, 0, 0, 0, 0, 4, 4);
1092*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1093*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, {
1094*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(faceGL, -1, 0, 0, 0, 0, 4, 4);
1095*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1096*35238bceSAndroid Build Coastguard Worker });
1097*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1098*35238bceSAndroid Build Coastguard Worker
1099*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, &textures[0]);
1100*35238bceSAndroid Build Coastguard Worker }
1101*35238bceSAndroid Build Coastguard Worker
copytexsubimage2d_max_level(NegativeTestContext & ctx)1102*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_max_level(NegativeTestContext &ctx)
1103*35238bceSAndroid Build Coastguard Worker {
1104*35238bceSAndroid Build Coastguard Worker GLuint textures[2];
1105*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, &textures[0]);
1106*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
1107*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1108*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, textures[1]);
1109*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, ctx.glTexImage2D(faceGL, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0););
1110*35238bceSAndroid Build Coastguard Worker
1111*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
1112*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE) for 2D texture targets.");
1113*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
1114*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, 4, 4);
1115*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1116*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1117*35238bceSAndroid Build Coastguard Worker
1118*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
1119*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_SIZE) for cubemap targets.");
1120*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxCubemapSize = deLog2Floor32(ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
1121*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, {
1122*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(faceGL, log2MaxCubemapSize, 0, 0, 0, 0, 4, 4);
1123*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1124*35238bceSAndroid Build Coastguard Worker });
1125*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1126*35238bceSAndroid Build Coastguard Worker
1127*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, &textures[0]);
1128*35238bceSAndroid Build Coastguard Worker }
1129*35238bceSAndroid Build Coastguard Worker
copytexsubimage2d_neg_offset(NegativeTestContext & ctx)1130*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_neg_offset(NegativeTestContext &ctx)
1131*35238bceSAndroid Build Coastguard Worker {
1132*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
1133*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1134*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1135*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1136*35238bceSAndroid Build Coastguard Worker
1137*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if xoffset < 0 or yoffset < 0.");
1138*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, -1, 0, 0, 0, 4, 4);
1139*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1140*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, -1, 0, 0, 4, 4);
1141*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1142*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, -1, -1, 0, 0, 4, 4);
1143*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1144*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1145*35238bceSAndroid Build Coastguard Worker
1146*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1147*35238bceSAndroid Build Coastguard Worker }
1148*35238bceSAndroid Build Coastguard Worker
copytexsubimage2d_invalid_offset(NegativeTestContext & ctx)1149*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_invalid_offset(NegativeTestContext &ctx)
1150*35238bceSAndroid Build Coastguard Worker {
1151*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
1152*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1153*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1154*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1155*35238bceSAndroid Build Coastguard Worker
1156*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
1157*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if xoffset + width > texture_width or yoffset + height > texture_height.");
1158*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 14, 0, 0, 0, 4, 4);
1159*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1160*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 14, 0, 0, 4, 4);
1161*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1162*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 14, 14, 0, 0, 4, 4);
1163*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1164*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1165*35238bceSAndroid Build Coastguard Worker
1166*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1167*35238bceSAndroid Build Coastguard Worker }
1168*35238bceSAndroid Build Coastguard Worker
copytexsubimage2d_neg_width_height(NegativeTestContext & ctx)1169*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_neg_width_height(NegativeTestContext &ctx)
1170*35238bceSAndroid Build Coastguard Worker {
1171*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
1172*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1173*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1174*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1175*35238bceSAndroid Build Coastguard Worker
1176*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is less than 0.");
1177*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, -1, 0);
1178*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1179*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 0, -1);
1180*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1181*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, -1, -1);
1182*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1183*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1184*35238bceSAndroid Build Coastguard Worker
1185*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1186*35238bceSAndroid Build Coastguard Worker }
1187*35238bceSAndroid Build Coastguard Worker
copytexsubimage2d_incomplete_framebuffer(NegativeTestContext & ctx)1188*35238bceSAndroid Build Coastguard Worker void copytexsubimage2d_incomplete_framebuffer(NegativeTestContext &ctx)
1189*35238bceSAndroid Build Coastguard Worker {
1190*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_FRAMEBUFFER_OPERATION is generated if the currently bound framebuffer is not "
1191*35238bceSAndroid Build Coastguard Worker "framebuffer complete.");
1192*35238bceSAndroid Build Coastguard Worker
1193*35238bceSAndroid Build Coastguard Worker GLuint texture[2];
1194*35238bceSAndroid Build Coastguard Worker GLuint fbo = 0x1234;
1195*35238bceSAndroid Build Coastguard Worker
1196*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, texture);
1197*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture[0]);
1198*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1199*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, texture[1]);
1200*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1201*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1202*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1203*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1204*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1205*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1206*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1207*35238bceSAndroid Build Coastguard Worker
1208*35238bceSAndroid Build Coastguard Worker ctx.glGenFramebuffers(1, &fbo);
1209*35238bceSAndroid Build Coastguard Worker ctx.glBindFramebuffer(GL_FRAMEBUFFER, fbo);
1210*35238bceSAndroid Build Coastguard Worker ctx.glCheckFramebufferStatus(GL_FRAMEBUFFER);
1211*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1212*35238bceSAndroid Build Coastguard Worker
1213*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0);
1214*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1215*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 0, 0, 0, 0, 0, 0);
1216*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1217*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, 0, 0, 0, 0, 0, 0);
1218*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1219*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, 0, 0, 0, 0, 0, 0);
1220*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1221*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 0, 0, 0, 0, 0, 0);
1222*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1223*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, 0, 0, 0, 0, 0, 0);
1224*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1225*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, 0, 0, 0, 0, 0, 0);
1226*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
1227*35238bceSAndroid Build Coastguard Worker
1228*35238bceSAndroid Build Coastguard Worker ctx.glBindFramebuffer(GL_FRAMEBUFFER, 0);
1229*35238bceSAndroid Build Coastguard Worker ctx.glDeleteFramebuffers(1, &fbo);
1230*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, texture);
1231*35238bceSAndroid Build Coastguard Worker
1232*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1233*35238bceSAndroid Build Coastguard Worker }
1234*35238bceSAndroid Build Coastguard Worker
1235*35238bceSAndroid Build Coastguard Worker // glDeleteTextures
1236*35238bceSAndroid Build Coastguard Worker
deletetextures(NegativeTestContext & ctx)1237*35238bceSAndroid Build Coastguard Worker void deletetextures(NegativeTestContext &ctx)
1238*35238bceSAndroid Build Coastguard Worker {
1239*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
1240*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1241*35238bceSAndroid Build Coastguard Worker
1242*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if n is negative.");
1243*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(-1, 0);
1244*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1245*35238bceSAndroid Build Coastguard Worker
1246*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1247*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(-1, 0);
1248*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1249*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1250*35238bceSAndroid Build Coastguard Worker
1251*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1252*35238bceSAndroid Build Coastguard Worker }
1253*35238bceSAndroid Build Coastguard Worker
1254*35238bceSAndroid Build Coastguard Worker // glGenerateMipmap
1255*35238bceSAndroid Build Coastguard Worker
generatemipmap(NegativeTestContext & ctx)1256*35238bceSAndroid Build Coastguard Worker void generatemipmap(NegativeTestContext &ctx)
1257*35238bceSAndroid Build Coastguard Worker {
1258*35238bceSAndroid Build Coastguard Worker GLuint texture[2];
1259*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, texture);
1260*35238bceSAndroid Build Coastguard Worker
1261*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is not GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP.");
1262*35238bceSAndroid Build Coastguard Worker ctx.glGenerateMipmap(0);
1263*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1264*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1265*35238bceSAndroid Build Coastguard Worker
1266*35238bceSAndroid Build Coastguard Worker ctx.beginSection("INVALID_OPERATION is generated if the texture bound to target is not cube complete.");
1267*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, texture[0]);
1268*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_REPEAT);
1269*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 0, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1270*35238bceSAndroid Build Coastguard Worker ctx.glGenerateMipmap(GL_TEXTURE_CUBE_MAP);
1271*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1272*35238bceSAndroid Build Coastguard Worker
1273*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, texture[0]);
1274*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1275*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1276*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1277*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1278*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1279*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1280*35238bceSAndroid Build Coastguard Worker ctx.glGenerateMipmap(GL_TEXTURE_CUBE_MAP);
1281*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1282*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1283*35238bceSAndroid Build Coastguard Worker
1284*35238bceSAndroid Build Coastguard Worker if (glu::isContextTypeES(ctx.getRenderContext().getType()))
1285*35238bceSAndroid Build Coastguard Worker {
1286*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
1287*35238bceSAndroid Build Coastguard Worker "GL_INVALID_OPERATION is generated if the zero level array is stored in a compressed internal format.");
1288*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture[1]);
1289*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0);
1290*35238bceSAndroid Build Coastguard Worker ctx.glGenerateMipmap(GL_TEXTURE_2D);
1291*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1292*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1293*35238bceSAndroid Build Coastguard Worker
1294*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
1295*35238bceSAndroid Build Coastguard Worker "GL_INVALID_OPERATION is generated if the level base array was not specified with an unsized internal "
1296*35238bceSAndroid Build Coastguard Worker "format or a sized internal format that is both color-renderable and texture-filterable.");
1297*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8_SNORM, 0, 0, 0, GL_RGB, GL_BYTE, 0);
1298*35238bceSAndroid Build Coastguard Worker ctx.glGenerateMipmap(GL_TEXTURE_2D);
1299*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1300*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_R8I, 0, 0, 0, GL_RED_INTEGER, GL_BYTE, 0);
1301*35238bceSAndroid Build Coastguard Worker ctx.glGenerateMipmap(GL_TEXTURE_2D);
1302*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1303*35238bceSAndroid Build Coastguard Worker
1304*35238bceSAndroid Build Coastguard Worker if (!(ctx.getContextInfo().isExtensionSupported("GL_EXT_color_buffer_float") &&
1305*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_float_linear")))
1306*35238bceSAndroid Build Coastguard Worker {
1307*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 0, 0, 0, GL_RGBA, GL_FLOAT, 0);
1308*35238bceSAndroid Build Coastguard Worker ctx.glGenerateMipmap(GL_TEXTURE_2D);
1309*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1310*35238bceSAndroid Build Coastguard Worker }
1311*35238bceSAndroid Build Coastguard Worker
1312*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1313*35238bceSAndroid Build Coastguard Worker }
1314*35238bceSAndroid Build Coastguard Worker
1315*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, texture);
1316*35238bceSAndroid Build Coastguard Worker }
1317*35238bceSAndroid Build Coastguard Worker
1318*35238bceSAndroid Build Coastguard Worker // glGenTextures
1319*35238bceSAndroid Build Coastguard Worker
gentextures(NegativeTestContext & ctx)1320*35238bceSAndroid Build Coastguard Worker void gentextures(NegativeTestContext &ctx)
1321*35238bceSAndroid Build Coastguard Worker {
1322*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if n is negative.");
1323*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(-1, 0);
1324*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1325*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1326*35238bceSAndroid Build Coastguard Worker }
1327*35238bceSAndroid Build Coastguard Worker
1328*35238bceSAndroid Build Coastguard Worker // glPixelStorei
1329*35238bceSAndroid Build Coastguard Worker
pixelstorei(NegativeTestContext & ctx)1330*35238bceSAndroid Build Coastguard Worker void pixelstorei(NegativeTestContext &ctx)
1331*35238bceSAndroid Build Coastguard Worker {
1332*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is not an accepted value.");
1333*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(0, 1);
1334*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1335*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1336*35238bceSAndroid Build Coastguard Worker
1337*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if a negative row length, pixel skip, or row skip value is "
1338*35238bceSAndroid Build Coastguard Worker "specified, or if alignment is specified as other than 1, 2, 4, or 8.");
1339*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_PACK_ROW_LENGTH, -1);
1340*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1341*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_PACK_SKIP_ROWS, -1);
1342*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1343*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_PACK_SKIP_PIXELS, -1);
1344*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1345*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_UNPACK_ROW_LENGTH, -1);
1346*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1347*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, -1);
1348*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1349*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_UNPACK_SKIP_ROWS, -1);
1350*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1351*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_UNPACK_SKIP_PIXELS, -1);
1352*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1353*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_UNPACK_SKIP_IMAGES, -1);
1354*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1355*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_PACK_ALIGNMENT, 0);
1356*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1357*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_UNPACK_ALIGNMENT, 0);
1358*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1359*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_PACK_ALIGNMENT, 16);
1360*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1361*35238bceSAndroid Build Coastguard Worker ctx.glPixelStorei(GL_UNPACK_ALIGNMENT, 16);
1362*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1363*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1364*35238bceSAndroid Build Coastguard Worker }
1365*35238bceSAndroid Build Coastguard Worker
1366*35238bceSAndroid Build Coastguard Worker // glTexImage2D
1367*35238bceSAndroid Build Coastguard Worker
teximage2d(NegativeTestContext & ctx)1368*35238bceSAndroid Build Coastguard Worker void teximage2d(NegativeTestContext &ctx)
1369*35238bceSAndroid Build Coastguard Worker {
1370*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
1371*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(0, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1372*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1373*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1374*35238bceSAndroid Build Coastguard Worker
1375*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if type is not a type constant.");
1376*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, 0, 0);
1377*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1378*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1379*35238bceSAndroid Build Coastguard Worker
1380*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
1381*35238bceSAndroid Build Coastguard Worker "GL_INVALID_OPERATION is generated if the combination of internalFormat, format and type is invalid.");
1382*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_SHORT_4_4_4_4, 0);
1383*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1384*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5_A1, 1, 1, 0, GL_RGB, GL_UNSIGNED_SHORT_5_5_5_1, 0);
1385*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1386*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB10_A2, 1, 1, 0, GL_RGB, GL_UNSIGNED_INT_2_10_10_10_REV, 0);
1387*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1388*35238bceSAndroid Build Coastguard Worker if (glu::isContextTypeES(ctx.getRenderContext().getType()))
1389*35238bceSAndroid Build Coastguard Worker {
1390*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1391*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1392*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32UI, 1, 1, 0, GL_RGBA_INTEGER, GL_INT, 0);
1393*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1394*35238bceSAndroid Build Coastguard Worker }
1395*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1396*35238bceSAndroid Build Coastguard Worker }
1397*35238bceSAndroid Build Coastguard Worker
teximage2d_inequal_width_height_cube(NegativeTestContext & ctx)1398*35238bceSAndroid Build Coastguard Worker void teximage2d_inequal_width_height_cube(NegativeTestContext &ctx)
1399*35238bceSAndroid Build Coastguard Worker {
1400*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if target is one of the six cube map 2D image targets and the "
1401*35238bceSAndroid Build Coastguard Worker "width and height parameters are not equal.");
1402*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1403*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1404*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1405*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1406*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1407*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1408*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1409*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1410*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1411*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1412*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 1, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1413*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1414*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1415*35238bceSAndroid Build Coastguard Worker }
1416*35238bceSAndroid Build Coastguard Worker
teximage2d_neg_level(NegativeTestContext & ctx)1417*35238bceSAndroid Build Coastguard Worker void teximage2d_neg_level(NegativeTestContext &ctx)
1418*35238bceSAndroid Build Coastguard Worker {
1419*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
1420*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1421*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1422*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1423*35238bceSAndroid Build Coastguard Worker
1424*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
1425*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1426*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1427*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1428*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1429*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1430*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1431*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1432*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1433*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1434*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1435*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1436*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1437*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1438*35238bceSAndroid Build Coastguard Worker }
1439*35238bceSAndroid Build Coastguard Worker
teximage2d_max_level(NegativeTestContext & ctx)1440*35238bceSAndroid Build Coastguard Worker void teximage2d_max_level(NegativeTestContext &ctx)
1441*35238bceSAndroid Build Coastguard Worker {
1442*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
1443*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
1444*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, log2MaxTextureSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1445*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1446*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1447*35238bceSAndroid Build Coastguard Worker
1448*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
1449*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxCubemapSize = deLog2Floor32(ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
1450*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxCubemapSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1451*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1452*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxCubemapSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1453*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1454*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxCubemapSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1455*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1456*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxCubemapSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1457*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1458*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxCubemapSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1459*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1460*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxCubemapSize, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1461*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1462*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1463*35238bceSAndroid Build Coastguard Worker }
1464*35238bceSAndroid Build Coastguard Worker
teximage2d_neg_width_height(NegativeTestContext & ctx)1465*35238bceSAndroid Build Coastguard Worker void teximage2d_neg_width_height(NegativeTestContext &ctx)
1466*35238bceSAndroid Build Coastguard Worker {
1467*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is less than 0.");
1468*35238bceSAndroid Build Coastguard Worker
1469*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_2D target");
1470*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1471*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1472*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1473*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1474*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1475*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1476*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1477*35238bceSAndroid Build Coastguard Worker
1478*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
1479*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1480*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1481*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1482*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1483*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1484*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1485*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1486*35238bceSAndroid Build Coastguard Worker
1487*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
1488*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1489*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1490*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1491*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1492*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1493*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1494*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1495*35238bceSAndroid Build Coastguard Worker
1496*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Z target");
1497*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1498*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1499*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1500*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1501*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1502*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1503*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1504*35238bceSAndroid Build Coastguard Worker
1505*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
1506*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1507*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1508*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1509*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1510*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1511*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1512*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1513*35238bceSAndroid Build Coastguard Worker
1514*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
1515*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1516*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1517*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1518*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1519*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1520*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1521*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1522*35238bceSAndroid Build Coastguard Worker
1523*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
1524*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, -1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1525*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1526*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1527*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1528*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, -1, -1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1529*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1530*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1531*35238bceSAndroid Build Coastguard Worker
1532*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1533*35238bceSAndroid Build Coastguard Worker }
1534*35238bceSAndroid Build Coastguard Worker
teximage2d_max_width_height(NegativeTestContext & ctx)1535*35238bceSAndroid Build Coastguard Worker void teximage2d_max_width_height(NegativeTestContext &ctx)
1536*35238bceSAndroid Build Coastguard Worker {
1537*35238bceSAndroid Build Coastguard Worker int maxTextureSize = ctx.getInteger(GL_MAX_TEXTURE_SIZE) + 1;
1538*35238bceSAndroid Build Coastguard Worker int maxCubemapSize = ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
1539*35238bceSAndroid Build Coastguard Worker
1540*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_TEXTURE_SIZE.");
1541*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, maxTextureSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1542*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1543*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1544*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1545*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, maxTextureSize, maxTextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1546*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1547*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1548*35238bceSAndroid Build Coastguard Worker
1549*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is greater than GL_MAX_CUBE_MAP_TEXTURE_SIZE.");
1550*35238bceSAndroid Build Coastguard Worker
1551*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_X target");
1552*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, maxCubemapSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1553*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1554*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 1, maxCubemapSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1555*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1556*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, maxCubemapSize, maxCubemapSize, 0, GL_RGB,
1557*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1558*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1559*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1560*35238bceSAndroid Build Coastguard Worker
1561*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Y target");
1562*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, maxCubemapSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1563*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1564*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 1, maxCubemapSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1565*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1566*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, maxCubemapSize, maxCubemapSize, 0, GL_RGB,
1567*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1568*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1569*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1570*35238bceSAndroid Build Coastguard Worker
1571*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_POSITIVE_Z target");
1572*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, maxCubemapSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1573*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1574*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 1, maxCubemapSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1575*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1576*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, maxCubemapSize, maxCubemapSize, 0, GL_RGB,
1577*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1578*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1579*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1580*35238bceSAndroid Build Coastguard Worker
1581*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_X target");
1582*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, maxCubemapSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1583*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1584*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 1, maxCubemapSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1585*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1586*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, maxCubemapSize, maxCubemapSize, 0, GL_RGB,
1587*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1588*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1589*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1590*35238bceSAndroid Build Coastguard Worker
1591*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y target");
1592*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, maxCubemapSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1593*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1594*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 1, maxCubemapSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1595*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1596*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, maxCubemapSize, maxCubemapSize, 0, GL_RGB,
1597*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1598*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1599*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1600*35238bceSAndroid Build Coastguard Worker
1601*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z target");
1602*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, maxCubemapSize, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1603*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1604*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 1, maxCubemapSize, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1605*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1606*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, maxCubemapSize, maxCubemapSize, 0, GL_RGB,
1607*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
1608*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1609*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1610*35238bceSAndroid Build Coastguard Worker
1611*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1612*35238bceSAndroid Build Coastguard Worker }
1613*35238bceSAndroid Build Coastguard Worker
teximage2d_invalid_border(NegativeTestContext & ctx)1614*35238bceSAndroid Build Coastguard Worker void teximage2d_invalid_border(NegativeTestContext &ctx)
1615*35238bceSAndroid Build Coastguard Worker {
1616*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if border is not 0.");
1617*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1618*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1619*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, -1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1620*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1621*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1622*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1623*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1624*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1625*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1626*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1627*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1628*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1629*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1630*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1631*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, 0);
1632*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1633*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1634*35238bceSAndroid Build Coastguard Worker }
1635*35238bceSAndroid Build Coastguard Worker
teximage2d_invalid_buffer_target(NegativeTestContext & ctx)1636*35238bceSAndroid Build Coastguard Worker void teximage2d_invalid_buffer_target(NegativeTestContext &ctx)
1637*35238bceSAndroid Build Coastguard Worker {
1638*35238bceSAndroid Build Coastguard Worker uint32_t buf = 0x1234;
1639*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
1640*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(64);
1641*35238bceSAndroid Build Coastguard Worker
1642*35238bceSAndroid Build Coastguard Worker ctx.glGenBuffers(1, &buf);
1643*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
1644*35238bceSAndroid Build Coastguard Worker ctx.glBufferData(GL_PIXEL_UNPACK_BUFFER, 64, &data[0], GL_DYNAMIC_COPY);
1645*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1646*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1647*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1648*35238bceSAndroid Build Coastguard Worker
1649*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
1650*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and...");
1651*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the buffer object's data store is currently mapped.");
1652*35238bceSAndroid Build Coastguard Worker ctx.glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, 32, GL_MAP_WRITE_BIT);
1653*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1654*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1655*35238bceSAndroid Build Coastguard Worker ctx.glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
1656*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1657*35238bceSAndroid Build Coastguard Worker
1658*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the data would be unpacked from the buffer object such that the memory reads required would "
1659*35238bceSAndroid Build Coastguard Worker "exceed the data store size.");
1660*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 64, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1661*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1662*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1663*35238bceSAndroid Build Coastguard Worker
1664*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...data is not evenly divisible into the number of bytes needed to store in memory a datum "
1665*35238bceSAndroid Build Coastguard Worker "indicated by type.");
1666*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message << "// Set byte offset = 3" << TestLog::EndMessage;
1667*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5_A1, 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, (const GLvoid *)3);
1668*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1669*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1670*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1671*35238bceSAndroid Build Coastguard Worker
1672*35238bceSAndroid Build Coastguard Worker ctx.glDeleteBuffers(1, &buf);
1673*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1674*35238bceSAndroid Build Coastguard Worker }
1675*35238bceSAndroid Build Coastguard Worker
1676*35238bceSAndroid Build Coastguard Worker // glTexSubImage2D
1677*35238bceSAndroid Build Coastguard Worker
texsubimage2d(NegativeTestContext & ctx)1678*35238bceSAndroid Build Coastguard Worker void texsubimage2d(NegativeTestContext &ctx)
1679*35238bceSAndroid Build Coastguard Worker {
1680*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
1681*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1682*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1683*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1684*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1685*35238bceSAndroid Build Coastguard Worker
1686*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
1687*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(0, 0, 0, 0, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1688*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1689*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1690*35238bceSAndroid Build Coastguard Worker
1691*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if format is not an accepted format constant.");
1692*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 4, 4, GL_UNSIGNED_BYTE, 0);
1693*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1694*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1695*35238bceSAndroid Build Coastguard Worker
1696*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if type is not a type constant.");
1697*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGB, 0, 0);
1698*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1699*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1700*35238bceSAndroid Build Coastguard Worker
1701*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if the combination of internalFormat of the previously "
1702*35238bceSAndroid Build Coastguard Worker "specified texture array, format and type is not valid.");
1703*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGBA, GL_UNSIGNED_SHORT_5_6_5, 0);
1704*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1705*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGB, GL_UNSIGNED_SHORT_4_4_4_4, 0);
1706*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1707*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGB, GL_UNSIGNED_SHORT_5_5_5_1, 0);
1708*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1709*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGB, GL_UNSIGNED_SHORT_5_5_5_1, 0);
1710*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1711*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGBA_INTEGER, GL_UNSIGNED_INT, 0);
1712*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1713*35238bceSAndroid Build Coastguard Worker if (glu::isContextTypeES(ctx.getRenderContext().getType()))
1714*35238bceSAndroid Build Coastguard Worker {
1715*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGB, GL_FLOAT, 0);
1716*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1717*35238bceSAndroid Build Coastguard Worker }
1718*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1719*35238bceSAndroid Build Coastguard Worker
1720*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1721*35238bceSAndroid Build Coastguard Worker }
1722*35238bceSAndroid Build Coastguard Worker
texsubimage2d_neg_level(NegativeTestContext & ctx)1723*35238bceSAndroid Build Coastguard Worker void texsubimage2d_neg_level(NegativeTestContext &ctx)
1724*35238bceSAndroid Build Coastguard Worker {
1725*35238bceSAndroid Build Coastguard Worker uint32_t textures[2];
1726*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, &textures[0]);
1727*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
1728*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1729*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[1]);
1730*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, ctx.glTexImage2D(faceGL, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, 0););
1731*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1732*35238bceSAndroid Build Coastguard Worker
1733*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
1734*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, -1, 0, 0, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1735*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1736*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1737*35238bceSAndroid Build Coastguard Worker
1738*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
1739*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, {
1740*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(faceGL, -1, 0, 0, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1741*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1742*35238bceSAndroid Build Coastguard Worker });
1743*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1744*35238bceSAndroid Build Coastguard Worker
1745*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, &textures[0]);
1746*35238bceSAndroid Build Coastguard Worker }
1747*35238bceSAndroid Build Coastguard Worker
texsubimage2d_max_level(NegativeTestContext & ctx)1748*35238bceSAndroid Build Coastguard Worker void texsubimage2d_max_level(NegativeTestContext &ctx)
1749*35238bceSAndroid Build Coastguard Worker {
1750*35238bceSAndroid Build Coastguard Worker uint32_t textures[2];
1751*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, &textures[0]);
1752*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
1753*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1754*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, textures[1]);
1755*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, ctx.glTexImage2D(faceGL, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, 0););
1756*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1757*35238bceSAndroid Build Coastguard Worker
1758*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
1759*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
1760*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1761*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1762*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1763*35238bceSAndroid Build Coastguard Worker
1764*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
1765*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxCubemapSize = deLog2Floor32(ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
1766*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, {
1767*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(faceGL, log2MaxCubemapSize, 0, 0, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1768*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1769*35238bceSAndroid Build Coastguard Worker });
1770*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1771*35238bceSAndroid Build Coastguard Worker
1772*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, &textures[0]);
1773*35238bceSAndroid Build Coastguard Worker }
1774*35238bceSAndroid Build Coastguard Worker
texsubimage2d_neg_offset(NegativeTestContext & ctx)1775*35238bceSAndroid Build Coastguard Worker void texsubimage2d_neg_offset(NegativeTestContext &ctx)
1776*35238bceSAndroid Build Coastguard Worker {
1777*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
1778*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1779*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1780*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1781*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1782*35238bceSAndroid Build Coastguard Worker
1783*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if xoffset or yoffset are negative.");
1784*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, -1, 0, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1785*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1786*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, -1, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1787*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1788*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, -1, -1, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
1789*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1790*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1791*35238bceSAndroid Build Coastguard Worker
1792*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1793*35238bceSAndroid Build Coastguard Worker }
1794*35238bceSAndroid Build Coastguard Worker
texsubimage2d_invalid_offset(NegativeTestContext & ctx)1795*35238bceSAndroid Build Coastguard Worker void texsubimage2d_invalid_offset(NegativeTestContext &ctx)
1796*35238bceSAndroid Build Coastguard Worker {
1797*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
1798*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1799*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1800*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1801*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1802*35238bceSAndroid Build Coastguard Worker
1803*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
1804*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if xoffset + width > texture_width or yoffset + height > texture_height.");
1805*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 30, 0, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1806*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1807*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 30, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1808*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1809*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 30, 30, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1810*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1811*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1812*35238bceSAndroid Build Coastguard Worker
1813*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1814*35238bceSAndroid Build Coastguard Worker }
1815*35238bceSAndroid Build Coastguard Worker
texsubimage2d_neg_width_height(NegativeTestContext & ctx)1816*35238bceSAndroid Build Coastguard Worker void texsubimage2d_neg_width_height(NegativeTestContext &ctx)
1817*35238bceSAndroid Build Coastguard Worker {
1818*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
1819*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1820*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1821*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1822*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1823*35238bceSAndroid Build Coastguard Worker
1824*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is less than 0.");
1825*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1826*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1827*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1828*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1829*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1830*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1831*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1832*35238bceSAndroid Build Coastguard Worker
1833*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1834*35238bceSAndroid Build Coastguard Worker }
1835*35238bceSAndroid Build Coastguard Worker
texsubimage2d_invalid_buffer_target(NegativeTestContext & ctx)1836*35238bceSAndroid Build Coastguard Worker void texsubimage2d_invalid_buffer_target(NegativeTestContext &ctx)
1837*35238bceSAndroid Build Coastguard Worker {
1838*35238bceSAndroid Build Coastguard Worker uint32_t buf = 0x1234;
1839*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
1840*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(64);
1841*35238bceSAndroid Build Coastguard Worker
1842*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1843*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1844*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1845*35238bceSAndroid Build Coastguard Worker ctx.glGenBuffers(1, &buf);
1846*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
1847*35238bceSAndroid Build Coastguard Worker ctx.glBufferData(GL_PIXEL_UNPACK_BUFFER, 64, &data[0], GL_DYNAMIC_COPY);
1848*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1849*35238bceSAndroid Build Coastguard Worker
1850*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
1851*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and...");
1852*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the buffer object's data store is currently mapped.");
1853*35238bceSAndroid Build Coastguard Worker ctx.glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, 32, GL_MAP_WRITE_BIT);
1854*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1855*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1856*35238bceSAndroid Build Coastguard Worker ctx.glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
1857*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1858*35238bceSAndroid Build Coastguard Worker
1859*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the data would be unpacked from the buffer object such that the memory reads required would "
1860*35238bceSAndroid Build Coastguard Worker "exceed the data store size.");
1861*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 32, 32, GL_RGBA, GL_UNSIGNED_BYTE, 0);
1862*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1863*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1864*35238bceSAndroid Build Coastguard Worker
1865*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...data is not evenly divisible into the number of bytes needed to store in memory a datum "
1866*35238bceSAndroid Build Coastguard Worker "indicated by type.");
1867*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message << "// Set byte offset = 3" << TestLog::EndMessage;
1868*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
1869*35238bceSAndroid Build Coastguard Worker ctx.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 0);
1870*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
1871*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
1872*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, (const GLvoid *)3);
1873*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1874*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1875*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1876*35238bceSAndroid Build Coastguard Worker
1877*35238bceSAndroid Build Coastguard Worker ctx.glDeleteBuffers(1, &buf);
1878*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
1879*35238bceSAndroid Build Coastguard Worker }
1880*35238bceSAndroid Build Coastguard Worker
1881*35238bceSAndroid Build Coastguard Worker // glTexParameteri
1882*35238bceSAndroid Build Coastguard Worker
texparameteri(NegativeTestContext & ctx)1883*35238bceSAndroid Build Coastguard Worker void texparameteri(NegativeTestContext &ctx)
1884*35238bceSAndroid Build Coastguard Worker {
1885*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
1886*35238bceSAndroid Build Coastguard Worker GLint textureMode = -1;
1887*35238bceSAndroid Build Coastguard Worker
1888*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
1889*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
1890*35238bceSAndroid Build Coastguard Worker
1891*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
1892*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(0, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
1893*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1894*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, 0, GL_LINEAR);
1895*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1896*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(0, 0, GL_LINEAR);
1897*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1898*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1899*35238bceSAndroid Build Coastguard Worker
1900*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is enum and the value of param(s) is not a valid value.");
1901*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, textureMode);
1902*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1903*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, textureMode);
1904*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1905*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, textureMode);
1906*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1907*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, textureMode);
1908*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1909*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, textureMode);
1910*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1911*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, textureMode);
1912*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1913*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, textureMode);
1914*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1915*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, textureMode);
1916*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1917*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, textureMode);
1918*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1919*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, textureMode);
1920*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1921*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, textureMode);
1922*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1923*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, textureMode);
1924*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1925*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1926*35238bceSAndroid Build Coastguard Worker
1927*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if pname is GL_TEXTURE_BASE_LEVEL or GL_TEXTURE_MAX_LEVEL and "
1928*35238bceSAndroid Build Coastguard Worker "param(s) is negative.");
1929*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, -1);
1930*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1931*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, -1);
1932*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
1933*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1934*35238bceSAndroid Build Coastguard Worker
1935*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx))
1936*35238bceSAndroid Build Coastguard Worker {
1937*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is a non-scalar parameter.");
1938*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, 0);
1939*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1940*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1941*35238bceSAndroid Build Coastguard Worker }
1942*35238bceSAndroid Build Coastguard Worker
1943*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM error is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
1944*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname is not valid.");
1945*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BORDER_COLOR, textureMode);
1946*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1947*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, textureMode);
1948*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1949*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, textureMode);
1950*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1951*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_S, textureMode);
1952*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1953*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_T, textureMode);
1954*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1955*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_R, textureMode);
1956*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1957*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_LOD, textureMode);
1958*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1959*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAX_LOD, textureMode);
1960*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1961*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_MODE, textureMode);
1962*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1963*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_FUNC, textureMode);
1964*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1965*35238bceSAndroid Build Coastguard Worker
1966*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) ||
1967*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
1968*35238bceSAndroid Build Coastguard Worker {
1969*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BORDER_COLOR, textureMode);
1970*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1971*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_FILTER, textureMode);
1972*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1973*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAG_FILTER, textureMode);
1974*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1975*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_S, textureMode);
1976*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1977*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_T, textureMode);
1978*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1979*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_R, textureMode);
1980*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1981*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_LOD, textureMode);
1982*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1983*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAX_LOD, textureMode);
1984*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1985*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_MODE, textureMode);
1986*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1987*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_FUNC, textureMode);
1988*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
1989*35238bceSAndroid Build Coastguard Worker }
1990*35238bceSAndroid Build Coastguard Worker ctx.endSection();
1991*35238bceSAndroid Build Coastguard Worker
1992*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
1993*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname GL_TEXTURE_BASE_LEVEL is not 0.");
1994*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BASE_LEVEL, 1);
1995*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
1996*35238bceSAndroid Build Coastguard Worker
1997*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) ||
1998*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
1999*35238bceSAndroid Build Coastguard Worker {
2000*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BASE_LEVEL, 1);
2001*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2002*35238bceSAndroid Build Coastguard Worker }
2003*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2004*35238bceSAndroid Build Coastguard Worker
2005*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2006*35238bceSAndroid Build Coastguard Worker }
2007*35238bceSAndroid Build Coastguard Worker
2008*35238bceSAndroid Build Coastguard Worker // glTexParameterf
2009*35238bceSAndroid Build Coastguard Worker
texparameterf(NegativeTestContext & ctx)2010*35238bceSAndroid Build Coastguard Worker void texparameterf(NegativeTestContext &ctx)
2011*35238bceSAndroid Build Coastguard Worker {
2012*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
2013*35238bceSAndroid Build Coastguard Worker GLfloat textureMode = -1.0f;
2014*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2015*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2016*35238bceSAndroid Build Coastguard Worker
2017*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
2018*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(0, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
2019*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2020*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, 0, GL_LINEAR);
2021*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2022*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(0, 0, GL_LINEAR);
2023*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2024*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2025*35238bceSAndroid Build Coastguard Worker
2026*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is enum and the value of param(s) is not a valid value.");
2027*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, textureMode);
2028*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2029*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, textureMode);
2030*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2031*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, textureMode);
2032*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2033*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, textureMode);
2034*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2035*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, textureMode);
2036*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2037*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, textureMode);
2038*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2039*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, textureMode);
2040*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2041*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, textureMode);
2042*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2043*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, textureMode);
2044*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2045*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, textureMode);
2046*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2047*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, textureMode);
2048*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2049*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, textureMode);
2050*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2051*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2052*35238bceSAndroid Build Coastguard Worker
2053*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if pname is GL_TEXTURE_BASE_LEVEL or GL_TEXTURE_MAX_LEVEL and "
2054*35238bceSAndroid Build Coastguard Worker "param(s) is negative.");
2055*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, -1.0f);
2056*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2057*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, -1.0f);
2058*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2059*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2060*35238bceSAndroid Build Coastguard Worker
2061*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx))
2062*35238bceSAndroid Build Coastguard Worker {
2063*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is a non-scalar parameter.");
2064*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, 0.0f);
2065*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2066*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2067*35238bceSAndroid Build Coastguard Worker }
2068*35238bceSAndroid Build Coastguard Worker
2069*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM error is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2070*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname is not valid.");
2071*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BORDER_COLOR, textureMode);
2072*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2073*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, textureMode);
2074*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2075*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, textureMode);
2076*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2077*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_S, textureMode);
2078*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2079*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_T, textureMode);
2080*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2081*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_R, textureMode);
2082*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2083*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_LOD, textureMode);
2084*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2085*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAX_LOD, textureMode);
2086*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2087*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_MODE, textureMode);
2088*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2089*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_FUNC, textureMode);
2090*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2091*35238bceSAndroid Build Coastguard Worker
2092*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) ||
2093*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
2094*35238bceSAndroid Build Coastguard Worker {
2095*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BORDER_COLOR, textureMode);
2096*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2097*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_FILTER, textureMode);
2098*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2099*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAG_FILTER, textureMode);
2100*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2101*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_S, textureMode);
2102*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2103*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_T, textureMode);
2104*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2105*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_R, textureMode);
2106*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2107*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_LOD, textureMode);
2108*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2109*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAX_LOD, textureMode);
2110*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2111*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_MODE, textureMode);
2112*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2113*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_FUNC, textureMode);
2114*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2115*35238bceSAndroid Build Coastguard Worker }
2116*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2117*35238bceSAndroid Build Coastguard Worker
2118*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2119*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname GL_TEXTURE_BASE_LEVEL is not 0.");
2120*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BASE_LEVEL, 1.0f);
2121*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2122*35238bceSAndroid Build Coastguard Worker
2123*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) ||
2124*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
2125*35238bceSAndroid Build Coastguard Worker {
2126*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BASE_LEVEL, 1.0f);
2127*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2128*35238bceSAndroid Build Coastguard Worker }
2129*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2130*35238bceSAndroid Build Coastguard Worker
2131*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2132*35238bceSAndroid Build Coastguard Worker }
2133*35238bceSAndroid Build Coastguard Worker
2134*35238bceSAndroid Build Coastguard Worker // glTexParameteriv
2135*35238bceSAndroid Build Coastguard Worker
texparameteriv(NegativeTestContext & ctx)2136*35238bceSAndroid Build Coastguard Worker void texparameteriv(NegativeTestContext &ctx)
2137*35238bceSAndroid Build Coastguard Worker {
2138*35238bceSAndroid Build Coastguard Worker GLint params[4] = {GL_LINEAR, GL_INVALID_ENUM, GL_INVALID_ENUM, GL_INVALID_ENUM};
2139*35238bceSAndroid Build Coastguard Worker
2140*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
2141*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2142*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2143*35238bceSAndroid Build Coastguard Worker
2144*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
2145*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(0, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
2146*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2147*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, 0, ¶ms[0]);
2148*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2149*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(0, 0, ¶ms[0]);
2150*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2151*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2152*35238bceSAndroid Build Coastguard Worker
2153*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is enum and the value of param(s) is not a valid value.");
2154*35238bceSAndroid Build Coastguard Worker params[0] = -1;
2155*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, ¶ms[0]);
2156*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2157*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, ¶ms[0]);
2158*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2159*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, ¶ms[0]);
2160*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2161*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
2162*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2163*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
2164*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2165*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, ¶ms[0]);
2166*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2167*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, ¶ms[0]);
2168*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2169*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, ¶ms[0]);
2170*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2171*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, ¶ms[0]);
2172*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2173*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ¶ms[0]);
2174*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2175*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, ¶ms[0]);
2176*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2177*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, ¶ms[0]);
2178*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2179*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2180*35238bceSAndroid Build Coastguard Worker
2181*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if pname is GL_TEXTURE_BASE_LEVEL or GL_TEXTURE_MAX_LEVEL and "
2182*35238bceSAndroid Build Coastguard Worker "param(s) is negative.");
2183*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, ¶ms[0]);
2184*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2185*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, ¶ms[0]);
2186*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2187*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2188*35238bceSAndroid Build Coastguard Worker
2189*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM error is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2190*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname is not valid.");
2191*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BORDER_COLOR, ¶ms[0]);
2192*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2193*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
2194*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2195*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
2196*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2197*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_S, ¶ms[0]);
2198*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2199*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_T, ¶ms[0]);
2200*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2201*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_R, ¶ms[0]);
2202*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2203*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_LOD, ¶ms[0]);
2204*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2205*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAX_LOD, ¶ms[0]);
2206*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2207*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_MODE, ¶ms[0]);
2208*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2209*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_FUNC, ¶ms[0]);
2210*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2211*35238bceSAndroid Build Coastguard Worker
2212*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) ||
2213*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
2214*35238bceSAndroid Build Coastguard Worker {
2215*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BORDER_COLOR, ¶ms[0]);
2216*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2217*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
2218*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2219*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
2220*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2221*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_S, ¶ms[0]);
2222*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2223*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_T, ¶ms[0]);
2224*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2225*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_R, ¶ms[0]);
2226*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2227*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_LOD, ¶ms[0]);
2228*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2229*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAX_LOD, ¶ms[0]);
2230*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2231*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_MODE, ¶ms[0]);
2232*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2233*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_FUNC, ¶ms[0]);
2234*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2235*35238bceSAndroid Build Coastguard Worker }
2236*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2237*35238bceSAndroid Build Coastguard Worker
2238*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2239*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname GL_TEXTURE_BASE_LEVEL is not 0.");
2240*35238bceSAndroid Build Coastguard Worker params[0] = 1;
2241*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BASE_LEVEL, ¶ms[0]);
2242*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2243*35238bceSAndroid Build Coastguard Worker
2244*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) ||
2245*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
2246*35238bceSAndroid Build Coastguard Worker {
2247*35238bceSAndroid Build Coastguard Worker params[0] = 1;
2248*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BASE_LEVEL, ¶ms[0]);
2249*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2250*35238bceSAndroid Build Coastguard Worker }
2251*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2252*35238bceSAndroid Build Coastguard Worker
2253*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2254*35238bceSAndroid Build Coastguard Worker }
2255*35238bceSAndroid Build Coastguard Worker
2256*35238bceSAndroid Build Coastguard Worker // glTexParameterfv
2257*35238bceSAndroid Build Coastguard Worker
texparameterfv(NegativeTestContext & ctx)2258*35238bceSAndroid Build Coastguard Worker void texparameterfv(NegativeTestContext &ctx)
2259*35238bceSAndroid Build Coastguard Worker {
2260*35238bceSAndroid Build Coastguard Worker GLfloat params[4] = {GL_LINEAR, GL_INVALID_ENUM, GL_INVALID_ENUM, GL_INVALID_ENUM};
2261*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
2262*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2263*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2264*35238bceSAndroid Build Coastguard Worker
2265*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target or pname is not one of the accepted defined values.");
2266*35238bceSAndroid Build Coastguard Worker params[0] = GL_LINEAR;
2267*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(0, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
2268*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2269*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, 0, ¶ms[0]);
2270*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2271*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(0, 0, ¶ms[0]);
2272*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2273*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2274*35238bceSAndroid Build Coastguard Worker
2275*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is enum and the value of param(s) is not a valid value.");
2276*35238bceSAndroid Build Coastguard Worker params[0] = -1.0f;
2277*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, ¶ms[0]);
2278*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2279*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, ¶ms[0]);
2280*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2281*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, ¶ms[0]);
2282*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2283*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
2284*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2285*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
2286*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2287*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, ¶ms[0]);
2288*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2289*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, ¶ms[0]);
2290*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2291*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, ¶ms[0]);
2292*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2293*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, ¶ms[0]);
2294*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2295*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ¶ms[0]);
2296*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2297*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, ¶ms[0]);
2298*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2299*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, ¶ms[0]);
2300*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2301*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2302*35238bceSAndroid Build Coastguard Worker
2303*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if pname is GL_TEXTURE_BASE_LEVEL or GL_TEXTURE_MAX_LEVEL and "
2304*35238bceSAndroid Build Coastguard Worker "param(s) is negative.");
2305*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, ¶ms[0]);
2306*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2307*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, ¶ms[0]);
2308*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2309*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2310*35238bceSAndroid Build Coastguard Worker
2311*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM error is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2312*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname is not valid.");
2313*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BORDER_COLOR, ¶ms[0]);
2314*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2315*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
2316*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2317*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
2318*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2319*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_S, ¶ms[0]);
2320*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2321*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_T, ¶ms[0]);
2322*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2323*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_R, ¶ms[0]);
2324*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2325*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_LOD, ¶ms[0]);
2326*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2327*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAX_LOD, ¶ms[0]);
2328*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2329*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_MODE, ¶ms[0]);
2330*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2331*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_FUNC, ¶ms[0]);
2332*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2333*35238bceSAndroid Build Coastguard Worker
2334*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) ||
2335*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
2336*35238bceSAndroid Build Coastguard Worker {
2337*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BORDER_COLOR, ¶ms[0]);
2338*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2339*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_FILTER, ¶ms[0]);
2340*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2341*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
2342*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2343*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_S, ¶ms[0]);
2344*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2345*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_T, ¶ms[0]);
2346*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2347*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_R, ¶ms[0]);
2348*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2349*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_LOD, ¶ms[0]);
2350*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2351*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAX_LOD, ¶ms[0]);
2352*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2353*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_MODE, ¶ms[0]);
2354*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2355*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_FUNC, ¶ms[0]);
2356*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2357*35238bceSAndroid Build Coastguard Worker }
2358*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2359*35238bceSAndroid Build Coastguard Worker
2360*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2361*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname GL_TEXTURE_BASE_LEVEL is not 0.");
2362*35238bceSAndroid Build Coastguard Worker params[0] = 1.0f;
2363*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BASE_LEVEL, ¶ms[0]);
2364*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2365*35238bceSAndroid Build Coastguard Worker
2366*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) ||
2367*35238bceSAndroid Build Coastguard Worker ctx.getContextInfo().isExtensionSupported("GL_OES_texture_storage_multisample_2d_array"))
2368*35238bceSAndroid Build Coastguard Worker {
2369*35238bceSAndroid Build Coastguard Worker params[0] = 1.0f;
2370*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BASE_LEVEL, ¶ms[0]);
2371*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2372*35238bceSAndroid Build Coastguard Worker }
2373*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2374*35238bceSAndroid Build Coastguard Worker
2375*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2376*35238bceSAndroid Build Coastguard Worker }
2377*35238bceSAndroid Build Coastguard Worker
2378*35238bceSAndroid Build Coastguard Worker // glTexParameterIiv
2379*35238bceSAndroid Build Coastguard Worker
texparameterIiv(NegativeTestContext & ctx)2380*35238bceSAndroid Build Coastguard Worker void texparameterIiv(NegativeTestContext &ctx)
2381*35238bceSAndroid Build Coastguard Worker {
2382*35238bceSAndroid Build Coastguard Worker if (!supportsES32orGL45(ctx))
2383*35238bceSAndroid Build Coastguard Worker throw tcu::NotSupportedError("glTexParameterIiv is not supported.", DE_NULL, __FILE__, __LINE__);
2384*35238bceSAndroid Build Coastguard Worker
2385*35238bceSAndroid Build Coastguard Worker GLint textureMode[] = {GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_INVALID_ENUM, GL_INVALID_ENUM};
2386*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is not a valid target.");
2387*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(0, GL_DEPTH_STENCIL_TEXTURE_MODE, textureMode);
2388*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2389*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2390*35238bceSAndroid Build Coastguard Worker
2391*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is not a valid parameter.");
2392*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, 0, textureMode);
2393*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2394*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2395*35238bceSAndroid Build Coastguard Worker
2396*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is enum and the value of param(s) is not a valid value.");
2397*35238bceSAndroid Build Coastguard Worker textureMode[0] = -1;
2398*35238bceSAndroid Build Coastguard Worker textureMode[1] = -1;
2399*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, textureMode);
2400*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2401*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, textureMode);
2402*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2403*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, textureMode);
2404*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2405*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, textureMode);
2406*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2407*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, textureMode);
2408*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2409*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, textureMode);
2410*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2411*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, textureMode);
2412*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2413*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, textureMode);
2414*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2415*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, textureMode);
2416*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2417*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, textureMode);
2418*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2419*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, textureMode);
2420*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2421*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, textureMode);
2422*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2423*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2424*35238bceSAndroid Build Coastguard Worker
2425*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if pname is GL_TEXTURE_BASE_LEVEL or GL_TEXTURE_MAX_LEVEL and "
2426*35238bceSAndroid Build Coastguard Worker "param(s) is negative.");
2427*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, textureMode);
2428*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2429*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, textureMode);
2430*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2431*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2432*35238bceSAndroid Build Coastguard Worker
2433*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM error is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2434*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname is not valid.");
2435*35238bceSAndroid Build Coastguard Worker textureMode[0] = 0;
2436*35238bceSAndroid Build Coastguard Worker textureMode[1] = 0;
2437*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BORDER_COLOR, textureMode);
2438*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2439*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, textureMode);
2440*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2441*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, textureMode);
2442*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2443*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_S, textureMode);
2444*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2445*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_T, textureMode);
2446*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2447*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_R, textureMode);
2448*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2449*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_LOD, textureMode);
2450*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2451*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAX_LOD, textureMode);
2452*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2453*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_MODE, textureMode);
2454*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2455*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_FUNC, textureMode);
2456*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2457*35238bceSAndroid Build Coastguard Worker
2458*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BORDER_COLOR, textureMode);
2459*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2460*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_FILTER, textureMode);
2461*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2462*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAG_FILTER, textureMode);
2463*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2464*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_S, textureMode);
2465*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2466*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_T, textureMode);
2467*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2468*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_R, textureMode);
2469*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2470*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_LOD, textureMode);
2471*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2472*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAX_LOD, textureMode);
2473*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2474*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_MODE, textureMode);
2475*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2476*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_FUNC, textureMode);
2477*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2478*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2479*35238bceSAndroid Build Coastguard Worker
2480*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2481*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname GL_TEXTURE_BASE_LEVEL is not 0.");
2482*35238bceSAndroid Build Coastguard Worker textureMode[0] = 1;
2483*35238bceSAndroid Build Coastguard Worker textureMode[1] = 1;
2484*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BASE_LEVEL, textureMode);
2485*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2486*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BASE_LEVEL, textureMode);
2487*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2488*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2489*35238bceSAndroid Build Coastguard Worker }
2490*35238bceSAndroid Build Coastguard Worker
2491*35238bceSAndroid Build Coastguard Worker // glTexParameterIuiv
2492*35238bceSAndroid Build Coastguard Worker
texparameterIuiv(NegativeTestContext & ctx)2493*35238bceSAndroid Build Coastguard Worker void texparameterIuiv(NegativeTestContext &ctx)
2494*35238bceSAndroid Build Coastguard Worker {
2495*35238bceSAndroid Build Coastguard Worker if (!supportsES32orGL45(ctx))
2496*35238bceSAndroid Build Coastguard Worker throw tcu::NotSupportedError("glTexParameterIuiv is not supported.", DE_NULL, __FILE__, __LINE__);
2497*35238bceSAndroid Build Coastguard Worker
2498*35238bceSAndroid Build Coastguard Worker GLuint textureMode[] = {GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_INVALID_ENUM, GL_INVALID_ENUM};
2499*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is not a valid target.");
2500*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(0, GL_DEPTH_STENCIL_TEXTURE_MODE, textureMode);
2501*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2502*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2503*35238bceSAndroid Build Coastguard Worker
2504*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is not a valid parameter.");
2505*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, 0, textureMode);
2506*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2507*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2508*35238bceSAndroid Build Coastguard Worker
2509*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is enum and the value of param(s) is not a valid value.");
2510*35238bceSAndroid Build Coastguard Worker textureMode[0] = GL_DONT_CARE;
2511*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, textureMode);
2512*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2513*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, textureMode);
2514*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2515*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, textureMode);
2516*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2517*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, textureMode);
2518*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2519*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, textureMode);
2520*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2521*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, textureMode);
2522*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2523*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, textureMode);
2524*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2525*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, textureMode);
2526*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2527*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, textureMode);
2528*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2529*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, textureMode);
2530*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2531*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, textureMode);
2532*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2533*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, textureMode);
2534*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2535*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2536*35238bceSAndroid Build Coastguard Worker
2537*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM error is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2538*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname is not valid.");
2539*35238bceSAndroid Build Coastguard Worker textureMode[0] = 0;
2540*35238bceSAndroid Build Coastguard Worker textureMode[1] = 0;
2541*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BORDER_COLOR, textureMode);
2542*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2543*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, textureMode);
2544*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2545*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, textureMode);
2546*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2547*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_S, textureMode);
2548*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2549*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_T, textureMode);
2550*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2551*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_R, textureMode);
2552*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2553*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_LOD, textureMode);
2554*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2555*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAX_LOD, textureMode);
2556*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2557*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_MODE, textureMode);
2558*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2559*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_COMPARE_FUNC, textureMode);
2560*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2561*35238bceSAndroid Build Coastguard Worker
2562*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BORDER_COLOR, textureMode);
2563*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2564*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_FILTER, textureMode);
2565*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2566*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAG_FILTER, textureMode);
2567*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2568*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_S, textureMode);
2569*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2570*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_T, textureMode);
2571*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2572*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_WRAP_R, textureMode);
2573*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2574*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MIN_LOD, textureMode);
2575*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2576*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_MAX_LOD, textureMode);
2577*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2578*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_MODE, textureMode);
2579*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2580*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_COMPARE_FUNC, textureMode);
2581*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2582*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2583*35238bceSAndroid Build Coastguard Worker
2584*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if target is GL_TEXTURE_2D_MULTISAMPLE or "
2585*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_MULTISAMPLE_ARRAY and pname GL_TEXTURE_BASE_LEVEL is not 0.");
2586*35238bceSAndroid Build Coastguard Worker textureMode[0] = 1;
2587*35238bceSAndroid Build Coastguard Worker textureMode[1] = 1;
2588*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BASE_LEVEL, textureMode);
2589*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2590*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BASE_LEVEL, textureMode);
2591*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2592*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2593*35238bceSAndroid Build Coastguard Worker }
2594*35238bceSAndroid Build Coastguard Worker
2595*35238bceSAndroid Build Coastguard Worker // glCompressedTexSubImage2D
2596*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage2d(NegativeTestContext & ctx)2597*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage2d(NegativeTestContext &ctx)
2598*35238bceSAndroid Build Coastguard Worker {
2599*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
2600*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(0, 0, 0, 0, 0, 0, GL_COMPRESSED_RGB8_ETC2, 0, 0);
2601*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2602*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2603*35238bceSAndroid Build Coastguard Worker
2604*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
2605*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2606*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2607*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 18, 18, 0, etc2EacDataSize(18, 18), 0);
2608*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
2609*35238bceSAndroid Build Coastguard Worker
2610*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if format does not match the internal format of the texture "
2611*35238bceSAndroid Build Coastguard Worker "image being modified.");
2612*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, GL_COMPRESSED_RGB8_ETC2, 0, 0);
2613*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2614*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2615*35238bceSAndroid Build Coastguard Worker
2616*35238bceSAndroid Build Coastguard Worker ctx.beginSection("For ETC2/EAC images GL_INVALID_OPERATION is generated if width is not a multiple of four, and "
2617*35238bceSAndroid Build Coastguard Worker "width + xoffset is not equal to the width of the texture level.");
2618*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 4, 0, 10, 4, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(10, 4),
2619*35238bceSAndroid Build Coastguard Worker 0);
2620*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2621*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2622*35238bceSAndroid Build Coastguard Worker
2623*35238bceSAndroid Build Coastguard Worker ctx.beginSection("For ETC2/EAC images GL_INVALID_OPERATION is generated if height is not a multiple of four, and "
2624*35238bceSAndroid Build Coastguard Worker "height + yoffset is not equal to the height of the texture level.");
2625*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 4, 4, 10, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(4, 10),
2626*35238bceSAndroid Build Coastguard Worker 0);
2627*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2628*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2629*35238bceSAndroid Build Coastguard Worker
2630*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
2631*35238bceSAndroid Build Coastguard Worker "For ETC2/EAC images GL_INVALID_OPERATION is generated if xoffset or yoffset is not a multiple of four.");
2632*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 1, 4, 4, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(4, 4), 0);
2633*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2634*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 1, 0, 4, 4, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(4, 4), 0);
2635*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2636*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 1, 1, 4, 4, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(4, 4), 0);
2637*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2638*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2639*35238bceSAndroid Build Coastguard Worker
2640*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2641*35238bceSAndroid Build Coastguard Worker }
2642*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage2d_neg_level(NegativeTestContext & ctx)2643*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage2d_neg_level(NegativeTestContext &ctx)
2644*35238bceSAndroid Build Coastguard Worker {
2645*35238bceSAndroid Build Coastguard Worker uint32_t textures[2];
2646*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, &textures[0]);
2647*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
2648*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 18, 18, 0, etc2EacDataSize(18, 18), 0);
2649*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, textures[1]);
2650*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, ctx.glCompressedTexImage2D(faceGL, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 18, 18, 0,
2651*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(18, 18), 0););
2652*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
2653*35238bceSAndroid Build Coastguard Worker
2654*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
2655*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, -1, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2656*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2657*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2658*35238bceSAndroid Build Coastguard Worker
2659*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
2660*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, {
2661*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(faceGL, -1, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2662*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2663*35238bceSAndroid Build Coastguard Worker });
2664*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2665*35238bceSAndroid Build Coastguard Worker
2666*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, &textures[0]);
2667*35238bceSAndroid Build Coastguard Worker }
2668*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage2d_max_level(NegativeTestContext & ctx)2669*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage2d_max_level(NegativeTestContext &ctx)
2670*35238bceSAndroid Build Coastguard Worker {
2671*35238bceSAndroid Build Coastguard Worker uint32_t textures[2];
2672*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, &textures[0]);
2673*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
2674*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 18, 18, 0, etc2EacDataSize(18, 18), 0);
2675*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, textures[1]);
2676*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, ctx.glCompressedTexImage2D(faceGL, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 18, 18, 0,
2677*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(18, 18), 0););
2678*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
2679*35238bceSAndroid Build Coastguard Worker
2680*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
2681*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
2682*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2683*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2684*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2685*35238bceSAndroid Build Coastguard Worker
2686*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
2687*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxCubemapSize = deLog2Floor32(ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
2688*35238bceSAndroid Build Coastguard Worker FOR_CUBE_FACES(faceGL, {
2689*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(faceGL, log2MaxCubemapSize, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2690*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2691*35238bceSAndroid Build Coastguard Worker });
2692*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2693*35238bceSAndroid Build Coastguard Worker
2694*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, &textures[0]);
2695*35238bceSAndroid Build Coastguard Worker }
2696*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage2d_neg_offset(NegativeTestContext & ctx)2697*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage2d_neg_offset(NegativeTestContext &ctx)
2698*35238bceSAndroid Build Coastguard Worker {
2699*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
2700*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2701*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2702*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 8, 8, 0, etc2EacDataSize(8, 8), 0);
2703*35238bceSAndroid Build Coastguard Worker
2704*35238bceSAndroid Build Coastguard Worker // \note Both GL_INVALID_VALUE and GL_INVALID_OPERATION are valid here since implementation may
2705*35238bceSAndroid Build Coastguard Worker // first check if offsets are valid for certain format and only after that check that they
2706*35238bceSAndroid Build Coastguard Worker // are not negative.
2707*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE or GL_INVALID_OPERATION is generated if xoffset or yoffset are negative.");
2708*35238bceSAndroid Build Coastguard Worker
2709*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, -4, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2710*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2711*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, -4, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2712*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2713*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, -4, -4, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2714*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2715*35238bceSAndroid Build Coastguard Worker
2716*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2717*35238bceSAndroid Build Coastguard Worker
2718*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2719*35238bceSAndroid Build Coastguard Worker }
2720*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage2d_invalid_offset(NegativeTestContext & ctx)2721*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage2d_invalid_offset(NegativeTestContext &ctx)
2722*35238bceSAndroid Build Coastguard Worker {
2723*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
2724*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2725*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2726*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 0, etc2EacDataSize(16, 16), 0);
2727*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
2728*35238bceSAndroid Build Coastguard Worker
2729*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE or GL_INVALID_OPERATION is generated if xoffset + width > texture_width or "
2730*35238bceSAndroid Build Coastguard Worker "yoffset + height > texture_height.");
2731*35238bceSAndroid Build Coastguard Worker
2732*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 12, 0, 8, 4, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(8, 4),
2733*35238bceSAndroid Build Coastguard Worker 0);
2734*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2735*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 12, 4, 8, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(4, 8),
2736*35238bceSAndroid Build Coastguard Worker 0);
2737*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2738*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 12, 12, 8, 8, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(8, 8),
2739*35238bceSAndroid Build Coastguard Worker 0);
2740*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2741*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2742*35238bceSAndroid Build Coastguard Worker
2743*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2744*35238bceSAndroid Build Coastguard Worker }
2745*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage2d_neg_width_height(NegativeTestContext & ctx)2746*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage2d_neg_width_height(NegativeTestContext &ctx)
2747*35238bceSAndroid Build Coastguard Worker {
2748*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
2749*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2750*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2751*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 0, etc2EacDataSize(16, 16), 0);
2752*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
2753*35238bceSAndroid Build Coastguard Worker
2754*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE or GL_INVALID_OPERATION is generated if width or height is less than 0.");
2755*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -4, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2756*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2757*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, -4, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2758*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2759*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -4, -4, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
2760*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
2761*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2762*35238bceSAndroid Build Coastguard Worker
2763*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2764*35238bceSAndroid Build Coastguard Worker }
2765*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage2d_invalid_size(NegativeTestContext & ctx)2766*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage2d_invalid_size(NegativeTestContext &ctx)
2767*35238bceSAndroid Build Coastguard Worker {
2768*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
2769*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2770*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2771*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 0, etc2EacDataSize(16, 16), 0);
2772*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
2773*35238bceSAndroid Build Coastguard Worker
2774*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if imageSize is not consistent with the format, dimensions, and "
2775*35238bceSAndroid Build Coastguard Worker "contents of the specified compressed image data.");
2776*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0);
2777*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2778*35238bceSAndroid Build Coastguard Worker
2779*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 16, 16, GL_COMPRESSED_RGBA8_ETC2_EAC, 4 * 4 * 16 - 1, 0);
2780*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2781*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2782*35238bceSAndroid Build Coastguard Worker
2783*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2784*35238bceSAndroid Build Coastguard Worker }
2785*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage2d_invalid_buffer_target(NegativeTestContext & ctx)2786*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage2d_invalid_buffer_target(NegativeTestContext &ctx)
2787*35238bceSAndroid Build Coastguard Worker {
2788*35238bceSAndroid Build Coastguard Worker uint32_t buf = 0x1234;
2789*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
2790*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(128);
2791*35238bceSAndroid Build Coastguard Worker
2792*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
2793*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
2794*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 0, etc2EacDataSize(16, 16), 0);
2795*35238bceSAndroid Build Coastguard Worker ctx.glGenBuffers(1, &buf);
2796*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
2797*35238bceSAndroid Build Coastguard Worker ctx.glBufferData(GL_PIXEL_UNPACK_BUFFER, 128, &data[0], GL_DYNAMIC_COPY);
2798*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
2799*35238bceSAndroid Build Coastguard Worker
2800*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
2801*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and...");
2802*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the buffer object's data store is currently mapped.");
2803*35238bceSAndroid Build Coastguard Worker ctx.glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, 128, GL_MAP_WRITE_BIT);
2804*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(4, 4), 0);
2805*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2806*35238bceSAndroid Build Coastguard Worker ctx.glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
2807*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2808*35238bceSAndroid Build Coastguard Worker
2809*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the data would be unpacked from the buffer object such that the memory reads required would "
2810*35238bceSAndroid Build Coastguard Worker "exceed the data store size.");
2811*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 16, 16, GL_COMPRESSED_RGBA8_ETC2_EAC, etc2EacDataSize(16, 16),
2812*35238bceSAndroid Build Coastguard Worker 0);
2813*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2814*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2815*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2816*35238bceSAndroid Build Coastguard Worker
2817*35238bceSAndroid Build Coastguard Worker ctx.glDeleteBuffers(1, &buf);
2818*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
2819*35238bceSAndroid Build Coastguard Worker }
2820*35238bceSAndroid Build Coastguard Worker
2821*35238bceSAndroid Build Coastguard Worker // glTexImage3D
2822*35238bceSAndroid Build Coastguard Worker
teximage3d(NegativeTestContext & ctx)2823*35238bceSAndroid Build Coastguard Worker void teximage3d(NegativeTestContext &ctx)
2824*35238bceSAndroid Build Coastguard Worker {
2825*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
2826*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(0, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2827*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2828*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2829*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2830*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2831*35238bceSAndroid Build Coastguard Worker
2832*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if type is not a type constant.");
2833*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, 0, 0);
2834*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2835*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2836*35238bceSAndroid Build Coastguard Worker
2837*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if format is not an accepted format constant.");
2838*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 1, 1, 1, 0, 0, GL_UNSIGNED_BYTE, 0);
2839*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
2840*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2841*35238bceSAndroid Build Coastguard Worker
2842*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if internalFormat is not one of the accepted resolution and format "
2843*35238bceSAndroid Build Coastguard Worker "symbolic constants.");
2844*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, 0, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2845*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2846*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2847*35238bceSAndroid Build Coastguard Worker
2848*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if target is GL_TEXTURE_3D and format is GL_DEPTH_COMPONENT, "
2849*35238bceSAndroid Build Coastguard Worker "or GL_DEPTH_STENCIL.");
2850*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_DEPTH_STENCIL, 1, 1, 1, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, 0);
2851*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2852*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_DEPTH_COMPONENT, 1, 1, 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0);
2853*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2854*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2855*35238bceSAndroid Build Coastguard Worker
2856*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
2857*35238bceSAndroid Build Coastguard Worker "GL_INVALID_OPERATION is generated if the combination of internalFormat, format and type is invalid.");
2858*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGB, GL_UNSIGNED_SHORT_4_4_4_4, 0);
2859*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2860*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB5_A1, 1, 1, 1, 0, GL_RGB, GL_UNSIGNED_SHORT_5_5_5_1, 0);
2861*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2862*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB10_A2, 1, 1, 1, 0, GL_RGB, GL_UNSIGNED_INT_2_10_10_10_REV, 0);
2863*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2864*35238bceSAndroid Build Coastguard Worker
2865*35238bceSAndroid Build Coastguard Worker if (glu::isContextTypeES(ctx.getRenderContext().getType()))
2866*35238bceSAndroid Build Coastguard Worker {
2867*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2868*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2869*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA32UI, 1, 1, 1, 0, GL_RGBA_INTEGER, GL_INT, 0);
2870*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
2871*35238bceSAndroid Build Coastguard Worker }
2872*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2873*35238bceSAndroid Build Coastguard Worker
2874*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
2875*35238bceSAndroid Build Coastguard Worker {
2876*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
2877*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if target is GL_TEXTURE_CUBE_MAP_ARRAY and width and height are not equal.");
2878*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, 2, 1, 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2879*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2880*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2881*35238bceSAndroid Build Coastguard Worker
2882*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
2883*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if target is GL_TEXTURE_CUBE_MAP_ARRAY and depth is not a multiple of six.");
2884*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2885*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2886*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2887*35238bceSAndroid Build Coastguard Worker }
2888*35238bceSAndroid Build Coastguard Worker }
2889*35238bceSAndroid Build Coastguard Worker
teximage3d_neg_level(NegativeTestContext & ctx)2890*35238bceSAndroid Build Coastguard Worker void teximage3d_neg_level(NegativeTestContext &ctx)
2891*35238bceSAndroid Build Coastguard Worker {
2892*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
2893*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, -1, GL_RGB, 1, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
2894*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2895*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, -1, GL_RGB, 1, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
2896*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2897*35238bceSAndroid Build Coastguard Worker
2898*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
2899*35238bceSAndroid Build Coastguard Worker {
2900*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, -1, GL_RGBA, 1, 1, 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2901*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2902*35238bceSAndroid Build Coastguard Worker }
2903*35238bceSAndroid Build Coastguard Worker
2904*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2905*35238bceSAndroid Build Coastguard Worker }
2906*35238bceSAndroid Build Coastguard Worker
teximage3d_max_level(NegativeTestContext & ctx)2907*35238bceSAndroid Build Coastguard Worker void teximage3d_max_level(NegativeTestContext &ctx)
2908*35238bceSAndroid Build Coastguard Worker {
2909*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_3D_TEXTURE_SIZE).");
2910*35238bceSAndroid Build Coastguard Worker uint32_t log2Max3DTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_3D_TEXTURE_SIZE)) + 1;
2911*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, log2Max3DTextureSize, GL_RGB, 1, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
2912*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2913*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2914*35238bceSAndroid Build Coastguard Worker
2915*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
2916*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
2917*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, log2MaxTextureSize, GL_RGB, 1, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
2918*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2919*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2920*35238bceSAndroid Build Coastguard Worker }
2921*35238bceSAndroid Build Coastguard Worker
teximage3d_neg_width_height_depth(NegativeTestContext & ctx)2922*35238bceSAndroid Build Coastguard Worker void teximage3d_neg_width_height_depth(NegativeTestContext &ctx)
2923*35238bceSAndroid Build Coastguard Worker {
2924*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height is less than 0.");
2925*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, -1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2926*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2927*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 1, -1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2928*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2929*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 1, 1, -1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2930*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2931*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, -1, -1, -1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2932*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2933*35238bceSAndroid Build Coastguard Worker
2934*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, -1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2935*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2936*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, -1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2937*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2938*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, 1, -1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2939*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2940*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, -1, -1, -1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2941*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2942*35238bceSAndroid Build Coastguard Worker
2943*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
2944*35238bceSAndroid Build Coastguard Worker {
2945*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, -1, 1, 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2946*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2947*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, 1, -1, 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2948*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2949*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, 1, 1, -6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2950*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2951*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, -1, -1, -6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2952*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2953*35238bceSAndroid Build Coastguard Worker }
2954*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2955*35238bceSAndroid Build Coastguard Worker }
2956*35238bceSAndroid Build Coastguard Worker
teximage3d_max_width_height_depth(NegativeTestContext & ctx)2957*35238bceSAndroid Build Coastguard Worker void teximage3d_max_width_height_depth(NegativeTestContext &ctx)
2958*35238bceSAndroid Build Coastguard Worker {
2959*35238bceSAndroid Build Coastguard Worker int max3DTextureSize = ctx.getInteger(GL_MAX_3D_TEXTURE_SIZE) + 1;
2960*35238bceSAndroid Build Coastguard Worker int maxTextureSize = ctx.getInteger(GL_MAX_TEXTURE_SIZE) + 1;
2961*35238bceSAndroid Build Coastguard Worker int maxTextureLayers = ctx.getInteger(GL_MAX_ARRAY_TEXTURE_LAYERS) + 1;
2962*35238bceSAndroid Build Coastguard Worker
2963*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width, height or depth is greater than GL_MAX_3D_TEXTURE_SIZE.");
2964*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, max3DTextureSize, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2965*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2966*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 1, max3DTextureSize, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2967*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2968*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 1, 1, max3DTextureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2969*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2970*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, max3DTextureSize, max3DTextureSize, max3DTextureSize, 0, GL_RGBA,
2971*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
2972*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2973*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2974*35238bceSAndroid Build Coastguard Worker
2975*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width, height or depth is greater than GL_MAX_TEXTURE_SIZE.");
2976*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, maxTextureSize, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2977*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2978*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, maxTextureSize, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2979*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2980*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, 1, maxTextureLayers, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
2981*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2982*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, maxTextureSize, maxTextureSize, maxTextureLayers, 0, GL_RGBA,
2983*35238bceSAndroid Build Coastguard Worker GL_UNSIGNED_BYTE, 0);
2984*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2985*35238bceSAndroid Build Coastguard Worker ctx.endSection();
2986*35238bceSAndroid Build Coastguard Worker }
2987*35238bceSAndroid Build Coastguard Worker
teximage3d_invalid_border(NegativeTestContext & ctx)2988*35238bceSAndroid Build Coastguard Worker void teximage3d_invalid_border(NegativeTestContext &ctx)
2989*35238bceSAndroid Build Coastguard Worker {
2990*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if border is not 0 or 1.");
2991*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, 1, 1, 1, -1, GL_RGB, GL_UNSIGNED_BYTE, 0);
2992*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2993*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, 1, 1, 1, 2, GL_RGB, GL_UNSIGNED_BYTE, 0);
2994*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2995*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGB, 1, 1, 1, -1, GL_RGB, GL_UNSIGNED_BYTE, 0);
2996*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2997*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGB, 1, 1, 1, 2, GL_RGB, GL_UNSIGNED_BYTE, 0);
2998*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
2999*35238bceSAndroid Build Coastguard Worker
3000*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
3001*35238bceSAndroid Build Coastguard Worker {
3002*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA, 1, 1, 6, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3003*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3004*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA, 1, 1, 6, 1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3005*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3006*35238bceSAndroid Build Coastguard Worker }
3007*35238bceSAndroid Build Coastguard Worker
3008*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3009*35238bceSAndroid Build Coastguard Worker }
3010*35238bceSAndroid Build Coastguard Worker
teximage3d_invalid_buffer_target(NegativeTestContext & ctx)3011*35238bceSAndroid Build Coastguard Worker void teximage3d_invalid_buffer_target(NegativeTestContext &ctx)
3012*35238bceSAndroid Build Coastguard Worker {
3013*35238bceSAndroid Build Coastguard Worker uint32_t buf = 0x1234;
3014*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3015*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(512);
3016*35238bceSAndroid Build Coastguard Worker
3017*35238bceSAndroid Build Coastguard Worker ctx.glGenBuffers(1, &buf);
3018*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
3019*35238bceSAndroid Build Coastguard Worker ctx.glBufferData(GL_PIXEL_UNPACK_BUFFER, 512, &data[0], GL_DYNAMIC_COPY);
3020*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3021*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture);
3022*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3023*35238bceSAndroid Build Coastguard Worker
3024*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
3025*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and...");
3026*35238bceSAndroid Build Coastguard Worker
3027*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the buffer object's data store is currently mapped.");
3028*35238bceSAndroid Build Coastguard Worker ctx.glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, 128, GL_MAP_WRITE_BIT);
3029*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3030*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3031*35238bceSAndroid Build Coastguard Worker ctx.glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
3032*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3033*35238bceSAndroid Build Coastguard Worker
3034*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the data would be unpacked from the buffer object such that the memory reads required would "
3035*35238bceSAndroid Build Coastguard Worker "exceed the data store size.");
3036*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 64, 64, 64, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3037*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3038*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3039*35238bceSAndroid Build Coastguard Worker
3040*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...data is not evenly divisible into the number of bytes needed to store in memory a datum "
3041*35238bceSAndroid Build Coastguard Worker "indicated by type.");
3042*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message << "// Set byte offset = 3" << TestLog::EndMessage;
3043*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB5_A1, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, (const GLvoid *)3);
3044*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3045*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3046*35238bceSAndroid Build Coastguard Worker
3047*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3048*35238bceSAndroid Build Coastguard Worker
3049*35238bceSAndroid Build Coastguard Worker ctx.glDeleteBuffers(1, &buf);
3050*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3051*35238bceSAndroid Build Coastguard Worker }
3052*35238bceSAndroid Build Coastguard Worker
3053*35238bceSAndroid Build Coastguard Worker // glTexSubImage3D
3054*35238bceSAndroid Build Coastguard Worker
texsubimage3d(NegativeTestContext & ctx)3055*35238bceSAndroid Build Coastguard Worker void texsubimage3d(NegativeTestContext &ctx)
3056*35238bceSAndroid Build Coastguard Worker {
3057*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3058*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3059*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture);
3060*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3061*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3062*35238bceSAndroid Build Coastguard Worker
3063*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
3064*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(0, 0, 0, 0, 0, 4, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3065*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3066*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_2D, 0, 0, 0, 0, 4, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3067*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3068*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3069*35238bceSAndroid Build Coastguard Worker
3070*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if format is not an accepted format constant.");
3071*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 0, 4, 4, 4, GL_UNSIGNED_BYTE, 0);
3072*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3073*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3074*35238bceSAndroid Build Coastguard Worker
3075*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if type is not a type constant.");
3076*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 4, 4, 4, GL_RGB, 0, 0);
3077*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3078*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3079*35238bceSAndroid Build Coastguard Worker
3080*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if the combination of internalFormat of the previously "
3081*35238bceSAndroid Build Coastguard Worker "specified texture array, format and type is not valid.");
3082*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 4, 4, 4, GL_RGB, GL_UNSIGNED_SHORT_4_4_4_4, 0);
3083*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3084*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 4, 4, 4, GL_RGB, GL_UNSIGNED_SHORT_5_5_5_1, 0);
3085*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3086*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 4, 4, 4, GL_RGB, GL_UNSIGNED_SHORT_5_5_5_1, 0);
3087*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3088*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 4, 4, 4, GL_RGBA_INTEGER, GL_UNSIGNED_INT, 0);
3089*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3090*35238bceSAndroid Build Coastguard Worker if (glu::isContextTypeES(ctx.getRenderContext().getType()))
3091*35238bceSAndroid Build Coastguard Worker {
3092*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 4, 4, 4, GL_RGB, GL_FLOAT, 0);
3093*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3094*35238bceSAndroid Build Coastguard Worker }
3095*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3096*35238bceSAndroid Build Coastguard Worker
3097*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3098*35238bceSAndroid Build Coastguard Worker }
3099*35238bceSAndroid Build Coastguard Worker
texsubimage3d_neg_level(NegativeTestContext & ctx)3100*35238bceSAndroid Build Coastguard Worker void texsubimage3d_neg_level(NegativeTestContext &ctx)
3101*35238bceSAndroid Build Coastguard Worker {
3102*35238bceSAndroid Build Coastguard Worker uint32_t textures[3];
3103*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(3, &textures[0]);
3104*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, textures[0]);
3105*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3106*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, textures[1]);
3107*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3108*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3109*35238bceSAndroid Build Coastguard Worker
3110*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
3111*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, -1, 0, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3112*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3113*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_2D_ARRAY, -1, 0, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3114*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3115*35238bceSAndroid Build Coastguard Worker
3116*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
3117*35238bceSAndroid Build Coastguard Worker {
3118*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures[2]);
3119*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, 4, 4, 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3120*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3121*35238bceSAndroid Build Coastguard Worker
3122*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, -1, 0, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3123*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3124*35238bceSAndroid Build Coastguard Worker }
3125*35238bceSAndroid Build Coastguard Worker
3126*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3127*35238bceSAndroid Build Coastguard Worker
3128*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(3, &textures[0]);
3129*35238bceSAndroid Build Coastguard Worker }
3130*35238bceSAndroid Build Coastguard Worker
texsubimage3d_max_level(NegativeTestContext & ctx)3131*35238bceSAndroid Build Coastguard Worker void texsubimage3d_max_level(NegativeTestContext &ctx)
3132*35238bceSAndroid Build Coastguard Worker {
3133*35238bceSAndroid Build Coastguard Worker uint32_t textures[2];
3134*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, &textures[0]);
3135*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, textures[0]);
3136*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3137*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, textures[1]);
3138*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3139*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3140*35238bceSAndroid Build Coastguard Worker
3141*35238bceSAndroid Build Coastguard Worker uint32_t log2Max3DTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_3D_TEXTURE_SIZE)) + 1;
3142*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
3143*35238bceSAndroid Build Coastguard Worker
3144*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_3D_TEXTURE_SIZE).");
3145*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, log2Max3DTextureSize, 0, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3146*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3147*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3148*35238bceSAndroid Build Coastguard Worker
3149*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
3150*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_2D_ARRAY, log2MaxTextureSize, 0, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3151*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3152*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3153*35238bceSAndroid Build Coastguard Worker
3154*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, &textures[0]);
3155*35238bceSAndroid Build Coastguard Worker }
3156*35238bceSAndroid Build Coastguard Worker
texsubimage3d_neg_offset(NegativeTestContext & ctx)3157*35238bceSAndroid Build Coastguard Worker void texsubimage3d_neg_offset(NegativeTestContext &ctx)
3158*35238bceSAndroid Build Coastguard Worker {
3159*35238bceSAndroid Build Coastguard Worker uint32_t textures[3];
3160*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(3, &textures[0]);
3161*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, textures[0]);
3162*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3163*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, textures[1]);
3164*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3165*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3166*35238bceSAndroid Build Coastguard Worker
3167*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if xoffset, yoffset or zoffset are negative.");
3168*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, -1, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3169*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3170*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3171*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3172*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, -1, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3173*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3174*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, -1, -1, -1, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3175*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3176*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, -1, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3177*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3178*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3179*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3180*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, -1, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3181*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3182*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, -1, -1, -1, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3183*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3184*35238bceSAndroid Build Coastguard Worker
3185*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
3186*35238bceSAndroid Build Coastguard Worker {
3187*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures[2]);
3188*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, 4, 4, 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3189*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3190*35238bceSAndroid Build Coastguard Worker
3191*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, -1, 0, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3192*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3193*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, -1, 0, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3194*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3195*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, 0, -1, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3196*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3197*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, -1, -1, -1, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3198*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3199*35238bceSAndroid Build Coastguard Worker }
3200*35238bceSAndroid Build Coastguard Worker
3201*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3202*35238bceSAndroid Build Coastguard Worker
3203*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(3, &textures[0]);
3204*35238bceSAndroid Build Coastguard Worker }
3205*35238bceSAndroid Build Coastguard Worker
texsubimage3d_invalid_offset(NegativeTestContext & ctx)3206*35238bceSAndroid Build Coastguard Worker void texsubimage3d_invalid_offset(NegativeTestContext &ctx)
3207*35238bceSAndroid Build Coastguard Worker {
3208*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3209*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3210*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture);
3211*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3212*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3213*35238bceSAndroid Build Coastguard Worker
3214*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if xoffset + width > texture_width.");
3215*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 2, 0, 0, 4, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3216*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3217*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3218*35238bceSAndroid Build Coastguard Worker
3219*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if yoffset + height > texture_height.");
3220*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 2, 0, 4, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3221*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3222*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3223*35238bceSAndroid Build Coastguard Worker
3224*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if zoffset + depth > texture_depth.");
3225*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 2, 4, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3226*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3227*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3228*35238bceSAndroid Build Coastguard Worker
3229*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3230*35238bceSAndroid Build Coastguard Worker }
3231*35238bceSAndroid Build Coastguard Worker
texsubimage3d_neg_width_height(NegativeTestContext & ctx)3232*35238bceSAndroid Build Coastguard Worker void texsubimage3d_neg_width_height(NegativeTestContext &ctx)
3233*35238bceSAndroid Build Coastguard Worker {
3234*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width, height or depth is less than 0.");
3235*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, -1, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3236*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3237*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 0, -1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3238*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3239*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 0, 0, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3240*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3241*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, -1, -1, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3242*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3243*35238bceSAndroid Build Coastguard Worker
3244*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
3245*35238bceSAndroid Build Coastguard Worker {
3246*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, 0, 0, -1, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3247*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3248*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, 0, 0, 0, -1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3249*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3250*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, 0, 0, 0, 0, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3251*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3252*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, 0, 0, -1, -1, -1, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3253*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3254*35238bceSAndroid Build Coastguard Worker }
3255*35238bceSAndroid Build Coastguard Worker
3256*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3257*35238bceSAndroid Build Coastguard Worker }
3258*35238bceSAndroid Build Coastguard Worker
texsubimage3d_invalid_buffer_target(NegativeTestContext & ctx)3259*35238bceSAndroid Build Coastguard Worker void texsubimage3d_invalid_buffer_target(NegativeTestContext &ctx)
3260*35238bceSAndroid Build Coastguard Worker {
3261*35238bceSAndroid Build Coastguard Worker uint32_t buf = 0x1234;
3262*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3263*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(512);
3264*35238bceSAndroid Build Coastguard Worker
3265*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3266*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture);
3267*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 16, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3268*35238bceSAndroid Build Coastguard Worker ctx.glGenBuffers(1, &buf);
3269*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
3270*35238bceSAndroid Build Coastguard Worker ctx.glBufferData(GL_PIXEL_UNPACK_BUFFER, 512, &data[0], GL_DYNAMIC_COPY);
3271*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3272*35238bceSAndroid Build Coastguard Worker
3273*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
3274*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and...");
3275*35238bceSAndroid Build Coastguard Worker
3276*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the buffer object's data store is currently mapped.");
3277*35238bceSAndroid Build Coastguard Worker ctx.glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, 512, GL_MAP_WRITE_BIT);
3278*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 4, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3279*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3280*35238bceSAndroid Build Coastguard Worker ctx.glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
3281*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3282*35238bceSAndroid Build Coastguard Worker
3283*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the data would be unpacked from the buffer object such that the memory reads required would "
3284*35238bceSAndroid Build Coastguard Worker "exceed the data store size.");
3285*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 16, 16, 16, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3286*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3287*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3288*35238bceSAndroid Build Coastguard Worker
3289*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...data is not evenly divisible into the number of bytes needed to store in memory a datum "
3290*35238bceSAndroid Build Coastguard Worker "indicated by type.");
3291*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message << "// Set byte offset = 3" << TestLog::EndMessage;
3292*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
3293*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA4, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 0);
3294*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
3295*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3296*35238bceSAndroid Build Coastguard Worker ctx.glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 4, 4, 4, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, (const GLvoid *)3);
3297*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3298*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3299*35238bceSAndroid Build Coastguard Worker
3300*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3301*35238bceSAndroid Build Coastguard Worker
3302*35238bceSAndroid Build Coastguard Worker ctx.glDeleteBuffers(1, &buf);
3303*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3304*35238bceSAndroid Build Coastguard Worker }
3305*35238bceSAndroid Build Coastguard Worker
3306*35238bceSAndroid Build Coastguard Worker // glCopyTexSubImage3D
3307*35238bceSAndroid Build Coastguard Worker
copytexsubimage3d(NegativeTestContext & ctx)3308*35238bceSAndroid Build Coastguard Worker void copytexsubimage3d(NegativeTestContext &ctx)
3309*35238bceSAndroid Build Coastguard Worker {
3310*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
3311*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3312*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture);
3313*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3314*35238bceSAndroid Build Coastguard Worker
3315*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
3316*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(0, 0, 0, 0, 0, 0, 0, 4, 4);
3317*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3318*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3319*35238bceSAndroid Build Coastguard Worker
3320*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3321*35238bceSAndroid Build Coastguard Worker }
3322*35238bceSAndroid Build Coastguard Worker
copytexsubimage3d_neg_level(NegativeTestContext & ctx)3323*35238bceSAndroid Build Coastguard Worker void copytexsubimage3d_neg_level(NegativeTestContext &ctx)
3324*35238bceSAndroid Build Coastguard Worker {
3325*35238bceSAndroid Build Coastguard Worker uint32_t textures[3];
3326*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(3, &textures[0]);
3327*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, textures[0]);
3328*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3329*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, textures[1]);
3330*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3331*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3332*35238bceSAndroid Build Coastguard Worker
3333*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
3334*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, -1, 0, 0, 0, 0, 0, 4, 4);
3335*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3336*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_2D_ARRAY, -1, 0, 0, 0, 0, 0, 4, 4);
3337*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3338*35238bceSAndroid Build Coastguard Worker
3339*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
3340*35238bceSAndroid Build Coastguard Worker {
3341*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures[2]);
3342*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, 4, 4, 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3343*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3344*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, -1, 0, 0, 0, 0, 0, 4, 4);
3345*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3346*35238bceSAndroid Build Coastguard Worker }
3347*35238bceSAndroid Build Coastguard Worker
3348*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3349*35238bceSAndroid Build Coastguard Worker
3350*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(3, &textures[0]);
3351*35238bceSAndroid Build Coastguard Worker }
3352*35238bceSAndroid Build Coastguard Worker
copytexsubimage3d_max_level(NegativeTestContext & ctx)3353*35238bceSAndroid Build Coastguard Worker void copytexsubimage3d_max_level(NegativeTestContext &ctx)
3354*35238bceSAndroid Build Coastguard Worker {
3355*35238bceSAndroid Build Coastguard Worker uint32_t log2Max3DTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_3D_TEXTURE_SIZE)) + 1;
3356*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
3357*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxCubeMapTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
3358*35238bceSAndroid Build Coastguard Worker
3359*35238bceSAndroid Build Coastguard Worker uint32_t textures[3];
3360*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(3, &textures[0]);
3361*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, textures[0]);
3362*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3363*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, textures[1]);
3364*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3365*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3366*35238bceSAndroid Build Coastguard Worker
3367*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_3D_TEXTURE_SIZE).");
3368*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, log2Max3DTextureSize, 0, 0, 0, 0, 0, 4, 4);
3369*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3370*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3371*35238bceSAndroid Build Coastguard Worker
3372*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
3373*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_2D_ARRAY, log2MaxTextureSize, 0, 0, 0, 0, 0, 4, 4);
3374*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3375*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3376*35238bceSAndroid Build Coastguard Worker
3377*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
3378*35238bceSAndroid Build Coastguard Worker {
3379*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures[2]);
3380*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA, 4, 4, 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3381*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3382*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
3383*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, log2MaxCubeMapTextureSize, 0, 0, 0, 0, 0, 4, 4);
3384*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3385*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3386*35238bceSAndroid Build Coastguard Worker }
3387*35238bceSAndroid Build Coastguard Worker
3388*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(3, &textures[0]);
3389*35238bceSAndroid Build Coastguard Worker }
3390*35238bceSAndroid Build Coastguard Worker
copytexsubimage3d_neg_offset(NegativeTestContext & ctx)3391*35238bceSAndroid Build Coastguard Worker void copytexsubimage3d_neg_offset(NegativeTestContext &ctx)
3392*35238bceSAndroid Build Coastguard Worker {
3393*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
3394*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3395*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture);
3396*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3397*35238bceSAndroid Build Coastguard Worker
3398*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if xoffset, yoffset or zoffset is negative.");
3399*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, -1, 0, 0, 0, 0, 4, 4);
3400*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3401*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, 0, -1, 0, 0, 0, 4, 4);
3402*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3403*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, -1, 0, 0, 4, 4);
3404*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3405*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, -1, -1, -1, 0, 0, 4, 4);
3406*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3407*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3408*35238bceSAndroid Build Coastguard Worker
3409*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3410*35238bceSAndroid Build Coastguard Worker }
3411*35238bceSAndroid Build Coastguard Worker
copytexsubimage3d_invalid_offset(NegativeTestContext & ctx)3412*35238bceSAndroid Build Coastguard Worker void copytexsubimage3d_invalid_offset(NegativeTestContext &ctx)
3413*35238bceSAndroid Build Coastguard Worker {
3414*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
3415*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3416*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture);
3417*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3418*35238bceSAndroid Build Coastguard Worker
3419*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if xoffset + width > texture_width.");
3420*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, 1, 0, 0, 0, 0, 4, 4);
3421*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3422*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3423*35238bceSAndroid Build Coastguard Worker
3424*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if yoffset + height > texture_height.");
3425*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, 0, 1, 0, 0, 0, 4, 4);
3426*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3427*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3428*35238bceSAndroid Build Coastguard Worker
3429*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if zoffset + 1 > texture_depth.");
3430*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 4, 0, 0, 4, 4);
3431*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3432*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3433*35238bceSAndroid Build Coastguard Worker
3434*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3435*35238bceSAndroid Build Coastguard Worker }
3436*35238bceSAndroid Build Coastguard Worker
copytexsubimage3d_neg_width_height(NegativeTestContext & ctx)3437*35238bceSAndroid Build Coastguard Worker void copytexsubimage3d_neg_width_height(NegativeTestContext &ctx)
3438*35238bceSAndroid Build Coastguard Worker {
3439*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
3440*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3441*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture);
3442*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3443*35238bceSAndroid Build Coastguard Worker
3444*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width < 0.");
3445*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 0, 0, -4, 4);
3446*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3447*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3448*35238bceSAndroid Build Coastguard Worker
3449*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if height < 0.");
3450*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 0, 0, 4, -4);
3451*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3452*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3453*35238bceSAndroid Build Coastguard Worker
3454*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3455*35238bceSAndroid Build Coastguard Worker }
3456*35238bceSAndroid Build Coastguard Worker
copytexsubimage3d_incomplete_framebuffer(NegativeTestContext & ctx)3457*35238bceSAndroid Build Coastguard Worker void copytexsubimage3d_incomplete_framebuffer(NegativeTestContext &ctx)
3458*35238bceSAndroid Build Coastguard Worker {
3459*35238bceSAndroid Build Coastguard Worker GLuint fbo = 0x1234;
3460*35238bceSAndroid Build Coastguard Worker GLuint texture[2];
3461*35238bceSAndroid Build Coastguard Worker
3462*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, texture);
3463*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, texture[0]);
3464*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3465*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture[1]);
3466*35238bceSAndroid Build Coastguard Worker ctx.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 4, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
3467*35238bceSAndroid Build Coastguard Worker ctx.glGenFramebuffers(1, &fbo);
3468*35238bceSAndroid Build Coastguard Worker ctx.glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
3469*35238bceSAndroid Build Coastguard Worker ctx.glCheckFramebufferStatus(GL_READ_FRAMEBUFFER);
3470*35238bceSAndroid Build Coastguard Worker
3471*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_FRAMEBUFFER_OPERATION is generated if the currently bound framebuffer is not "
3472*35238bceSAndroid Build Coastguard Worker "framebuffer complete.");
3473*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 0, 0, 4, 4);
3474*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
3475*35238bceSAndroid Build Coastguard Worker ctx.glCopyTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 0, 0, 4, 4);
3476*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_FRAMEBUFFER_OPERATION);
3477*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3478*35238bceSAndroid Build Coastguard Worker
3479*35238bceSAndroid Build Coastguard Worker ctx.glBindFramebuffer(GL_FRAMEBUFFER, 0);
3480*35238bceSAndroid Build Coastguard Worker ctx.glDeleteFramebuffers(1, &fbo);
3481*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, texture);
3482*35238bceSAndroid Build Coastguard Worker }
3483*35238bceSAndroid Build Coastguard Worker
3484*35238bceSAndroid Build Coastguard Worker // glCompressedTexImage3D
3485*35238bceSAndroid Build Coastguard Worker
compressedteximage3d(NegativeTestContext & ctx)3486*35238bceSAndroid Build Coastguard Worker void compressedteximage3d(NegativeTestContext &ctx)
3487*35238bceSAndroid Build Coastguard Worker {
3488*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
3489*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0, 0);
3490*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3491*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0, 0);
3492*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3493*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3494*35238bceSAndroid Build Coastguard Worker
3495*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
3496*35238bceSAndroid Build Coastguard Worker "GL_INVALID_ENUM is generated if internalformat is not one of the specific compressed internal formats.");
3497*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 0, 0, 0, 0);
3498*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3499*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA8, 0, 0, 0, 0, 0, 0);
3500*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3501*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3502*35238bceSAndroid Build Coastguard Worker }
3503*35238bceSAndroid Build Coastguard Worker
compressedteximage3d_neg_level(NegativeTestContext & ctx)3504*35238bceSAndroid Build Coastguard Worker void compressedteximage3d_neg_level(NegativeTestContext &ctx)
3505*35238bceSAndroid Build Coastguard Worker {
3506*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
3507*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, -1, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0, 0);
3508*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3509*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3510*35238bceSAndroid Build Coastguard Worker }
3511*35238bceSAndroid Build Coastguard Worker
compressedteximage3d_max_level(NegativeTestContext & ctx)3512*35238bceSAndroid Build Coastguard Worker void compressedteximage3d_max_level(NegativeTestContext &ctx)
3513*35238bceSAndroid Build Coastguard Worker {
3514*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
3515*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
3516*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, log2MaxTextureSize, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, 0, 0);
3517*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3518*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3519*35238bceSAndroid Build Coastguard Worker }
3520*35238bceSAndroid Build Coastguard Worker
compressedteximage3d_neg_width_height_depth(NegativeTestContext & ctx)3521*35238bceSAndroid Build Coastguard Worker void compressedteximage3d_neg_width_height_depth(NegativeTestContext &ctx)
3522*35238bceSAndroid Build Coastguard Worker {
3523*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width, height or depth is less than 0.");
3524*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0, 0, 0, 0, 0);
3525*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3526*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, -1, 0, 0, 0, 0);
3527*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3528*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, -1, 0, 0, 0);
3529*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3530*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, -1, -1, 0, 0, 0);
3531*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3532*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3533*35238bceSAndroid Build Coastguard Worker }
3534*35238bceSAndroid Build Coastguard Worker
compressedteximage3d_max_width_height_depth(NegativeTestContext & ctx)3535*35238bceSAndroid Build Coastguard Worker void compressedteximage3d_max_width_height_depth(NegativeTestContext &ctx)
3536*35238bceSAndroid Build Coastguard Worker {
3537*35238bceSAndroid Build Coastguard Worker int maxTextureSize = ctx.getInteger(GL_MAX_TEXTURE_SIZE) + 1;
3538*35238bceSAndroid Build Coastguard Worker int maxTextureLayers = ctx.getInteger(GL_MAX_ARRAY_TEXTURE_LAYERS) + 1;
3539*35238bceSAndroid Build Coastguard Worker
3540*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width, height or depth is greater than GL_MAX_TEXTURE_SIZE.");
3541*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, 0, 0, 0, 0, 0);
3542*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3543*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, maxTextureSize, 0, 0, 0, 0);
3544*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3545*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, maxTextureSize, maxTextureSize,
3546*35238bceSAndroid Build Coastguard Worker maxTextureLayers, 0, 0, 0);
3547*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3548*35238bceSAndroid Build Coastguard Worker if (glu::isContextTypeES(ctx.getRenderContext().getType()))
3549*35238bceSAndroid Build Coastguard Worker {
3550*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, maxTextureLayers, 0, 0,
3551*35238bceSAndroid Build Coastguard Worker 0);
3552*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3553*35238bceSAndroid Build Coastguard Worker }
3554*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3555*35238bceSAndroid Build Coastguard Worker }
3556*35238bceSAndroid Build Coastguard Worker
compressedteximage3d_invalid_border(NegativeTestContext & ctx)3557*35238bceSAndroid Build Coastguard Worker void compressedteximage3d_invalid_border(NegativeTestContext &ctx)
3558*35238bceSAndroid Build Coastguard Worker {
3559*35238bceSAndroid Build Coastguard Worker bool isES = glu::isContextTypeES(ctx.getRenderContext().getType());
3560*35238bceSAndroid Build Coastguard Worker GLenum error = isES ? GL_INVALID_VALUE : GL_INVALID_OPERATION;
3561*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if border is not 0.");
3562*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, -1, 0, 0);
3563*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
3564*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 1, 0, 0);
3565*35238bceSAndroid Build Coastguard Worker ctx.expectError(error);
3566*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3567*35238bceSAndroid Build Coastguard Worker }
3568*35238bceSAndroid Build Coastguard Worker
compressedteximage3d_invalid_size(NegativeTestContext & ctx)3569*35238bceSAndroid Build Coastguard Worker void compressedteximage3d_invalid_size(NegativeTestContext &ctx)
3570*35238bceSAndroid Build Coastguard Worker {
3571*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if imageSize is not consistent with the format, dimensions, and "
3572*35238bceSAndroid Build Coastguard Worker "contents of the specified compressed image data.");
3573*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0, 0, 0, -1, 0);
3574*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3575*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 1, 0, 4 * 4 * 8, 0);
3576*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3577*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGB8_ETC2, 16, 16, 1, 0, 4 * 4 * 16, 0);
3578*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3579*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_SIGNED_R11_EAC, 16, 16, 1, 0, 4 * 4 * 16, 0);
3580*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3581*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3582*35238bceSAndroid Build Coastguard Worker }
3583*35238bceSAndroid Build Coastguard Worker
compressedteximage3d_invalid_width_height(NegativeTestContext & ctx)3584*35238bceSAndroid Build Coastguard Worker void compressedteximage3d_invalid_width_height(NegativeTestContext &ctx)
3585*35238bceSAndroid Build Coastguard Worker {
3586*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
3587*35238bceSAndroid Build Coastguard Worker {
3588*35238bceSAndroid Build Coastguard Worker const int width = 4;
3589*35238bceSAndroid Build Coastguard Worker const int height = 6;
3590*35238bceSAndroid Build Coastguard Worker const int depth = 6;
3591*35238bceSAndroid Build Coastguard Worker const int blockSize = 16;
3592*35238bceSAndroid Build Coastguard Worker const int imageSize = divRoundUp(width, 4) * divRoundUp(height, 4) * depth * blockSize;
3593*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(imageSize);
3594*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
3595*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE is generated if target is GL_TEXTURE_CUBE_MAP_ARRAY and width and height are not equal.");
3596*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_COMPRESSED_RGB8_ETC2, width, height, depth, 0,
3597*35238bceSAndroid Build Coastguard Worker imageSize, &data[0]);
3598*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3599*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3600*35238bceSAndroid Build Coastguard Worker }
3601*35238bceSAndroid Build Coastguard Worker }
3602*35238bceSAndroid Build Coastguard Worker
compressedteximage3d_invalid_buffer_target(NegativeTestContext & ctx)3603*35238bceSAndroid Build Coastguard Worker void compressedteximage3d_invalid_buffer_target(NegativeTestContext &ctx)
3604*35238bceSAndroid Build Coastguard Worker {
3605*35238bceSAndroid Build Coastguard Worker uint32_t buf = 0x1234;
3606*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(512);
3607*35238bceSAndroid Build Coastguard Worker
3608*35238bceSAndroid Build Coastguard Worker ctx.glGenBuffers(1, &buf);
3609*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
3610*35238bceSAndroid Build Coastguard Worker ctx.glBufferData(GL_PIXEL_UNPACK_BUFFER, 64, &data[0], GL_DYNAMIC_COPY);
3611*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3612*35238bceSAndroid Build Coastguard Worker
3613*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
3614*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and the buffer object's data store is currently mapped.");
3615*35238bceSAndroid Build Coastguard Worker ctx.glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, 64, GL_MAP_WRITE_BIT);
3616*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGB8_ETC2, 4, 4, 1, 0, etc2DataSize(4, 4), 0);
3617*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3618*35238bceSAndroid Build Coastguard Worker ctx.glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
3619*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3620*35238bceSAndroid Build Coastguard Worker
3621*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
3622*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and the data would be unpacked from the buffer object such that "
3623*35238bceSAndroid Build Coastguard Worker "the memory reads required would exceed the data store size.");
3624*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGB8_ETC2, 16, 16, 1, 0, etc2DataSize(16, 16), 0);
3625*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3626*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3627*35238bceSAndroid Build Coastguard Worker
3628*35238bceSAndroid Build Coastguard Worker ctx.glDeleteBuffers(1, &buf);
3629*35238bceSAndroid Build Coastguard Worker }
3630*35238bceSAndroid Build Coastguard Worker
3631*35238bceSAndroid Build Coastguard Worker // glCompressedTexSubImage3D
3632*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage3d(NegativeTestContext & ctx)3633*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage3d(NegativeTestContext &ctx)
3634*35238bceSAndroid Build Coastguard Worker {
3635*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is invalid.");
3636*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3637*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3638*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3639*35238bceSAndroid Build Coastguard Worker
3640*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3641*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3642*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
3643*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 18, 18, 1, 0,
3644*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(18, 18), 0);
3645*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3646*35238bceSAndroid Build Coastguard Worker
3647*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if format does not match the internal format of the texture "
3648*35238bceSAndroid Build Coastguard Worker "image being modified.");
3649*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 0, 0, 0, GL_COMPRESSED_RGB8_ETC2, 0, 0);
3650*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3651*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3652*35238bceSAndroid Build Coastguard Worker
3653*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if internalformat is an ETC2/EAC format and target is not "
3654*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_2D_ARRAY.");
3655*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, 18, 18, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3656*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(18, 18), 0);
3657*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3658*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3659*35238bceSAndroid Build Coastguard Worker
3660*35238bceSAndroid Build Coastguard Worker ctx.beginSection("For ETC2/EAC images GL_INVALID_OPERATION is generated if width is not a multiple of four, and "
3661*35238bceSAndroid Build Coastguard Worker "width + xoffset is not equal to the width of the texture level.");
3662*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 4, 0, 0, 10, 4, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3663*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(10, 4), 0);
3664*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3665*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3666*35238bceSAndroid Build Coastguard Worker
3667*35238bceSAndroid Build Coastguard Worker ctx.beginSection("For ETC2/EAC images GL_INVALID_OPERATION is generated if height is not a multiple of four, and "
3668*35238bceSAndroid Build Coastguard Worker "height + yoffset is not equal to the height of the texture level.");
3669*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 4, 0, 4, 10, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3670*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(4, 10), 0);
3671*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3672*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3673*35238bceSAndroid Build Coastguard Worker
3674*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
3675*35238bceSAndroid Build Coastguard Worker "For ETC2/EAC images GL_INVALID_OPERATION is generated if xoffset or yoffset is not a multiple of four.");
3676*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 1, 0, 0, 4, 4, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3677*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(4, 4), 0);
3678*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3679*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 1, 0, 4, 4, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3680*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(4, 4), 0);
3681*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3682*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 1, 1, 0, 4, 4, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3683*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(4, 4), 0);
3684*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3685*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3686*35238bceSAndroid Build Coastguard Worker
3687*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3688*35238bceSAndroid Build Coastguard Worker }
3689*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage3d_neg_level(NegativeTestContext & ctx)3690*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage3d_neg_level(NegativeTestContext &ctx)
3691*35238bceSAndroid Build Coastguard Worker {
3692*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3693*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3694*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
3695*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 1, 0,
3696*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(16, 16), 0);
3697*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3698*35238bceSAndroid Build Coastguard Worker
3699*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is less than 0.");
3700*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, -1, 0, 0, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3701*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3702*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3703*35238bceSAndroid Build Coastguard Worker
3704*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3705*35238bceSAndroid Build Coastguard Worker }
3706*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage3d_max_level(NegativeTestContext & ctx)3707*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage3d_max_level(NegativeTestContext &ctx)
3708*35238bceSAndroid Build Coastguard Worker {
3709*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3710*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3711*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
3712*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 1, 0,
3713*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(16, 16), 0);
3714*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3715*35238bceSAndroid Build Coastguard Worker
3716*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
3717*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxTextureSize = deLog2Floor32(ctx.getInteger(GL_MAX_TEXTURE_SIZE)) + 1;
3718*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, log2MaxTextureSize, 0, 0, 0, 0, 0, 0,
3719*35238bceSAndroid Build Coastguard Worker GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3720*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3721*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3722*35238bceSAndroid Build Coastguard Worker
3723*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3724*35238bceSAndroid Build Coastguard Worker }
3725*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage3d_neg_offset(NegativeTestContext & ctx)3726*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage3d_neg_offset(NegativeTestContext &ctx)
3727*35238bceSAndroid Build Coastguard Worker {
3728*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3729*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3730*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
3731*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 1, 0,
3732*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(16, 16), 0);
3733*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3734*35238bceSAndroid Build Coastguard Worker
3735*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
3736*35238bceSAndroid Build Coastguard Worker "GL_INVALID_VALUE or GL_INVALID_OPERATION is generated if xoffset, yoffset or zoffset are negative.");
3737*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, -4, 0, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3738*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3739*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, -4, 0, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3740*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3741*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, -4, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3742*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3743*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, -4, -4, -4, 0, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3744*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3745*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3746*35238bceSAndroid Build Coastguard Worker
3747*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3748*35238bceSAndroid Build Coastguard Worker }
3749*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage3d_invalid_offset(NegativeTestContext & ctx)3750*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage3d_invalid_offset(NegativeTestContext &ctx)
3751*35238bceSAndroid Build Coastguard Worker {
3752*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3753*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3754*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
3755*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 4, 4, 1, 0, etc2EacDataSize(4, 4),
3756*35238bceSAndroid Build Coastguard Worker 0);
3757*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3758*35238bceSAndroid Build Coastguard Worker
3759*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE or GL_INVALID_OPERATION is generated if xoffset + width > texture_width or "
3760*35238bceSAndroid Build Coastguard Worker "yoffset + height > texture_height.");
3761*35238bceSAndroid Build Coastguard Worker
3762*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 12, 0, 0, 8, 4, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3763*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(8, 4), 0);
3764*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3765*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 12, 0, 4, 8, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3766*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(4, 8), 0);
3767*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3768*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 12, 4, 4, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3769*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(4, 4), 0);
3770*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3771*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 12, 12, 12, 8, 8, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3772*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(8, 8), 0);
3773*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3774*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3775*35238bceSAndroid Build Coastguard Worker
3776*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3777*35238bceSAndroid Build Coastguard Worker }
3778*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage3d_neg_width_height_depth(NegativeTestContext & ctx)3779*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage3d_neg_width_height_depth(NegativeTestContext &ctx)
3780*35238bceSAndroid Build Coastguard Worker {
3781*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3782*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3783*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
3784*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 1, 0,
3785*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(16, 16), 0);
3786*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3787*35238bceSAndroid Build Coastguard Worker
3788*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE or GL_INVALID_OPERATION is generated if width, height or depth are negative.");
3789*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, -4, 0, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3790*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3791*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 0, -4, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3792*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3793*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 0, 0, -4, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3794*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3795*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, -4, -4, -4, GL_COMPRESSED_RGBA8_ETC2_EAC, 0, 0);
3796*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE, GL_INVALID_OPERATION);
3797*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3798*35238bceSAndroid Build Coastguard Worker
3799*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3800*35238bceSAndroid Build Coastguard Worker }
3801*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage3d_invalid_size(NegativeTestContext & ctx)3802*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage3d_invalid_size(NegativeTestContext &ctx)
3803*35238bceSAndroid Build Coastguard Worker {
3804*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3805*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3806*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
3807*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 1, 0, 4 * 4 * 16, 0);
3808*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3809*35238bceSAndroid Build Coastguard Worker
3810*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if imageSize is not consistent with the format, dimensions, and "
3811*35238bceSAndroid Build Coastguard Worker "contents of the specified compressed image data.");
3812*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 16, 16, 1, GL_COMPRESSED_RGBA8_ETC2_EAC, -1, 0);
3813*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3814*35238bceSAndroid Build Coastguard Worker
3815*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 16, 16, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3816*35238bceSAndroid Build Coastguard Worker 4 * 4 * 16 - 1, 0);
3817*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3818*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3819*35238bceSAndroid Build Coastguard Worker
3820*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3821*35238bceSAndroid Build Coastguard Worker }
3822*35238bceSAndroid Build Coastguard Worker
compressedtexsubimage3d_invalid_buffer_target(NegativeTestContext & ctx)3823*35238bceSAndroid Build Coastguard Worker void compressedtexsubimage3d_invalid_buffer_target(NegativeTestContext &ctx)
3824*35238bceSAndroid Build Coastguard Worker {
3825*35238bceSAndroid Build Coastguard Worker uint32_t buf = 0x1234;
3826*35238bceSAndroid Build Coastguard Worker uint32_t texture = 0x1234;
3827*35238bceSAndroid Build Coastguard Worker GLsizei bufferSize = etc2EacDataSize(4, 4);
3828*35238bceSAndroid Build Coastguard Worker std::vector<GLubyte> data(bufferSize);
3829*35238bceSAndroid Build Coastguard Worker
3830*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
3831*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
3832*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_COMPRESSED_RGBA8_ETC2_EAC, 16, 16, 1, 0,
3833*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(16, 16), 0);
3834*35238bceSAndroid Build Coastguard Worker ctx.glGenBuffers(1, &buf);
3835*35238bceSAndroid Build Coastguard Worker ctx.glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
3836*35238bceSAndroid Build Coastguard Worker ctx.glBufferData(GL_PIXEL_UNPACK_BUFFER, bufferSize, &data[0], GL_DYNAMIC_COPY);
3837*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3838*35238bceSAndroid Build Coastguard Worker
3839*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the "
3840*35238bceSAndroid Build Coastguard Worker "GL_PIXEL_UNPACK_BUFFER target and...");
3841*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the buffer object's data store is currently mapped.");
3842*35238bceSAndroid Build Coastguard Worker ctx.glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, bufferSize, GL_MAP_WRITE_BIT);
3843*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 4, 4, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3844*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(4, 4), 0);
3845*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3846*35238bceSAndroid Build Coastguard Worker ctx.glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
3847*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3848*35238bceSAndroid Build Coastguard Worker
3849*35238bceSAndroid Build Coastguard Worker ctx.beginSection("...the data would be unpacked from the buffer object such that the memory reads required would "
3850*35238bceSAndroid Build Coastguard Worker "exceed the data store size.");
3851*35238bceSAndroid Build Coastguard Worker ctx.glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 16, 16, 1, GL_COMPRESSED_RGBA8_ETC2_EAC,
3852*35238bceSAndroid Build Coastguard Worker etc2EacDataSize(16, 16), 0);
3853*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3854*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3855*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3856*35238bceSAndroid Build Coastguard Worker
3857*35238bceSAndroid Build Coastguard Worker ctx.glDeleteBuffers(1, &buf);
3858*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
3859*35238bceSAndroid Build Coastguard Worker }
3860*35238bceSAndroid Build Coastguard Worker
3861*35238bceSAndroid Build Coastguard Worker // glTexStorage2D
3862*35238bceSAndroid Build Coastguard Worker
texstorage2d(NegativeTestContext & ctx)3863*35238bceSAndroid Build Coastguard Worker void texstorage2d(NegativeTestContext &ctx)
3864*35238bceSAndroid Build Coastguard Worker {
3865*35238bceSAndroid Build Coastguard Worker uint32_t textures[] = {0x1234, 0x1234};
3866*35238bceSAndroid Build Coastguard Worker
3867*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, textures);
3868*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
3869*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3870*35238bceSAndroid Build Coastguard Worker
3871*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
3872*35238bceSAndroid Build Coastguard Worker "GL_INVALID_ENUM or GL_INVALID_VALUE is generated if internalformat is not a valid sized internal format.");
3873*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 1, 0, 16, 16);
3874*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
3875*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA_INTEGER, 16, 16);
3876*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
3877*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3878*35238bceSAndroid Build Coastguard Worker
3879*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is not one of the accepted target enumerants.");
3880*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(0, 1, GL_RGBA8, 16, 16);
3881*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3882*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_3D, 1, GL_RGBA8, 16, 16);
3883*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3884*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D_ARRAY, 1, GL_RGBA8, 16, 16);
3885*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
3886*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3887*35238bceSAndroid Build Coastguard Worker
3888*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width or height are less than 1.");
3889*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 0, 16);
3890*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3891*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 16, 0);
3892*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3893*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 0, 0);
3894*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3895*35238bceSAndroid Build Coastguard Worker
3896*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx))
3897*35238bceSAndroid Build Coastguard Worker {
3898*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, textures[1]);
3899*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3900*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, GL_RGBA8, 0, 16);
3901*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3902*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, GL_RGBA8, 16, 0);
3903*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3904*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, GL_RGBA8, 0, 0);
3905*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3906*35238bceSAndroid Build Coastguard Worker }
3907*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3908*35238bceSAndroid Build Coastguard Worker
3909*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, textures);
3910*35238bceSAndroid Build Coastguard Worker }
3911*35238bceSAndroid Build Coastguard Worker
texstorage2d_invalid_binding(NegativeTestContext & ctx)3912*35238bceSAndroid Build Coastguard Worker void texstorage2d_invalid_binding(NegativeTestContext &ctx)
3913*35238bceSAndroid Build Coastguard Worker {
3914*35238bceSAndroid Build Coastguard Worker uint32_t textures[] = {0x1234, 0x1234};
3915*35238bceSAndroid Build Coastguard Worker int32_t immutable = 0x1234;
3916*35238bceSAndroid Build Coastguard Worker const bool isES32orGL45 = supportsES32orGL45(ctx);
3917*35238bceSAndroid Build Coastguard Worker
3918*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if the default texture object is curently bound to target.");
3919*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, 0);
3920*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 16, 16);
3921*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3922*35238bceSAndroid Build Coastguard Worker
3923*35238bceSAndroid Build Coastguard Worker if (isES32orGL45)
3924*35238bceSAndroid Build Coastguard Worker {
3925*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, 0);
3926*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, GL_RGBA8, 16, 16);
3927*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3928*35238bceSAndroid Build Coastguard Worker }
3929*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3930*35238bceSAndroid Build Coastguard Worker
3931*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, textures);
3932*35238bceSAndroid Build Coastguard Worker
3933*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if the texture object currently bound to target already has "
3934*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_IMMUTABLE_FORMAT set to GL_TRUE.");
3935*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
3936*35238bceSAndroid Build Coastguard Worker ctx.glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_IMMUTABLE_FORMAT, &immutable);
3937*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message
3938*35238bceSAndroid Build Coastguard Worker << "// GL_TEXTURE_IMMUTABLE_FORMAT = " << ((immutable != 0) ? "GL_TRUE" : "GL_FALSE")
3939*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
3940*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 16, 16);
3941*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3942*35238bceSAndroid Build Coastguard Worker ctx.glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_IMMUTABLE_FORMAT, &immutable);
3943*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message
3944*35238bceSAndroid Build Coastguard Worker << "// GL_TEXTURE_IMMUTABLE_FORMAT = " << ((immutable != 0) ? "GL_TRUE" : "GL_FALSE")
3945*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
3946*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 16, 16);
3947*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3948*35238bceSAndroid Build Coastguard Worker
3949*35238bceSAndroid Build Coastguard Worker if (isES32orGL45)
3950*35238bceSAndroid Build Coastguard Worker {
3951*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, textures[1]);
3952*35238bceSAndroid Build Coastguard Worker ctx.glGetTexParameteriv(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_IMMUTABLE_FORMAT, &immutable);
3953*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message
3954*35238bceSAndroid Build Coastguard Worker << "// GL_TEXTURE_IMMUTABLE_FORMAT = " << ((immutable != 0) ? "GL_TRUE" : "GL_FALSE")
3955*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
3956*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, GL_RGBA8, 16, 16);
3957*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3958*35238bceSAndroid Build Coastguard Worker ctx.glGetTexParameteriv(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_IMMUTABLE_FORMAT, &immutable);
3959*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message
3960*35238bceSAndroid Build Coastguard Worker << "// GL_TEXTURE_IMMUTABLE_FORMAT = " << ((immutable != 0) ? "GL_TRUE" : "GL_FALSE")
3961*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
3962*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, GL_RGBA8, 16, 16);
3963*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
3964*35238bceSAndroid Build Coastguard Worker }
3965*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3966*35238bceSAndroid Build Coastguard Worker
3967*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, textures);
3968*35238bceSAndroid Build Coastguard Worker }
3969*35238bceSAndroid Build Coastguard Worker
texstorage2d_invalid_levels(NegativeTestContext & ctx)3970*35238bceSAndroid Build Coastguard Worker void texstorage2d_invalid_levels(NegativeTestContext &ctx)
3971*35238bceSAndroid Build Coastguard Worker {
3972*35238bceSAndroid Build Coastguard Worker uint32_t textures[] = {0x1234, 0x1234};
3973*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxSize = deLog2Floor32(deMax32(16, 16)) + 1 + 1;
3974*35238bceSAndroid Build Coastguard Worker const bool isES32orGL45 = supportsES32orGL45(ctx);
3975*35238bceSAndroid Build Coastguard Worker
3976*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, textures);
3977*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, textures[0]);
3978*35238bceSAndroid Build Coastguard Worker
3979*35238bceSAndroid Build Coastguard Worker if (isES32orGL45)
3980*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP, textures[1]);
3981*35238bceSAndroid Build Coastguard Worker
3982*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
3983*35238bceSAndroid Build Coastguard Worker
3984*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if levels is less than 1.");
3985*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 16, 16);
3986*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3987*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0);
3988*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3989*35238bceSAndroid Build Coastguard Worker
3990*35238bceSAndroid Build Coastguard Worker if (isES32orGL45)
3991*35238bceSAndroid Build Coastguard Worker {
3992*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, 0, GL_RGBA8, 16, 16);
3993*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3994*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, 0, GL_RGBA8, 0, 0);
3995*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
3996*35238bceSAndroid Build Coastguard Worker }
3997*35238bceSAndroid Build Coastguard Worker ctx.endSection();
3998*35238bceSAndroid Build Coastguard Worker
3999*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
4000*35238bceSAndroid Build Coastguard Worker "GL_INVALID_OPERATION is generated if levels is greater than floor(log_2(max(width, height))) + 1");
4001*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_2D, log2MaxSize, GL_RGBA8, 16, 16);
4002*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4003*35238bceSAndroid Build Coastguard Worker
4004*35238bceSAndroid Build Coastguard Worker if (isES32orGL45)
4005*35238bceSAndroid Build Coastguard Worker {
4006*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage2D(GL_TEXTURE_CUBE_MAP, log2MaxSize, GL_RGBA8, 16, 16);
4007*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4008*35238bceSAndroid Build Coastguard Worker }
4009*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4010*35238bceSAndroid Build Coastguard Worker
4011*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, textures);
4012*35238bceSAndroid Build Coastguard Worker }
4013*35238bceSAndroid Build Coastguard Worker
4014*35238bceSAndroid Build Coastguard Worker // glTexStorage3D
4015*35238bceSAndroid Build Coastguard Worker
texstorage3d(NegativeTestContext & ctx)4016*35238bceSAndroid Build Coastguard Worker void texstorage3d(NegativeTestContext &ctx)
4017*35238bceSAndroid Build Coastguard Worker {
4018*35238bceSAndroid Build Coastguard Worker uint32_t textures[] = {0x1234, 0x1234};
4019*35238bceSAndroid Build Coastguard Worker
4020*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, textures);
4021*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, textures[0]);
4022*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
4023*35238bceSAndroid Build Coastguard Worker
4024*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
4025*35238bceSAndroid Build Coastguard Worker "GL_INVALID_ENUM or GL_INVALID_VALUE is generated if internalformat is not a valid sized internal format.");
4026*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, 0, 4, 4, 4);
4027*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
4028*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, GL_RGBA_INTEGER, 4, 4, 4);
4029*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM, GL_INVALID_VALUE);
4030*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4031*35238bceSAndroid Build Coastguard Worker
4032*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if target is not one of the accepted target enumerants.");
4033*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(0, 1, GL_RGBA8, 4, 4, 4);
4034*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4035*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP, 1, GL_RGBA8, 4, 4, 4);
4036*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4037*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_2D, 1, GL_RGBA8, 4, 4, 4);
4038*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4039*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4040*35238bceSAndroid Build Coastguard Worker
4041*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if width, height or depth are less than 1.");
4042*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, GL_RGBA8, 0, 4, 4);
4043*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4044*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, GL_RGBA8, 4, 0, 4);
4045*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4046*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, GL_RGBA8, 4, 4, 0);
4047*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4048*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, GL_RGBA8, 0, 0, 0);
4049*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4050*35238bceSAndroid Build Coastguard Worker
4051*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
4052*35238bceSAndroid Build Coastguard Worker {
4053*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures[1]);
4054*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
4055*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA8, 0, 4, 4);
4056*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4057*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA8, 4, 0, 4);
4058*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4059*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA8, 4, 4, 0);
4060*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4061*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA8, 0, 0, 0);
4062*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4063*35238bceSAndroid Build Coastguard Worker }
4064*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4065*35238bceSAndroid Build Coastguard Worker
4066*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, textures);
4067*35238bceSAndroid Build Coastguard Worker }
4068*35238bceSAndroid Build Coastguard Worker
texstorage3d_invalid_binding(NegativeTestContext & ctx)4069*35238bceSAndroid Build Coastguard Worker void texstorage3d_invalid_binding(NegativeTestContext &ctx)
4070*35238bceSAndroid Build Coastguard Worker {
4071*35238bceSAndroid Build Coastguard Worker uint32_t textures[] = {0x1234, 0x1234};
4072*35238bceSAndroid Build Coastguard Worker int32_t immutable = 0x1234;
4073*35238bceSAndroid Build Coastguard Worker
4074*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if the default texture object is curently bound to target.");
4075*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, 0);
4076*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, GL_RGBA8, 4, 4, 4);
4077*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4078*35238bceSAndroid Build Coastguard Worker
4079*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
4080*35238bceSAndroid Build Coastguard Worker {
4081*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, 0);
4082*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA8, 4, 4, 6);
4083*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4084*35238bceSAndroid Build Coastguard Worker }
4085*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4086*35238bceSAndroid Build Coastguard Worker
4087*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, textures);
4088*35238bceSAndroid Build Coastguard Worker
4089*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_OPERATION is generated if the texture object currently bound to target already has "
4090*35238bceSAndroid Build Coastguard Worker "GL_TEXTURE_IMMUTABLE_FORMAT set to GL_TRUE.");
4091*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, textures[0]);
4092*35238bceSAndroid Build Coastguard Worker ctx.glGetTexParameteriv(GL_TEXTURE_3D, GL_TEXTURE_IMMUTABLE_FORMAT, &immutable);
4093*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message
4094*35238bceSAndroid Build Coastguard Worker << "// GL_TEXTURE_IMMUTABLE_FORMAT = " << ((immutable != 0) ? "GL_TRUE" : "GL_FALSE")
4095*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
4096*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, GL_RGBA8, 4, 4, 4);
4097*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
4098*35238bceSAndroid Build Coastguard Worker ctx.glGetTexParameteriv(GL_TEXTURE_3D, GL_TEXTURE_IMMUTABLE_FORMAT, &immutable);
4099*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message
4100*35238bceSAndroid Build Coastguard Worker << "// GL_TEXTURE_IMMUTABLE_FORMAT = " << ((immutable != 0) ? "GL_TRUE" : "GL_FALSE")
4101*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
4102*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 1, GL_RGBA8, 4, 4, 4);
4103*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4104*35238bceSAndroid Build Coastguard Worker
4105*35238bceSAndroid Build Coastguard Worker if (supportsES32orGL45(ctx) || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
4106*35238bceSAndroid Build Coastguard Worker {
4107*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures[1]);
4108*35238bceSAndroid Build Coastguard Worker ctx.glGetTexParameteriv(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_IMMUTABLE_FORMAT, &immutable);
4109*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message
4110*35238bceSAndroid Build Coastguard Worker << "// GL_TEXTURE_IMMUTABLE_FORMAT = " << ((immutable != 0) ? "GL_TRUE" : "GL_FALSE")
4111*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
4112*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA8, 4, 4, 6);
4113*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_NO_ERROR);
4114*35238bceSAndroid Build Coastguard Worker ctx.glGetTexParameteriv(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_IMMUTABLE_FORMAT, &immutable);
4115*35238bceSAndroid Build Coastguard Worker ctx.getLog() << TestLog::Message
4116*35238bceSAndroid Build Coastguard Worker << "// GL_TEXTURE_IMMUTABLE_FORMAT = " << ((immutable != 0) ? "GL_TRUE" : "GL_FALSE")
4117*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
4118*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 1, GL_RGBA8, 4, 4, 6);
4119*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4120*35238bceSAndroid Build Coastguard Worker }
4121*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4122*35238bceSAndroid Build Coastguard Worker
4123*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, textures);
4124*35238bceSAndroid Build Coastguard Worker }
4125*35238bceSAndroid Build Coastguard Worker
texstorage3d_invalid_levels(NegativeTestContext & ctx)4126*35238bceSAndroid Build Coastguard Worker void texstorage3d_invalid_levels(NegativeTestContext &ctx)
4127*35238bceSAndroid Build Coastguard Worker {
4128*35238bceSAndroid Build Coastguard Worker uint32_t textures[] = {0x1234, 0x1234};
4129*35238bceSAndroid Build Coastguard Worker uint32_t log2MaxSize = deLog2Floor32(8) + 1 + 1;
4130*35238bceSAndroid Build Coastguard Worker const bool isES32orGL45 = supportsES32orGL45(ctx);
4131*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(2, textures);
4132*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_3D, textures[0]);
4133*35238bceSAndroid Build Coastguard Worker
4134*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_VALUE is generated if levels is less than 1.");
4135*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 0, GL_RGBA8, 4, 4, 4);
4136*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4137*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, 0, GL_RGBA8, 0, 0, 0);
4138*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4139*35238bceSAndroid Build Coastguard Worker
4140*35238bceSAndroid Build Coastguard Worker if (isES32orGL45 || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
4141*35238bceSAndroid Build Coastguard Worker {
4142*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures[1]);
4143*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA8, 4, 4, 6);
4144*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4145*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGBA8, 0, 0, 6);
4146*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_VALUE);
4147*35238bceSAndroid Build Coastguard Worker }
4148*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4149*35238bceSAndroid Build Coastguard Worker
4150*35238bceSAndroid Build Coastguard Worker ctx.beginSection(
4151*35238bceSAndroid Build Coastguard Worker "GL_INVALID_OPERATION is generated if levels is greater than floor(log_2(max(width, height, depth))) + 1");
4152*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, log2MaxSize, GL_RGBA8, 8, 2, 2);
4153*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4154*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, log2MaxSize, GL_RGBA8, 2, 8, 2);
4155*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4156*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, log2MaxSize, GL_RGBA8, 2, 2, 8);
4157*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4158*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_3D, log2MaxSize, GL_RGBA8, 8, 8, 8);
4159*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4160*35238bceSAndroid Build Coastguard Worker
4161*35238bceSAndroid Build Coastguard Worker if (isES32orGL45 || ctx.getContextInfo().isExtensionSupported("GL_OES_texture_cube_map_array"))
4162*35238bceSAndroid Build Coastguard Worker {
4163*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, log2MaxSize, GL_RGBA8, 2, 2, 6);
4164*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4165*35238bceSAndroid Build Coastguard Worker ctx.glTexStorage3D(GL_TEXTURE_CUBE_MAP_ARRAY, log2MaxSize, GL_RGBA8, 8, 8, 6);
4166*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_OPERATION);
4167*35238bceSAndroid Build Coastguard Worker }
4168*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4169*35238bceSAndroid Build Coastguard Worker
4170*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(2, textures);
4171*35238bceSAndroid Build Coastguard Worker }
4172*35238bceSAndroid Build Coastguard Worker
srgb_decode_texparameteri(NegativeTestContext & ctx)4173*35238bceSAndroid Build Coastguard Worker void srgb_decode_texparameteri(NegativeTestContext &ctx)
4174*35238bceSAndroid Build Coastguard Worker {
4175*35238bceSAndroid Build Coastguard Worker if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
4176*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
4177*35238bceSAndroid Build Coastguard Worker
4178*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
4179*35238bceSAndroid Build Coastguard Worker GLint textureMode = -1;
4180*35238bceSAndroid Build Coastguard Worker
4181*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
4182*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
4183*35238bceSAndroid Build Coastguard Worker
4184*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is "
4185*35238bceSAndroid Build Coastguard Worker "not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
4186*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, textureMode);
4187*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4188*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4189*35238bceSAndroid Build Coastguard Worker
4190*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
4191*35238bceSAndroid Build Coastguard Worker }
4192*35238bceSAndroid Build Coastguard Worker
srgb_decode_texparameterf(NegativeTestContext & ctx)4193*35238bceSAndroid Build Coastguard Worker void srgb_decode_texparameterf(NegativeTestContext &ctx)
4194*35238bceSAndroid Build Coastguard Worker {
4195*35238bceSAndroid Build Coastguard Worker if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
4196*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
4197*35238bceSAndroid Build Coastguard Worker
4198*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
4199*35238bceSAndroid Build Coastguard Worker GLfloat textureMode = -1.0f;
4200*35238bceSAndroid Build Coastguard Worker
4201*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
4202*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
4203*35238bceSAndroid Build Coastguard Worker
4204*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is "
4205*35238bceSAndroid Build Coastguard Worker "not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
4206*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, textureMode);
4207*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4208*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4209*35238bceSAndroid Build Coastguard Worker
4210*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
4211*35238bceSAndroid Build Coastguard Worker }
4212*35238bceSAndroid Build Coastguard Worker
srgb_decode_texparameteriv(NegativeTestContext & ctx)4213*35238bceSAndroid Build Coastguard Worker void srgb_decode_texparameteriv(NegativeTestContext &ctx)
4214*35238bceSAndroid Build Coastguard Worker {
4215*35238bceSAndroid Build Coastguard Worker if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
4216*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
4217*35238bceSAndroid Build Coastguard Worker
4218*35238bceSAndroid Build Coastguard Worker GLint params[1] = {GL_LINEAR};
4219*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
4220*35238bceSAndroid Build Coastguard Worker
4221*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
4222*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
4223*35238bceSAndroid Build Coastguard Worker
4224*35238bceSAndroid Build Coastguard Worker params[0] = -1;
4225*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is "
4226*35238bceSAndroid Build Coastguard Worker "not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
4227*35238bceSAndroid Build Coastguard Worker ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, ¶ms[0]);
4228*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4229*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4230*35238bceSAndroid Build Coastguard Worker
4231*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
4232*35238bceSAndroid Build Coastguard Worker }
4233*35238bceSAndroid Build Coastguard Worker
srgb_decode_texparameterfv(NegativeTestContext & ctx)4234*35238bceSAndroid Build Coastguard Worker void srgb_decode_texparameterfv(NegativeTestContext &ctx)
4235*35238bceSAndroid Build Coastguard Worker {
4236*35238bceSAndroid Build Coastguard Worker if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
4237*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
4238*35238bceSAndroid Build Coastguard Worker
4239*35238bceSAndroid Build Coastguard Worker GLfloat params[1] = {GL_LINEAR};
4240*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
4241*35238bceSAndroid Build Coastguard Worker
4242*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
4243*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
4244*35238bceSAndroid Build Coastguard Worker
4245*35238bceSAndroid Build Coastguard Worker params[0] = -1.0f;
4246*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is "
4247*35238bceSAndroid Build Coastguard Worker "not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
4248*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, ¶ms[0]);
4249*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4250*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4251*35238bceSAndroid Build Coastguard Worker
4252*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
4253*35238bceSAndroid Build Coastguard Worker }
4254*35238bceSAndroid Build Coastguard Worker
srgb_decode_texparameterIiv(NegativeTestContext & ctx)4255*35238bceSAndroid Build Coastguard Worker void srgb_decode_texparameterIiv(NegativeTestContext &ctx)
4256*35238bceSAndroid Build Coastguard Worker {
4257*35238bceSAndroid Build Coastguard Worker if (!supportsES32orGL45(ctx))
4258*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "glTexParameterIiv is not supported.");
4259*35238bceSAndroid Build Coastguard Worker
4260*35238bceSAndroid Build Coastguard Worker if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
4261*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
4262*35238bceSAndroid Build Coastguard Worker
4263*35238bceSAndroid Build Coastguard Worker GLint textureMode[] = {GL_DEPTH_COMPONENT, GL_STENCIL_INDEX};
4264*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
4265*35238bceSAndroid Build Coastguard Worker
4266*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
4267*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
4268*35238bceSAndroid Build Coastguard Worker
4269*35238bceSAndroid Build Coastguard Worker textureMode[0] = -1;
4270*35238bceSAndroid Build Coastguard Worker textureMode[1] = -1;
4271*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is "
4272*35238bceSAndroid Build Coastguard Worker "not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
4273*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, textureMode);
4274*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4275*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4276*35238bceSAndroid Build Coastguard Worker
4277*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
4278*35238bceSAndroid Build Coastguard Worker }
4279*35238bceSAndroid Build Coastguard Worker
srgb_decode_texparameterIuiv(NegativeTestContext & ctx)4280*35238bceSAndroid Build Coastguard Worker void srgb_decode_texparameterIuiv(NegativeTestContext &ctx)
4281*35238bceSAndroid Build Coastguard Worker {
4282*35238bceSAndroid Build Coastguard Worker if (!supportsES32orGL45(ctx))
4283*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "glTexParameterIuiv is not supported.");
4284*35238bceSAndroid Build Coastguard Worker
4285*35238bceSAndroid Build Coastguard Worker if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
4286*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
4287*35238bceSAndroid Build Coastguard Worker
4288*35238bceSAndroid Build Coastguard Worker GLuint textureMode[] = {GL_DEPTH_COMPONENT, GL_STENCIL_INDEX};
4289*35238bceSAndroid Build Coastguard Worker GLuint texture = 0x1234;
4290*35238bceSAndroid Build Coastguard Worker
4291*35238bceSAndroid Build Coastguard Worker ctx.glGenTextures(1, &texture);
4292*35238bceSAndroid Build Coastguard Worker ctx.glBindTexture(GL_TEXTURE_2D, texture);
4293*35238bceSAndroid Build Coastguard Worker
4294*35238bceSAndroid Build Coastguard Worker textureMode[0] = GL_DONT_CARE;
4295*35238bceSAndroid Build Coastguard Worker textureMode[1] = GL_DONT_CARE;
4296*35238bceSAndroid Build Coastguard Worker ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is "
4297*35238bceSAndroid Build Coastguard Worker "not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
4298*35238bceSAndroid Build Coastguard Worker ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, textureMode);
4299*35238bceSAndroid Build Coastguard Worker ctx.expectError(GL_INVALID_ENUM);
4300*35238bceSAndroid Build Coastguard Worker ctx.endSection();
4301*35238bceSAndroid Build Coastguard Worker
4302*35238bceSAndroid Build Coastguard Worker ctx.glDeleteTextures(1, &texture);
4303*35238bceSAndroid Build Coastguard Worker }
4304*35238bceSAndroid Build Coastguard Worker
getNegativeTextureApiTestFunctions()4305*35238bceSAndroid Build Coastguard Worker std::vector<FunctionContainer> getNegativeTextureApiTestFunctions()
4306*35238bceSAndroid Build Coastguard Worker {
4307*35238bceSAndroid Build Coastguard Worker FunctionContainer funcs[] = {
4308*35238bceSAndroid Build Coastguard Worker {activetexture, "activetexture", "Invalid glActiveTexture() usage"},
4309*35238bceSAndroid Build Coastguard Worker {bindtexture, "bindtexture", "Invalid glBindTexture() usage"},
4310*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_invalid_target, "compressedteximage2d_invalid_target",
4311*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4312*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_invalid_format, "compressedteximage2d_invalid_format",
4313*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4314*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_neg_level, "compressedteximage2d_neg_level", "Invalid glCompressedTexImage2D() usage"},
4315*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_max_level, "compressedteximage2d_max_level", "Invalid glCompressedTexImage2D() usage"},
4316*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_neg_width_height, "compressedteximage2d_neg_width_height",
4317*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4318*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_max_width_height, "compressedteximage2d_max_width_height",
4319*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4320*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_invalid_border, "compressedteximage2d_invalid_border",
4321*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4322*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_invalid_size, "compressedteximage2d_invalid_size",
4323*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4324*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_neg_size, "compressedteximage2d_neg_size", "Invalid glCompressedTexImage2D() usage"},
4325*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_invalid_width_height, "compressedteximage2d_invalid_width_height",
4326*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4327*35238bceSAndroid Build Coastguard Worker {compressedteximage2d_invalid_buffer_target, "compressedteximage2d_invalid_buffer_target",
4328*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4329*35238bceSAndroid Build Coastguard Worker {copyteximage2d_invalid_target, "copyteximage2d_invalid_target", "Invalid glCopyTexImage2D() usage"},
4330*35238bceSAndroid Build Coastguard Worker {copyteximage2d_invalid_format, "copyteximage2d_invalid_format", "Invalid glCopyTexImage2D() usage"},
4331*35238bceSAndroid Build Coastguard Worker {copyteximage2d_inequal_width_height_cube, "copyteximage2d_inequal_width_height_cube",
4332*35238bceSAndroid Build Coastguard Worker "Invalid glCopyTexImage2D() usage"},
4333*35238bceSAndroid Build Coastguard Worker {copyteximage2d_neg_level, "copyteximage2d_neg_level", "Invalid glCopyTexImage2D() usage"},
4334*35238bceSAndroid Build Coastguard Worker {copyteximage2d_max_level, "copyteximage2d_max_level", "Invalid glCopyTexImage2D() usage"},
4335*35238bceSAndroid Build Coastguard Worker {copyteximage2d_neg_width_height, "copyteximage2d_neg_width_height", "Invalid glCopyTexImage2D() usage"},
4336*35238bceSAndroid Build Coastguard Worker {copyteximage2d_max_width_height, "copyteximage2d_max_width_height", "Invalid glCopyTexImage2D() usage"},
4337*35238bceSAndroid Build Coastguard Worker {copyteximage2d_invalid_border, "copyteximage2d_invalid_border", "Invalid glCopyTexImage2D() usage"},
4338*35238bceSAndroid Build Coastguard Worker {copyteximage2d_incomplete_framebuffer, "copyteximage2d_incomplete_framebuffer",
4339*35238bceSAndroid Build Coastguard Worker "Invalid glCopyTexImage2D() usage"},
4340*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_invalid_target, "copytexsubimage2d_invalid_target", "Invalid glCopyTexSubImage2D() usage"},
4341*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_read_buffer_is_none, "copytexsubimage2d_read_buffer_is_none",
4342*35238bceSAndroid Build Coastguard Worker "Invalid glCopyTexSubImage2D() usage"},
4343*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_texture_internalformat, "copytexsubimage2d_texture_internalformat",
4344*35238bceSAndroid Build Coastguard Worker "Invalid glCopyTexSubImage2D() usage"},
4345*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_neg_level, "copytexsubimage2d_neg_level", "Invalid glCopyTexSubImage2D() usage"},
4346*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_max_level, "copytexsubimage2d_max_level", "Invalid glCopyTexSubImage2D() usage"},
4347*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_neg_offset, "copytexsubimage2d_neg_offset", "Invalid glCopyTexSubImage2D() usage"},
4348*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_invalid_offset, "copytexsubimage2d_invalid_offset", "Invalid glCopyTexSubImage2D() usage"},
4349*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_neg_width_height, "copytexsubimage2d_neg_width_height",
4350*35238bceSAndroid Build Coastguard Worker "Invalid glCopyTexSubImage2D() usage"},
4351*35238bceSAndroid Build Coastguard Worker {copytexsubimage2d_incomplete_framebuffer, "copytexsubimage2d_incomplete_framebuffer",
4352*35238bceSAndroid Build Coastguard Worker "Invalid glCopyTexSubImage2D() usage"},
4353*35238bceSAndroid Build Coastguard Worker {deletetextures, "deletetextures", "Invalid glDeleteTextures() usage"},
4354*35238bceSAndroid Build Coastguard Worker {generatemipmap, "generatemipmap", "Invalid glGenerateMipmap() usage"},
4355*35238bceSAndroid Build Coastguard Worker {gentextures, "gentextures", "Invalid glGenTextures() usage"},
4356*35238bceSAndroid Build Coastguard Worker {pixelstorei, "pixelstorei", "Invalid glPixelStorei() usage"},
4357*35238bceSAndroid Build Coastguard Worker {teximage2d, "teximage2d", "Invalid glTexImage2D() usage"},
4358*35238bceSAndroid Build Coastguard Worker {teximage2d_inequal_width_height_cube, "teximage2d_inequal_width_height_cube", "Invalid glTexImage2D() usage"},
4359*35238bceSAndroid Build Coastguard Worker {teximage2d_neg_level, "teximage2d_neg_level", "Invalid glTexImage2D() usage"},
4360*35238bceSAndroid Build Coastguard Worker {teximage2d_max_level, "teximage2d_max_level", "Invalid glTexImage2D() usage"},
4361*35238bceSAndroid Build Coastguard Worker {teximage2d_neg_width_height, "teximage2d_neg_width_height", "Invalid glTexImage2D() usage"},
4362*35238bceSAndroid Build Coastguard Worker {teximage2d_max_width_height, "teximage2d_max_width_height", "Invalid glTexImage2D() usage"},
4363*35238bceSAndroid Build Coastguard Worker {teximage2d_invalid_border, "teximage2d_invalid_border", "Invalid glTexImage2D() usage"},
4364*35238bceSAndroid Build Coastguard Worker {teximage2d_invalid_buffer_target, "teximage2d_invalid_buffer_target", "Invalid glTexImage2D() usage"},
4365*35238bceSAndroid Build Coastguard Worker {texsubimage2d, "texsubimage2d", "Invalid glTexSubImage2D() usage"},
4366*35238bceSAndroid Build Coastguard Worker {texsubimage2d_neg_level, "texsubimage2d_neg_level", "Invalid glTexSubImage2D() usage"},
4367*35238bceSAndroid Build Coastguard Worker {texsubimage2d_max_level, "texsubimage2d_max_level", "Invalid glTexSubImage2D() usage"},
4368*35238bceSAndroid Build Coastguard Worker {texsubimage2d_neg_offset, "texsubimage2d_neg_offset", "Invalid glTexSubImage2D() usage"},
4369*35238bceSAndroid Build Coastguard Worker {texsubimage2d_invalid_offset, "texsubimage2d_invalid_offset", "Invalid glTexSubImage2D() usage"},
4370*35238bceSAndroid Build Coastguard Worker {texsubimage2d_neg_width_height, "texsubimage2d_neg_width_height", "Invalid glTexSubImage2D() usage"},
4371*35238bceSAndroid Build Coastguard Worker {texsubimage2d_invalid_buffer_target, "texsubimage2d_invalid_buffer_target", "Invalid glTexSubImage2D() usage"},
4372*35238bceSAndroid Build Coastguard Worker {texparameteri, "texparameteri", "Invalid glTexParameteri() usage"},
4373*35238bceSAndroid Build Coastguard Worker {texparameterf, "texparameterf", "Invalid glTexParameterf() usage"},
4374*35238bceSAndroid Build Coastguard Worker {texparameteriv, "texparameteriv", "Invalid glTexParameteriv() usage"},
4375*35238bceSAndroid Build Coastguard Worker {texparameterfv, "texparameterfv", "Invalid glTexParameterfv() usage"},
4376*35238bceSAndroid Build Coastguard Worker {texparameterIiv, "texparameterIiv", "Invalid glTexParameterIiv() usage"},
4377*35238bceSAndroid Build Coastguard Worker {texparameterIuiv, "texparameterIuiv", "Invalid glTexParameterIuiv() usage"},
4378*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage2d, "compressedtexsubimage2d", "Invalid glCompressedTexSubImage2D() usage"},
4379*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage2d_neg_level, "compressedtexsubimage2d_neg_level",
4380*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage2D() usage"},
4381*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage2d_max_level, "compressedtexsubimage2d_max_level",
4382*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage2D() usage"},
4383*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage2d_neg_offset, "compressedtexsubimage2d_neg_offset",
4384*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage2D() usage"},
4385*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage2d_invalid_offset, "compressedtexsubimage2d_invalid_offset",
4386*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage2D() usage"},
4387*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage2d_neg_width_height, "compressedtexsubimage2d_neg_width_height",
4388*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage2D() usage"},
4389*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage2d_invalid_size, "compressedtexsubimage2d_invalid_size",
4390*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage2D() usage"},
4391*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage2d_invalid_buffer_target, "compressedtexsubimage2d_invalid_buffer_target",
4392*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage2D() usage"},
4393*35238bceSAndroid Build Coastguard Worker {teximage3d, "teximage3d", "Invalid glTexImage3D() usage"},
4394*35238bceSAndroid Build Coastguard Worker {teximage3d_neg_level, "teximage3d_neg_level", "Invalid glTexImage3D() usage"},
4395*35238bceSAndroid Build Coastguard Worker {teximage3d_max_level, "teximage3d_max_level", "Invalid glTexImage3D() usage"},
4396*35238bceSAndroid Build Coastguard Worker {teximage3d_neg_width_height_depth, "teximage3d_neg_width_height_depth", "Invalid glTexImage3D() usage"},
4397*35238bceSAndroid Build Coastguard Worker {teximage3d_max_width_height_depth, "teximage3d_max_width_height_depth", "Invalid glTexImage3D() usage"},
4398*35238bceSAndroid Build Coastguard Worker {teximage3d_invalid_border, "teximage3d_invalid_border", "Invalid glTexImage3D() usage"},
4399*35238bceSAndroid Build Coastguard Worker {teximage3d_invalid_buffer_target, "teximage3d_invalid_buffer_target", "Invalid glTexImage3D() usage"},
4400*35238bceSAndroid Build Coastguard Worker {texsubimage3d, "texsubimage3d", "Invalid glTexSubImage3D() usage"},
4401*35238bceSAndroid Build Coastguard Worker {texsubimage3d_neg_level, "texsubimage3d_neg_level", "Invalid glTexSubImage3D() usage"},
4402*35238bceSAndroid Build Coastguard Worker {texsubimage3d_max_level, "texsubimage3d_max_level", "Invalid glTexSubImage3D() usage"},
4403*35238bceSAndroid Build Coastguard Worker {texsubimage3d_neg_offset, "texsubimage3d_neg_offset", "Invalid glTexSubImage3D() usage"},
4404*35238bceSAndroid Build Coastguard Worker {texsubimage3d_invalid_offset, "texsubimage3d_invalid_offset", "Invalid glTexSubImage3D() usage"},
4405*35238bceSAndroid Build Coastguard Worker {texsubimage3d_neg_width_height, "texsubimage3d_neg_width_height", "Invalid glTexSubImage3D() usage"},
4406*35238bceSAndroid Build Coastguard Worker {texsubimage3d_invalid_buffer_target, "texsubimage3d_invalid_buffer_target", "Invalid glTexSubImage3D() usage"},
4407*35238bceSAndroid Build Coastguard Worker {copytexsubimage3d, "copytexsubimage3d", "Invalid glCopyTexSubImage3D() usage"},
4408*35238bceSAndroid Build Coastguard Worker {copytexsubimage3d_neg_level, "copytexsubimage3d_neg_level", "Invalid glCopyTexSubImage3D() usage"},
4409*35238bceSAndroid Build Coastguard Worker {copytexsubimage3d_max_level, "copytexsubimage3d_max_level", "Invalid glCopyTexSubImage3D() usage"},
4410*35238bceSAndroid Build Coastguard Worker {copytexsubimage3d_neg_offset, "copytexsubimage3d_neg_offset", "Invalid glCopyTexSubImage3D() usage"},
4411*35238bceSAndroid Build Coastguard Worker {copytexsubimage3d_invalid_offset, "copytexsubimage3d_invalid_offset", "Invalid glCopyTexSubImage3D() usage"},
4412*35238bceSAndroid Build Coastguard Worker {copytexsubimage3d_neg_width_height, "copytexsubimage3d_neg_width_height",
4413*35238bceSAndroid Build Coastguard Worker "Invalid glCopyTexSubImage3D() usage"},
4414*35238bceSAndroid Build Coastguard Worker {copytexsubimage3d_incomplete_framebuffer, "copytexsubimage3d_incomplete_framebuffer",
4415*35238bceSAndroid Build Coastguard Worker "Invalid glCopyTexSubImage3D() usage"},
4416*35238bceSAndroid Build Coastguard Worker {compressedteximage3d, "compressedteximage3d", "Invalid glCompressedTexImage3D() usage"},
4417*35238bceSAndroid Build Coastguard Worker {compressedteximage3d_neg_level, "compressedteximage3d_neg_level", "Invalid glCompressedTexImage3D() usage"},
4418*35238bceSAndroid Build Coastguard Worker {compressedteximage3d_max_level, "compressedteximage3d_max_level", "Invalid glCompressedTexImage3D() usage"},
4419*35238bceSAndroid Build Coastguard Worker {compressedteximage3d_neg_width_height_depth, "compressedteximage3d_neg_width_height_depth",
4420*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage3D() usage"},
4421*35238bceSAndroid Build Coastguard Worker {compressedteximage3d_max_width_height_depth, "compressedteximage3d_max_width_height_depth",
4422*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage3D() usage"},
4423*35238bceSAndroid Build Coastguard Worker {compressedteximage3d_invalid_border, "compressedteximage3d_invalid_border",
4424*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage3D() usage"},
4425*35238bceSAndroid Build Coastguard Worker {compressedteximage3d_invalid_size, "compressedteximage3d_invalid_size",
4426*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage3D() usage"},
4427*35238bceSAndroid Build Coastguard Worker {compressedteximage3d_invalid_width_height, "compressedteximage3d_invalid_width_height",
4428*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage3D() usage"},
4429*35238bceSAndroid Build Coastguard Worker {compressedteximage3d_invalid_buffer_target, "compressedteximage3d_invalid_buffer_target",
4430*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexImage3D() usage"},
4431*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage3d, "compressedtexsubimage3d", "Invalid glCompressedTexSubImage3D() usage"},
4432*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage3d_neg_level, "compressedtexsubimage3d_neg_level",
4433*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage3D() usage"},
4434*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage3d_max_level, "compressedtexsubimage3d_max_level",
4435*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage3D() usage"},
4436*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage3d_neg_offset, "compressedtexsubimage3d_neg_offset",
4437*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage3D() usage"},
4438*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage3d_invalid_offset, "compressedtexsubimage3d_invalid_offset",
4439*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage3D() usage"},
4440*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage3d_neg_width_height_depth, "compressedtexsubimage3d_neg_width_height_depth",
4441*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage3D() usage"},
4442*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage3d_invalid_size, "compressedtexsubimage3d_invalid_size",
4443*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage3D() usage"},
4444*35238bceSAndroid Build Coastguard Worker {compressedtexsubimage3d_invalid_buffer_target, "compressedtexsubimage3d_invalid_buffer_target",
4445*35238bceSAndroid Build Coastguard Worker "Invalid glCompressedTexSubImage3D() usage"},
4446*35238bceSAndroid Build Coastguard Worker {texstorage2d, "texstorage2d", "Invalid glTexStorage2D() usage"},
4447*35238bceSAndroid Build Coastguard Worker {texstorage2d_invalid_binding, "texstorage2d_invalid_binding", "Invalid glTexStorage2D() usage"},
4448*35238bceSAndroid Build Coastguard Worker {texstorage2d_invalid_levels, "texstorage2d_invalid_levels", "Invalid glTexStorage2D() usage"},
4449*35238bceSAndroid Build Coastguard Worker {texstorage3d, "texstorage3d", "Invalid glTexStorage3D() usage"},
4450*35238bceSAndroid Build Coastguard Worker {texstorage3d_invalid_binding, "texstorage3d_invalid_binding", "Invalid glTexStorage3D() usage"},
4451*35238bceSAndroid Build Coastguard Worker {texstorage3d_invalid_levels, "texstorage3d_invalid_levels", "Invalid glTexStorage3D() usage"},
4452*35238bceSAndroid Build Coastguard Worker {srgb_decode_texparameteri, "srgb_decode_texparameteri", "Invalid texparameteri() usage srgb"},
4453*35238bceSAndroid Build Coastguard Worker {srgb_decode_texparameterf, "srgb_decode_texparameterf", "Invalid texparameterf() usage srgb"},
4454*35238bceSAndroid Build Coastguard Worker {srgb_decode_texparameteriv, "srgb_decode_texparameteriv", "Invalid texparameteriv() usage srgb"},
4455*35238bceSAndroid Build Coastguard Worker {srgb_decode_texparameterfv, "srgb_decode_texparameterfv", "Invalid texparameterfv() usage srgb"},
4456*35238bceSAndroid Build Coastguard Worker {srgb_decode_texparameterIiv, "srgb_decode_texparameterIiv", "Invalid texparameterIiv() usage srgb"},
4457*35238bceSAndroid Build Coastguard Worker {srgb_decode_texparameterIuiv, "srgb_decode_texparameterIuiv", "Invalid texparameterIuiv() usage srgb"},
4458*35238bceSAndroid Build Coastguard Worker };
4459*35238bceSAndroid Build Coastguard Worker
4460*35238bceSAndroid Build Coastguard Worker return std::vector<FunctionContainer>(DE_ARRAY_BEGIN(funcs), DE_ARRAY_END(funcs));
4461*35238bceSAndroid Build Coastguard Worker }
4462*35238bceSAndroid Build Coastguard Worker
4463*35238bceSAndroid Build Coastguard Worker } // namespace NegativeTestShared
4464*35238bceSAndroid Build Coastguard Worker } // namespace Functional
4465*35238bceSAndroid Build Coastguard Worker } // namespace gles31
4466*35238bceSAndroid Build Coastguard Worker } // namespace deqp
4467