1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL ES 2.0 Module
3*35238bceSAndroid Build Coastguard Worker * -------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker *
5*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker *
7*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker *
11*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker *
13*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker *
19*35238bceSAndroid Build Coastguard Worker *//*!
20*35238bceSAndroid Build Coastguard Worker * \file
21*35238bceSAndroid Build Coastguard Worker * \brief Negative GL State API tests.
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "es2fNegativeStateApiTests.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "es2fApiCase.hpp"
26*35238bceSAndroid Build Coastguard Worker #include "gluShaderProgram.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "deMemory.h"
28*35238bceSAndroid Build Coastguard Worker
29*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp"
30*35238bceSAndroid Build Coastguard Worker #include "glwDefs.hpp"
31*35238bceSAndroid Build Coastguard Worker
32*35238bceSAndroid Build Coastguard Worker using namespace glw; // GL types
33*35238bceSAndroid Build Coastguard Worker
34*35238bceSAndroid Build Coastguard Worker namespace deqp
35*35238bceSAndroid Build Coastguard Worker {
36*35238bceSAndroid Build Coastguard Worker namespace gles2
37*35238bceSAndroid Build Coastguard Worker {
38*35238bceSAndroid Build Coastguard Worker namespace Functional
39*35238bceSAndroid Build Coastguard Worker {
40*35238bceSAndroid Build Coastguard Worker
41*35238bceSAndroid Build Coastguard Worker using tcu::TestLog;
42*35238bceSAndroid Build Coastguard Worker
43*35238bceSAndroid Build Coastguard Worker static const char *uniformTestVertSource = "uniform mediump vec4 vTest;\n"
44*35238bceSAndroid Build Coastguard Worker "void main (void)\n"
45*35238bceSAndroid Build Coastguard Worker "{\n"
46*35238bceSAndroid Build Coastguard Worker " gl_Position = vTest;\n"
47*35238bceSAndroid Build Coastguard Worker "}\n\0";
48*35238bceSAndroid Build Coastguard Worker static const char *uniformTestFragSource = "uniform mediump ivec4 fTest;\n"
49*35238bceSAndroid Build Coastguard Worker "void main (void)\n"
50*35238bceSAndroid Build Coastguard Worker "{\n"
51*35238bceSAndroid Build Coastguard Worker " gl_FragColor = vec4(fTest);\n"
52*35238bceSAndroid Build Coastguard Worker "}\n\0";
53*35238bceSAndroid Build Coastguard Worker
NegativeStateApiTests(Context & context)54*35238bceSAndroid Build Coastguard Worker NegativeStateApiTests::NegativeStateApiTests(Context &context)
55*35238bceSAndroid Build Coastguard Worker : TestCaseGroup(context, "state", "Negative GL State API Cases")
56*35238bceSAndroid Build Coastguard Worker {
57*35238bceSAndroid Build Coastguard Worker }
58*35238bceSAndroid Build Coastguard Worker
~NegativeStateApiTests(void)59*35238bceSAndroid Build Coastguard Worker NegativeStateApiTests::~NegativeStateApiTests(void)
60*35238bceSAndroid Build Coastguard Worker {
61*35238bceSAndroid Build Coastguard Worker }
62*35238bceSAndroid Build Coastguard Worker
init(void)63*35238bceSAndroid Build Coastguard Worker void NegativeStateApiTests::init(void)
64*35238bceSAndroid Build Coastguard Worker {
65*35238bceSAndroid Build Coastguard Worker // Enabling & disabling states
66*35238bceSAndroid Build Coastguard Worker
67*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(enable, "Invalid glEnable() usage", {
68*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if cap is not one of the allowed values.");
69*35238bceSAndroid Build Coastguard Worker glEnable(-1);
70*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
71*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
72*35238bceSAndroid Build Coastguard Worker });
73*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(disable, "Invalid glDisable() usage", {
74*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if cap is not one of the allowed values.");
75*35238bceSAndroid Build Coastguard Worker glDisable(-1);
76*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
77*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
78*35238bceSAndroid Build Coastguard Worker });
79*35238bceSAndroid Build Coastguard Worker
80*35238bceSAndroid Build Coastguard Worker // Simple state queries
81*35238bceSAndroid Build Coastguard Worker
82*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_booleanv, "Invalid glGetBooleanv() usage", {
83*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not one of the allowed values.");
84*35238bceSAndroid Build Coastguard Worker GLboolean params[1] = {GL_FALSE};
85*35238bceSAndroid Build Coastguard Worker glGetBooleanv(-1, ¶ms[0]);
86*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
87*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
88*35238bceSAndroid Build Coastguard Worker });
89*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_floatv, "Invalid glGetFloatv() usage", {
90*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not one of the allowed values.");
91*35238bceSAndroid Build Coastguard Worker GLfloat params[1] = {0.0f};
92*35238bceSAndroid Build Coastguard Worker glGetFloatv(-1, ¶ms[0]);
93*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
94*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
95*35238bceSAndroid Build Coastguard Worker });
96*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_integerv, "Invalid glGetIntegerv() usage", {
97*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not one of the allowed values.");
98*35238bceSAndroid Build Coastguard Worker GLint params[1] = {0};
99*35238bceSAndroid Build Coastguard Worker glGetIntegerv(-1, ¶ms[0]);
100*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
101*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
102*35238bceSAndroid Build Coastguard Worker });
103*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_string, "Invalid glGetString() usage", {
104*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if name is not an accepted value.");
105*35238bceSAndroid Build Coastguard Worker glGetString(0);
106*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
107*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
108*35238bceSAndroid Build Coastguard Worker });
109*35238bceSAndroid Build Coastguard Worker
110*35238bceSAndroid Build Coastguard Worker // Enumerated state queries: Shaders
111*35238bceSAndroid Build Coastguard Worker
112*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_attached_shaders, "Invalid glGetAttachedShaders() usage", {
113*35238bceSAndroid Build Coastguard Worker GLuint shaders[1] = {0};
114*35238bceSAndroid Build Coastguard Worker GLuint shaderObject = glCreateShader(GL_VERTEX_SHADER);
115*35238bceSAndroid Build Coastguard Worker GLuint program = glCreateProgram();
116*35238bceSAndroid Build Coastguard Worker GLsizei count[1] = {-1};
117*35238bceSAndroid Build Coastguard Worker
118*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if program is not a value generated by OpenGL.");
119*35238bceSAndroid Build Coastguard Worker glGetAttachedShaders(-1, 1, &count[0], &shaders[0]);
120*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
121*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
122*35238bceSAndroid Build Coastguard Worker
123*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if program is not a program object.");
124*35238bceSAndroid Build Coastguard Worker glGetAttachedShaders(shaderObject, 1, &count[0], &shaders[0]);
125*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
126*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
127*35238bceSAndroid Build Coastguard Worker
128*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if maxCount is less than 0.");
129*35238bceSAndroid Build Coastguard Worker glGetAttachedShaders(program, -1, &count[0], &shaders[0]);
130*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
131*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
132*35238bceSAndroid Build Coastguard Worker
133*35238bceSAndroid Build Coastguard Worker glDeleteShader(shaderObject);
134*35238bceSAndroid Build Coastguard Worker glDeleteProgram(program);
135*35238bceSAndroid Build Coastguard Worker });
136*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_shaderiv, "Invalid glGetShaderiv() usage", {
137*35238bceSAndroid Build Coastguard Worker GLboolean shaderCompilerSupported;
138*35238bceSAndroid Build Coastguard Worker glGetBooleanv(GL_SHADER_COMPILER, &shaderCompilerSupported);
139*35238bceSAndroid Build Coastguard Worker if (!shaderCompilerSupported)
140*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Shader compiler not supported, always expect GL_INVALID_OPERATION"
141*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
142*35238bceSAndroid Build Coastguard Worker else
143*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Shader compiler supported" << TestLog::EndMessage;
144*35238bceSAndroid Build Coastguard Worker
145*35238bceSAndroid Build Coastguard Worker GLuint shader = glCreateShader(GL_VERTEX_SHADER);
146*35238bceSAndroid Build Coastguard Worker GLuint program = glCreateProgram();
147*35238bceSAndroid Build Coastguard Worker GLint param[1] = {-1};
148*35238bceSAndroid Build Coastguard Worker
149*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not an accepted value.");
150*35238bceSAndroid Build Coastguard Worker glGetShaderiv(shader, -1, ¶m[0]);
151*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
152*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
153*35238bceSAndroid Build Coastguard Worker
154*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if shader is not a value generated by OpenGL.");
155*35238bceSAndroid Build Coastguard Worker glGetShaderiv(-1, GL_SHADER_TYPE, ¶m[0]);
156*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
157*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
158*35238bceSAndroid Build Coastguard Worker
159*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
160*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_OPERATION is generated if pname is GL_COMPILE_STATUS, GL_INFO_LOG_LENGTH, or "
161*35238bceSAndroid Build Coastguard Worker "GL_SHADER_SOURCE_LENGTH but a shader compiler is not supported.");
162*35238bceSAndroid Build Coastguard Worker glGetShaderiv(shader, GL_COMPILE_STATUS, ¶m[0]);
163*35238bceSAndroid Build Coastguard Worker expectError(shaderCompilerSupported ? GL_NO_ERROR : GL_INVALID_OPERATION);
164*35238bceSAndroid Build Coastguard Worker glGetShaderiv(shader, GL_INFO_LOG_LENGTH, ¶m[0]);
165*35238bceSAndroid Build Coastguard Worker expectError(shaderCompilerSupported ? GL_NO_ERROR : GL_INVALID_OPERATION);
166*35238bceSAndroid Build Coastguard Worker glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, ¶m[0]);
167*35238bceSAndroid Build Coastguard Worker expectError(shaderCompilerSupported ? GL_NO_ERROR : GL_INVALID_OPERATION);
168*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
169*35238bceSAndroid Build Coastguard Worker
170*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if shader does not refer to a shader object.");
171*35238bceSAndroid Build Coastguard Worker glGetShaderiv(program, GL_SHADER_TYPE, ¶m[0]);
172*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
173*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
174*35238bceSAndroid Build Coastguard Worker
175*35238bceSAndroid Build Coastguard Worker glDeleteShader(shader);
176*35238bceSAndroid Build Coastguard Worker glDeleteProgram(program);
177*35238bceSAndroid Build Coastguard Worker });
178*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_shader_info_log, "Invalid glGetShaderInfoLog() usage", {
179*35238bceSAndroid Build Coastguard Worker GLuint shader = glCreateShader(GL_VERTEX_SHADER);
180*35238bceSAndroid Build Coastguard Worker GLuint program = glCreateProgram();
181*35238bceSAndroid Build Coastguard Worker GLsizei length[1] = {-1};
182*35238bceSAndroid Build Coastguard Worker char infoLog[128];
183*35238bceSAndroid Build Coastguard Worker
184*35238bceSAndroid Build Coastguard Worker deMemset(&infoLog[0], 0, sizeof(infoLog));
185*35238bceSAndroid Build Coastguard Worker
186*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if shader is not a value generated by OpenGL.");
187*35238bceSAndroid Build Coastguard Worker glGetShaderInfoLog(-1, 128, &length[0], &infoLog[0]);
188*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
189*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
190*35238bceSAndroid Build Coastguard Worker
191*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if shader is not a shader object.");
192*35238bceSAndroid Build Coastguard Worker glGetShaderInfoLog(program, 128, &length[0], &infoLog[0]);
193*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
194*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
195*35238bceSAndroid Build Coastguard Worker
196*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if maxLength is less than 0.");
197*35238bceSAndroid Build Coastguard Worker glGetShaderInfoLog(shader, -1, &length[0], &infoLog[0]);
198*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
199*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
200*35238bceSAndroid Build Coastguard Worker
201*35238bceSAndroid Build Coastguard Worker glDeleteShader(shader);
202*35238bceSAndroid Build Coastguard Worker glDeleteProgram(program);
203*35238bceSAndroid Build Coastguard Worker });
204*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_shader_precision_format, "Invalid glGetShaderPrecisionFormat() usage", {
205*35238bceSAndroid Build Coastguard Worker GLboolean shaderCompilerSupported;
206*35238bceSAndroid Build Coastguard Worker glGetBooleanv(GL_SHADER_COMPILER, &shaderCompilerSupported);
207*35238bceSAndroid Build Coastguard Worker if (!shaderCompilerSupported)
208*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Shader compiler not supported, always expect GL_INVALID_OPERATION"
209*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
210*35238bceSAndroid Build Coastguard Worker else
211*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Message << "// Shader compiler supported" << TestLog::EndMessage;
212*35238bceSAndroid Build Coastguard Worker
213*35238bceSAndroid Build Coastguard Worker GLint range[2];
214*35238bceSAndroid Build Coastguard Worker range[0] = -1;
215*35238bceSAndroid Build Coastguard Worker range[1] = -1;
216*35238bceSAndroid Build Coastguard Worker GLint precision[1] = {-1};
217*35238bceSAndroid Build Coastguard Worker
218*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
219*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_ENUM is generated if shaderType or precisionType is not an accepted value.");
220*35238bceSAndroid Build Coastguard Worker glGetShaderPrecisionFormat(-1, GL_MEDIUM_FLOAT, &range[0], &precision[0]);
221*35238bceSAndroid Build Coastguard Worker expectError(shaderCompilerSupported ? GL_INVALID_ENUM : GL_INVALID_OPERATION);
222*35238bceSAndroid Build Coastguard Worker glGetShaderPrecisionFormat(GL_VERTEX_SHADER, -1, &range[0], &precision[0]);
223*35238bceSAndroid Build Coastguard Worker expectError(shaderCompilerSupported ? GL_INVALID_ENUM : GL_INVALID_OPERATION);
224*35238bceSAndroid Build Coastguard Worker glGetShaderPrecisionFormat(-1, -1, &range[0], &precision[0]);
225*35238bceSAndroid Build Coastguard Worker expectError(shaderCompilerSupported ? GL_INVALID_ENUM : GL_INVALID_OPERATION);
226*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
227*35238bceSAndroid Build Coastguard Worker
228*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if a shader compiler is not supported.");
229*35238bceSAndroid Build Coastguard Worker glGetShaderPrecisionFormat(GL_VERTEX_SHADER, GL_MEDIUM_FLOAT, &range[0], &precision[0]);
230*35238bceSAndroid Build Coastguard Worker expectError(shaderCompilerSupported ? GL_NO_ERROR : GL_INVALID_OPERATION);
231*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
232*35238bceSAndroid Build Coastguard Worker });
233*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_shader_source, "Invalid glGetShaderSource() usage", {
234*35238bceSAndroid Build Coastguard Worker GLsizei length[1] = {-1};
235*35238bceSAndroid Build Coastguard Worker char source[1] = {0};
236*35238bceSAndroid Build Coastguard Worker GLuint program = glCreateProgram();
237*35238bceSAndroid Build Coastguard Worker GLuint shader = glCreateShader(GL_VERTEX_SHADER);
238*35238bceSAndroid Build Coastguard Worker
239*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if shader is not a value generated by OpenGL.");
240*35238bceSAndroid Build Coastguard Worker glGetShaderSource(-1, 1, &length[0], &source[0]);
241*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
242*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
243*35238bceSAndroid Build Coastguard Worker
244*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if shader is not a shader object.");
245*35238bceSAndroid Build Coastguard Worker glGetShaderSource(program, 1, &length[0], &source[0]);
246*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
247*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
248*35238bceSAndroid Build Coastguard Worker
249*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if bufSize is less than 0.");
250*35238bceSAndroid Build Coastguard Worker glGetShaderSource(shader, -1, &length[0], &source[0]);
251*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
252*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
253*35238bceSAndroid Build Coastguard Worker
254*35238bceSAndroid Build Coastguard Worker glDeleteProgram(program);
255*35238bceSAndroid Build Coastguard Worker glDeleteShader(shader);
256*35238bceSAndroid Build Coastguard Worker });
257*35238bceSAndroid Build Coastguard Worker
258*35238bceSAndroid Build Coastguard Worker // Enumerated state queries: Programs
259*35238bceSAndroid Build Coastguard Worker
260*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_programiv, "Invalid glGetProgramiv() usage", {
261*35238bceSAndroid Build Coastguard Worker GLuint program = glCreateProgram();
262*35238bceSAndroid Build Coastguard Worker GLuint shader = glCreateShader(GL_VERTEX_SHADER);
263*35238bceSAndroid Build Coastguard Worker GLint params[1] = {-1};
264*35238bceSAndroid Build Coastguard Worker
265*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not an accepted value.");
266*35238bceSAndroid Build Coastguard Worker glGetProgramiv(program, -1, ¶ms[0]);
267*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
268*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
269*35238bceSAndroid Build Coastguard Worker
270*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if program is not a value generated by OpenGL.");
271*35238bceSAndroid Build Coastguard Worker glGetProgramiv(-1, GL_LINK_STATUS, ¶ms[0]);
272*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
273*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
274*35238bceSAndroid Build Coastguard Worker
275*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("",
276*35238bceSAndroid Build Coastguard Worker "GL_INVALID_OPERATION is generated if program does not refer to a program object.");
277*35238bceSAndroid Build Coastguard Worker glGetProgramiv(shader, GL_LINK_STATUS, ¶ms[0]);
278*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
279*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
280*35238bceSAndroid Build Coastguard Worker
281*35238bceSAndroid Build Coastguard Worker glDeleteProgram(program);
282*35238bceSAndroid Build Coastguard Worker glDeleteShader(shader);
283*35238bceSAndroid Build Coastguard Worker });
284*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_program_info_log, "Invalid glGetProgramInfoLog() usage", {
285*35238bceSAndroid Build Coastguard Worker GLuint program = glCreateProgram();
286*35238bceSAndroid Build Coastguard Worker GLuint shader = glCreateShader(GL_VERTEX_SHADER);
287*35238bceSAndroid Build Coastguard Worker GLsizei length[1] = {-1};
288*35238bceSAndroid Build Coastguard Worker char infoLog[1] = {0};
289*35238bceSAndroid Build Coastguard Worker
290*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if program is not a value generated by OpenGL.");
291*35238bceSAndroid Build Coastguard Worker glGetProgramInfoLog(-1, 1, &length[0], &infoLog[0]);
292*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
293*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
294*35238bceSAndroid Build Coastguard Worker
295*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if program is not a program object.");
296*35238bceSAndroid Build Coastguard Worker glGetProgramInfoLog(shader, 1, &length[0], &infoLog[0]);
297*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
298*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
299*35238bceSAndroid Build Coastguard Worker
300*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if maxLength is less than 0.");
301*35238bceSAndroid Build Coastguard Worker glGetProgramInfoLog(program, -1, &length[0], &infoLog[0]);
302*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
303*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
304*35238bceSAndroid Build Coastguard Worker
305*35238bceSAndroid Build Coastguard Worker glDeleteProgram(program);
306*35238bceSAndroid Build Coastguard Worker glDeleteShader(shader);
307*35238bceSAndroid Build Coastguard Worker });
308*35238bceSAndroid Build Coastguard Worker
309*35238bceSAndroid Build Coastguard Worker // Enumerated state queries: Shader variables
310*35238bceSAndroid Build Coastguard Worker
311*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_tex_parameterfv, "Invalid glGetTexParameterfv() usage", {
312*35238bceSAndroid Build Coastguard Worker GLfloat params[1] = {0.0f};
313*35238bceSAndroid Build Coastguard Worker
314*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target or pname is not an accepted value.");
315*35238bceSAndroid Build Coastguard Worker glGetTexParameterfv(-1, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
316*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
317*35238bceSAndroid Build Coastguard Worker glGetTexParameterfv(GL_TEXTURE_2D, -1, ¶ms[0]);
318*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
319*35238bceSAndroid Build Coastguard Worker glGetTexParameterfv(-1, -1, ¶ms[0]);
320*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
321*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
322*35238bceSAndroid Build Coastguard Worker });
323*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_tex_parameteriv, "Invalid glGetTexParameteriv() usage", {
324*35238bceSAndroid Build Coastguard Worker GLint params[1] = {-1};
325*35238bceSAndroid Build Coastguard Worker
326*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target or pname is not an accepted value.");
327*35238bceSAndroid Build Coastguard Worker glGetTexParameteriv(-1, GL_TEXTURE_MAG_FILTER, ¶ms[0]);
328*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
329*35238bceSAndroid Build Coastguard Worker glGetTexParameteriv(GL_TEXTURE_2D, -1, ¶ms[0]);
330*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
331*35238bceSAndroid Build Coastguard Worker glGetTexParameteriv(-1, -1, ¶ms[0]);
332*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
333*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
334*35238bceSAndroid Build Coastguard Worker });
335*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_uniformfv, "Invalid glGetUniformfv() usage", {
336*35238bceSAndroid Build Coastguard Worker glu::ShaderProgram program(m_context.getRenderContext(),
337*35238bceSAndroid Build Coastguard Worker glu::makeVtxFragSources(uniformTestVertSource, uniformTestFragSource));
338*35238bceSAndroid Build Coastguard Worker glUseProgram(program.getProgram());
339*35238bceSAndroid Build Coastguard Worker
340*35238bceSAndroid Build Coastguard Worker GLint vUnif = glGetUniformLocation(program.getProgram(), "vTest"); // vec4
341*35238bceSAndroid Build Coastguard Worker GLint fUnif = glGetUniformLocation(program.getProgram(), "fTest"); // ivec4
342*35238bceSAndroid Build Coastguard Worker if (vUnif == -1 || fUnif == -1)
343*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Failed to retrieve uniform location");
344*35238bceSAndroid Build Coastguard Worker
345*35238bceSAndroid Build Coastguard Worker GLuint shader = glCreateShader(GL_VERTEX_SHADER);
346*35238bceSAndroid Build Coastguard Worker GLuint programEmpty = glCreateProgram();
347*35238bceSAndroid Build Coastguard Worker GLfloat params[4];
348*35238bceSAndroid Build Coastguard Worker
349*35238bceSAndroid Build Coastguard Worker deMemset(¶ms[0], 0, sizeof(params));
350*35238bceSAndroid Build Coastguard Worker
351*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if program is not a value generated by OpenGL.");
352*35238bceSAndroid Build Coastguard Worker glGetUniformfv(-1, vUnif, ¶ms[0]);
353*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
354*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
355*35238bceSAndroid Build Coastguard Worker
356*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if program is not a program object.");
357*35238bceSAndroid Build Coastguard Worker glGetUniformfv(shader, vUnif, ¶ms[0]);
358*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
359*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
360*35238bceSAndroid Build Coastguard Worker
361*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if program has not been successfully linked.");
362*35238bceSAndroid Build Coastguard Worker glGetUniformfv(programEmpty, vUnif, ¶ms[0]);
363*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
364*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
365*35238bceSAndroid Build Coastguard Worker
366*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if location does not correspond to a valid "
367*35238bceSAndroid Build Coastguard Worker "uniform variable location for the specified program object.");
368*35238bceSAndroid Build Coastguard Worker glGetUniformfv(program.getProgram(), de::max(vUnif, fUnif) + 1, ¶ms[0]);
369*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
370*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
371*35238bceSAndroid Build Coastguard Worker
372*35238bceSAndroid Build Coastguard Worker glDeleteShader(shader);
373*35238bceSAndroid Build Coastguard Worker glDeleteProgram(programEmpty);
374*35238bceSAndroid Build Coastguard Worker });
375*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_uniformiv, "Invalid glGetUniformiv() usage", {
376*35238bceSAndroid Build Coastguard Worker glu::ShaderProgram program(m_context.getRenderContext(),
377*35238bceSAndroid Build Coastguard Worker glu::makeVtxFragSources(uniformTestVertSource, uniformTestFragSource));
378*35238bceSAndroid Build Coastguard Worker glUseProgram(program.getProgram());
379*35238bceSAndroid Build Coastguard Worker
380*35238bceSAndroid Build Coastguard Worker GLint vUnif = glGetUniformLocation(program.getProgram(), "vTest"); // vec4
381*35238bceSAndroid Build Coastguard Worker GLint fUnif = glGetUniformLocation(program.getProgram(), "fTest"); // ivec4
382*35238bceSAndroid Build Coastguard Worker if (vUnif == -1 || fUnif == -1)
383*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Failed to retrieve uniform location");
384*35238bceSAndroid Build Coastguard Worker
385*35238bceSAndroid Build Coastguard Worker GLuint shader = glCreateShader(GL_VERTEX_SHADER);
386*35238bceSAndroid Build Coastguard Worker GLuint programEmpty = glCreateProgram();
387*35238bceSAndroid Build Coastguard Worker GLint params[4];
388*35238bceSAndroid Build Coastguard Worker
389*35238bceSAndroid Build Coastguard Worker deMemset(¶ms[0], 0, sizeof(params));
390*35238bceSAndroid Build Coastguard Worker
391*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if program is not a value generated by OpenGL.");
392*35238bceSAndroid Build Coastguard Worker glGetUniformiv(-1, vUnif, ¶ms[0]);
393*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
394*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
395*35238bceSAndroid Build Coastguard Worker
396*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if program is not a program object.");
397*35238bceSAndroid Build Coastguard Worker glGetUniformiv(shader, vUnif, ¶ms[0]);
398*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
399*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
400*35238bceSAndroid Build Coastguard Worker
401*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if program has not been successfully linked.");
402*35238bceSAndroid Build Coastguard Worker glGetUniformiv(programEmpty, vUnif, ¶ms[0]);
403*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
404*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
405*35238bceSAndroid Build Coastguard Worker
406*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_OPERATION is generated if location does not correspond to a valid "
407*35238bceSAndroid Build Coastguard Worker "uniform variable location for the specified program object.");
408*35238bceSAndroid Build Coastguard Worker glGetUniformiv(program.getProgram(), de::max(vUnif, fUnif) + 1, ¶ms[0]);
409*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
410*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
411*35238bceSAndroid Build Coastguard Worker
412*35238bceSAndroid Build Coastguard Worker glDeleteShader(shader);
413*35238bceSAndroid Build Coastguard Worker glDeleteProgram(programEmpty);
414*35238bceSAndroid Build Coastguard Worker });
415*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_vertex_attribfv, "Invalid glGetVertexAttribfv() usage", {
416*35238bceSAndroid Build Coastguard Worker GLfloat params[1];
417*35238bceSAndroid Build Coastguard Worker
418*35238bceSAndroid Build Coastguard Worker deMemset(¶ms[0], 0, sizeof(params));
419*35238bceSAndroid Build Coastguard Worker
420*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not an accepted value.");
421*35238bceSAndroid Build Coastguard Worker glGetVertexAttribfv(0, -1, ¶ms[0]);
422*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
423*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
424*35238bceSAndroid Build Coastguard Worker
425*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
426*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if index is greater than or equal to GL_MAX_VERTEX_ATTRIBS.");
427*35238bceSAndroid Build Coastguard Worker GLint maxVertexAttribs;
428*35238bceSAndroid Build Coastguard Worker glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs);
429*35238bceSAndroid Build Coastguard Worker glGetVertexAttribfv(maxVertexAttribs, GL_VERTEX_ATTRIB_ARRAY_ENABLED, ¶ms[0]);
430*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
431*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
432*35238bceSAndroid Build Coastguard Worker });
433*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_vertex_attribiv, "Invalid glGetVertexAttribiv() usage", {
434*35238bceSAndroid Build Coastguard Worker GLint params[1];
435*35238bceSAndroid Build Coastguard Worker
436*35238bceSAndroid Build Coastguard Worker deMemset(¶ms[0], 0, sizeof(params));
437*35238bceSAndroid Build Coastguard Worker
438*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not an accepted value.");
439*35238bceSAndroid Build Coastguard Worker glGetVertexAttribiv(0, -1, ¶ms[0]);
440*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
441*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
442*35238bceSAndroid Build Coastguard Worker
443*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
444*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if index is greater than or equal to GL_MAX_VERTEX_ATTRIBS.");
445*35238bceSAndroid Build Coastguard Worker GLint maxVertexAttribs;
446*35238bceSAndroid Build Coastguard Worker glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs);
447*35238bceSAndroid Build Coastguard Worker glGetVertexAttribiv(maxVertexAttribs, GL_VERTEX_ATTRIB_ARRAY_ENABLED, ¶ms[0]);
448*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
449*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
450*35238bceSAndroid Build Coastguard Worker });
451*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_vertex_attrib_pointerv, "Invalid glGetVertexAttribPointerv() usage", {
452*35238bceSAndroid Build Coastguard Worker GLvoid *ptr[1] = {DE_NULL};
453*35238bceSAndroid Build Coastguard Worker
454*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not an accepted value.");
455*35238bceSAndroid Build Coastguard Worker glGetVertexAttribPointerv(0, -1, &ptr[0]);
456*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
457*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
458*35238bceSAndroid Build Coastguard Worker
459*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
460*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_VALUE is generated if index is greater than or equal to GL_MAX_VERTEX_ATTRIBS.");
461*35238bceSAndroid Build Coastguard Worker GLint maxVertexAttribs;
462*35238bceSAndroid Build Coastguard Worker glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs);
463*35238bceSAndroid Build Coastguard Worker glGetVertexAttribPointerv(maxVertexAttribs, GL_VERTEX_ATTRIB_ARRAY_POINTER, &ptr[0]);
464*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_VALUE);
465*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
466*35238bceSAndroid Build Coastguard Worker });
467*35238bceSAndroid Build Coastguard Worker
468*35238bceSAndroid Build Coastguard Worker // Enumerated state queries: Buffers
469*35238bceSAndroid Build Coastguard Worker
470*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_buffer_parameteriv, "Invalid glGetBufferParameteriv() usage", {
471*35238bceSAndroid Build Coastguard Worker GLint params[1];
472*35238bceSAndroid Build Coastguard Worker GLuint buf;
473*35238bceSAndroid Build Coastguard Worker glGenBuffers(1, &buf);
474*35238bceSAndroid Build Coastguard Worker glBindBuffer(GL_ARRAY_BUFFER, buf);
475*35238bceSAndroid Build Coastguard Worker
476*35238bceSAndroid Build Coastguard Worker deMemset(¶ms[0], 0, sizeof(params));
477*35238bceSAndroid Build Coastguard Worker
478*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target or value is not an accepted value.");
479*35238bceSAndroid Build Coastguard Worker glGetBufferParameteriv(-1, GL_BUFFER_SIZE, ¶ms[0]);
480*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
481*35238bceSAndroid Build Coastguard Worker glGetBufferParameteriv(GL_ARRAY_BUFFER, -1, ¶ms[0]);
482*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
483*35238bceSAndroid Build Coastguard Worker glGetBufferParameteriv(-1, -1, ¶ms[0]);
484*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
485*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
486*35238bceSAndroid Build Coastguard Worker
487*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
488*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_OPERATION is generated if the reserved buffer object name 0 is bound to target.");
489*35238bceSAndroid Build Coastguard Worker glBindBuffer(GL_ARRAY_BUFFER, 0);
490*35238bceSAndroid Build Coastguard Worker glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, ¶ms[0]);
491*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
492*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
493*35238bceSAndroid Build Coastguard Worker
494*35238bceSAndroid Build Coastguard Worker glDeleteBuffers(1, &buf);
495*35238bceSAndroid Build Coastguard Worker });
496*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_framebuffer_attachment_parameteriv, "Invalid glGetFramebufferAttachmentParameteriv() usage", {
497*35238bceSAndroid Build Coastguard Worker // GL_MAJOR_VERSION query does not exist on GLES2
498*35238bceSAndroid Build Coastguard Worker // so succeeding query implies GLES3+ hardware.
499*35238bceSAndroid Build Coastguard Worker bool isES3Compatible = false;
500*35238bceSAndroid Build Coastguard Worker glw::GLint majorVersion = 0;
501*35238bceSAndroid Build Coastguard Worker glGetIntegerv(GL_MAJOR_VERSION, &majorVersion);
502*35238bceSAndroid Build Coastguard Worker if (glGetError() == GL_NO_ERROR)
503*35238bceSAndroid Build Coastguard Worker isES3Compatible = true;
504*35238bceSAndroid Build Coastguard Worker
505*35238bceSAndroid Build Coastguard Worker GLint params[1] = {-1};
506*35238bceSAndroid Build Coastguard Worker GLuint fbo;
507*35238bceSAndroid Build Coastguard Worker glGenFramebuffers(1, &fbo);
508*35238bceSAndroid Build Coastguard Worker glBindFramebuffer(GL_FRAMEBUFFER, fbo);
509*35238bceSAndroid Build Coastguard Worker
510*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is not GL_FRAMEBUFFER.");
511*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(-1, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
512*35238bceSAndroid Build Coastguard Worker ¶ms[0]);
513*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
514*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
515*35238bceSAndroid Build Coastguard Worker
516*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if there is no attached object at the named "
517*35238bceSAndroid Build Coastguard Worker "attachment point and pname is not GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE.");
518*35238bceSAndroid Build Coastguard Worker if (isES3Compatible)
519*35238bceSAndroid Build Coastguard Worker {
520*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
521*35238bceSAndroid Build Coastguard Worker GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, ¶ms[0]); // TYPE is GL_NONE
522*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
523*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
524*35238bceSAndroid Build Coastguard Worker GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,
525*35238bceSAndroid Build Coastguard Worker ¶ms[0]); // TYPE is GL_NONE
526*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
527*35238bceSAndroid Build Coastguard Worker }
528*35238bceSAndroid Build Coastguard Worker else
529*35238bceSAndroid Build Coastguard Worker {
530*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
531*35238bceSAndroid Build Coastguard Worker GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, ¶ms[0]);
532*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
533*35238bceSAndroid Build Coastguard Worker }
534*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
535*35238bceSAndroid Build Coastguard Worker
536*35238bceSAndroid Build Coastguard Worker if (!isES3Compatible)
537*35238bceSAndroid Build Coastguard Worker {
538*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if the attached object at the named attachment "
539*35238bceSAndroid Build Coastguard Worker "point is incompatible with pname.");
540*35238bceSAndroid Build Coastguard Worker GLint attachmentObjectType = -1;
541*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
542*35238bceSAndroid Build Coastguard Worker GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &attachmentObjectType);
543*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
544*35238bceSAndroid Build Coastguard Worker
545*35238bceSAndroid Build Coastguard Worker if (attachmentObjectType == GL_RENDERBUFFER)
546*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
547*35238bceSAndroid Build Coastguard Worker GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, ¶ms[0]);
548*35238bceSAndroid Build Coastguard Worker else if (attachmentObjectType == GL_TEXTURE)
549*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, -1, ¶ms[0]);
550*35238bceSAndroid Build Coastguard Worker else if (attachmentObjectType == GL_NONE)
551*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
552*35238bceSAndroid Build Coastguard Worker GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, ¶ms[0]);
553*35238bceSAndroid Build Coastguard Worker else
554*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_FAIL,
555*35238bceSAndroid Build Coastguard Worker "Invalid return value from glGetFramebufferAttachmentParameteriv()");
556*35238bceSAndroid Build Coastguard Worker
557*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
558*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
559*35238bceSAndroid Build Coastguard Worker }
560*35238bceSAndroid Build Coastguard Worker
561*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
562*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_OPERATION is generated if the default framebuffer object name 0 is bound.");
563*35238bceSAndroid Build Coastguard Worker glBindFramebuffer(GL_FRAMEBUFFER, 0);
564*35238bceSAndroid Build Coastguard Worker glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
565*35238bceSAndroid Build Coastguard Worker GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, ¶ms[0]);
566*35238bceSAndroid Build Coastguard Worker if (isES3Compatible)
567*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION, GL_INVALID_ENUM);
568*35238bceSAndroid Build Coastguard Worker else
569*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
570*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
571*35238bceSAndroid Build Coastguard Worker
572*35238bceSAndroid Build Coastguard Worker glDeleteFramebuffers(1, &fbo);
573*35238bceSAndroid Build Coastguard Worker });
574*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_renderbuffer_parameteriv, "Invalid glGetRenderbufferParameteriv() usage", {
575*35238bceSAndroid Build Coastguard Worker GLint params[1];
576*35238bceSAndroid Build Coastguard Worker GLuint rbo;
577*35238bceSAndroid Build Coastguard Worker glGenRenderbuffers(1, &rbo);
578*35238bceSAndroid Build Coastguard Worker glBindRenderbuffer(GL_RENDERBUFFER, rbo);
579*35238bceSAndroid Build Coastguard Worker
580*35238bceSAndroid Build Coastguard Worker deMemset(¶ms[0], 0, sizeof(params));
581*35238bceSAndroid Build Coastguard Worker
582*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is not GL_RENDERBUFFER.");
583*35238bceSAndroid Build Coastguard Worker glGetRenderbufferParameteriv(-1, GL_RENDERBUFFER_WIDTH, ¶ms[0]);
584*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
585*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
586*35238bceSAndroid Build Coastguard Worker
587*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if pname is not one of the allowed values.");
588*35238bceSAndroid Build Coastguard Worker glGetRenderbufferParameteriv(GL_RENDERBUFFER, -1, ¶ms[0]);
589*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
590*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
591*35238bceSAndroid Build Coastguard Worker
592*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
593*35238bceSAndroid Build Coastguard Worker "", "GL_INVALID_OPERATION is generated if the reserved renderbuffer object name 0 is bound.");
594*35238bceSAndroid Build Coastguard Worker glBindRenderbuffer(GL_RENDERBUFFER, 0);
595*35238bceSAndroid Build Coastguard Worker glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, ¶ms[0]);
596*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_OPERATION);
597*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
598*35238bceSAndroid Build Coastguard Worker
599*35238bceSAndroid Build Coastguard Worker glDeleteRenderbuffers(1, &rbo);
600*35238bceSAndroid Build Coastguard Worker });
601*35238bceSAndroid Build Coastguard Worker
602*35238bceSAndroid Build Coastguard Worker // Enumerated boolean state queries
603*35238bceSAndroid Build Coastguard Worker
604*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(get_is_enabled, "Invalid glIsEnabled() usage", {
605*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if cap is not an accepted value.");
606*35238bceSAndroid Build Coastguard Worker glIsEnabled(-1);
607*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
608*35238bceSAndroid Build Coastguard Worker glIsEnabled(GL_TRIANGLES);
609*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
610*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
611*35238bceSAndroid Build Coastguard Worker });
612*35238bceSAndroid Build Coastguard Worker
613*35238bceSAndroid Build Coastguard Worker // Hints
614*35238bceSAndroid Build Coastguard Worker
615*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(hint, "Invalid glHint() usage", {
616*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("",
617*35238bceSAndroid Build Coastguard Worker "GL_INVALID_ENUM is generated if either target or mode is not an accepted value.");
618*35238bceSAndroid Build Coastguard Worker glHint(GL_GENERATE_MIPMAP_HINT, -1);
619*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
620*35238bceSAndroid Build Coastguard Worker glHint(-1, GL_FASTEST);
621*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
622*35238bceSAndroid Build Coastguard Worker glHint(-1, -1);
623*35238bceSAndroid Build Coastguard Worker expectError(GL_INVALID_ENUM);
624*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
625*35238bceSAndroid Build Coastguard Worker });
626*35238bceSAndroid Build Coastguard Worker
627*35238bceSAndroid Build Coastguard Worker // Named object usage
628*35238bceSAndroid Build Coastguard Worker
629*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(is_buffer, "Invalid glIsBuffer() usage", {
630*35238bceSAndroid Build Coastguard Worker GLuint buffer = 0;
631*35238bceSAndroid Build Coastguard Worker GLboolean isBuffer;
632*35238bceSAndroid Build Coastguard Worker
633*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "A name returned by glGenBuffers, but not yet associated with a buffer object by "
634*35238bceSAndroid Build Coastguard Worker "calling glBindBuffer, is not the name of a buffer object.");
635*35238bceSAndroid Build Coastguard Worker isBuffer = glIsBuffer(buffer);
636*35238bceSAndroid Build Coastguard Worker checkBooleans(isBuffer, GL_FALSE);
637*35238bceSAndroid Build Coastguard Worker
638*35238bceSAndroid Build Coastguard Worker glGenBuffers(1, &buffer);
639*35238bceSAndroid Build Coastguard Worker isBuffer = glIsBuffer(buffer);
640*35238bceSAndroid Build Coastguard Worker checkBooleans(isBuffer, GL_FALSE);
641*35238bceSAndroid Build Coastguard Worker
642*35238bceSAndroid Build Coastguard Worker glBindBuffer(GL_ARRAY_BUFFER, buffer);
643*35238bceSAndroid Build Coastguard Worker isBuffer = glIsBuffer(buffer);
644*35238bceSAndroid Build Coastguard Worker checkBooleans(isBuffer, GL_TRUE);
645*35238bceSAndroid Build Coastguard Worker
646*35238bceSAndroid Build Coastguard Worker glBindBuffer(GL_ARRAY_BUFFER, 0);
647*35238bceSAndroid Build Coastguard Worker glDeleteBuffers(1, &buffer);
648*35238bceSAndroid Build Coastguard Worker isBuffer = glIsBuffer(buffer);
649*35238bceSAndroid Build Coastguard Worker checkBooleans(isBuffer, GL_FALSE);
650*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
651*35238bceSAndroid Build Coastguard Worker
652*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
653*35238bceSAndroid Build Coastguard Worker });
654*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(is_framebuffer, "Invalid glIsFramebuffer() usage", {
655*35238bceSAndroid Build Coastguard Worker GLuint fbo = 0;
656*35238bceSAndroid Build Coastguard Worker GLboolean isFbo;
657*35238bceSAndroid Build Coastguard Worker
658*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "A name returned by glGenFramebuffers, but not yet bound through a call to "
659*35238bceSAndroid Build Coastguard Worker "glBindFramebuffer is not the name of a framebuffer object.");
660*35238bceSAndroid Build Coastguard Worker isFbo = glIsFramebuffer(fbo);
661*35238bceSAndroid Build Coastguard Worker checkBooleans(isFbo, GL_FALSE);
662*35238bceSAndroid Build Coastguard Worker
663*35238bceSAndroid Build Coastguard Worker glGenFramebuffers(1, &fbo);
664*35238bceSAndroid Build Coastguard Worker isFbo = glIsFramebuffer(fbo);
665*35238bceSAndroid Build Coastguard Worker checkBooleans(isFbo, GL_FALSE);
666*35238bceSAndroid Build Coastguard Worker
667*35238bceSAndroid Build Coastguard Worker glBindFramebuffer(GL_FRAMEBUFFER, fbo);
668*35238bceSAndroid Build Coastguard Worker isFbo = glIsFramebuffer(fbo);
669*35238bceSAndroid Build Coastguard Worker checkBooleans(isFbo, GL_TRUE);
670*35238bceSAndroid Build Coastguard Worker
671*35238bceSAndroid Build Coastguard Worker glBindFramebuffer(GL_FRAMEBUFFER, 0);
672*35238bceSAndroid Build Coastguard Worker glDeleteFramebuffers(1, &fbo);
673*35238bceSAndroid Build Coastguard Worker isFbo = glIsFramebuffer(fbo);
674*35238bceSAndroid Build Coastguard Worker checkBooleans(isFbo, GL_FALSE);
675*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
676*35238bceSAndroid Build Coastguard Worker
677*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
678*35238bceSAndroid Build Coastguard Worker });
679*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(is_program, "Invalid glIsProgram() usage", {
680*35238bceSAndroid Build Coastguard Worker GLuint program = 0;
681*35238bceSAndroid Build Coastguard Worker GLboolean isProgram;
682*35238bceSAndroid Build Coastguard Worker
683*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "A name created with glCreateProgram, and not yet deleted with glDeleteProgram "
684*35238bceSAndroid Build Coastguard Worker "is a name of a program object.");
685*35238bceSAndroid Build Coastguard Worker isProgram = glIsProgram(program);
686*35238bceSAndroid Build Coastguard Worker checkBooleans(isProgram, GL_FALSE);
687*35238bceSAndroid Build Coastguard Worker
688*35238bceSAndroid Build Coastguard Worker program = glCreateProgram();
689*35238bceSAndroid Build Coastguard Worker isProgram = glIsProgram(program);
690*35238bceSAndroid Build Coastguard Worker checkBooleans(isProgram, GL_TRUE);
691*35238bceSAndroid Build Coastguard Worker
692*35238bceSAndroid Build Coastguard Worker glDeleteProgram(program);
693*35238bceSAndroid Build Coastguard Worker isProgram = glIsProgram(program);
694*35238bceSAndroid Build Coastguard Worker checkBooleans(isProgram, GL_FALSE);
695*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
696*35238bceSAndroid Build Coastguard Worker
697*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
698*35238bceSAndroid Build Coastguard Worker });
699*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(is_renderbuffer, "Invalid glIsRenderbuffer() usage", {
700*35238bceSAndroid Build Coastguard Worker GLuint rbo = 0;
701*35238bceSAndroid Build Coastguard Worker GLboolean isRbo;
702*35238bceSAndroid Build Coastguard Worker
703*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section(
704*35238bceSAndroid Build Coastguard Worker "", "A name returned by glGenRenderbuffers, but not yet bound through a call to glBindRenderbuffer or "
705*35238bceSAndroid Build Coastguard Worker "glFramebufferRenderbuffer is not the name of a renderbuffer object.");
706*35238bceSAndroid Build Coastguard Worker isRbo = glIsRenderbuffer(rbo);
707*35238bceSAndroid Build Coastguard Worker checkBooleans(isRbo, GL_FALSE);
708*35238bceSAndroid Build Coastguard Worker
709*35238bceSAndroid Build Coastguard Worker glGenRenderbuffers(1, &rbo);
710*35238bceSAndroid Build Coastguard Worker isRbo = glIsRenderbuffer(rbo);
711*35238bceSAndroid Build Coastguard Worker checkBooleans(isRbo, GL_FALSE);
712*35238bceSAndroid Build Coastguard Worker
713*35238bceSAndroid Build Coastguard Worker glBindRenderbuffer(GL_RENDERBUFFER, rbo);
714*35238bceSAndroid Build Coastguard Worker isRbo = glIsRenderbuffer(rbo);
715*35238bceSAndroid Build Coastguard Worker checkBooleans(isRbo, GL_TRUE);
716*35238bceSAndroid Build Coastguard Worker
717*35238bceSAndroid Build Coastguard Worker glBindRenderbuffer(GL_RENDERBUFFER, 0);
718*35238bceSAndroid Build Coastguard Worker glDeleteRenderbuffers(1, &rbo);
719*35238bceSAndroid Build Coastguard Worker isRbo = glIsRenderbuffer(rbo);
720*35238bceSAndroid Build Coastguard Worker checkBooleans(isRbo, GL_FALSE);
721*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
722*35238bceSAndroid Build Coastguard Worker
723*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
724*35238bceSAndroid Build Coastguard Worker });
725*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(is_shader, "Invalid glIsShader() usage", {
726*35238bceSAndroid Build Coastguard Worker GLuint shader = 0;
727*35238bceSAndroid Build Coastguard Worker GLboolean isShader;
728*35238bceSAndroid Build Coastguard Worker
729*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "A name created with glCreateShader, and not yet deleted with glDeleteShader is "
730*35238bceSAndroid Build Coastguard Worker "a name of a shader object.");
731*35238bceSAndroid Build Coastguard Worker isShader = glIsProgram(shader);
732*35238bceSAndroid Build Coastguard Worker checkBooleans(isShader, GL_FALSE);
733*35238bceSAndroid Build Coastguard Worker
734*35238bceSAndroid Build Coastguard Worker shader = glCreateShader(GL_VERTEX_SHADER);
735*35238bceSAndroid Build Coastguard Worker isShader = glIsShader(shader);
736*35238bceSAndroid Build Coastguard Worker checkBooleans(isShader, GL_TRUE);
737*35238bceSAndroid Build Coastguard Worker
738*35238bceSAndroid Build Coastguard Worker glDeleteShader(shader);
739*35238bceSAndroid Build Coastguard Worker isShader = glIsShader(shader);
740*35238bceSAndroid Build Coastguard Worker checkBooleans(isShader, GL_FALSE);
741*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
742*35238bceSAndroid Build Coastguard Worker
743*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
744*35238bceSAndroid Build Coastguard Worker });
745*35238bceSAndroid Build Coastguard Worker ES2F_ADD_API_CASE(is_texture, "Invalid glIsTexture() usage", {
746*35238bceSAndroid Build Coastguard Worker GLuint texture = 0;
747*35238bceSAndroid Build Coastguard Worker GLboolean isTexture;
748*35238bceSAndroid Build Coastguard Worker
749*35238bceSAndroid Build Coastguard Worker m_log << TestLog::Section("", "A name returned by glGenTextures, but not yet bound through a call to "
750*35238bceSAndroid Build Coastguard Worker "glBindTexture is not the name of a texture.");
751*35238bceSAndroid Build Coastguard Worker isTexture = glIsTexture(texture);
752*35238bceSAndroid Build Coastguard Worker checkBooleans(isTexture, GL_FALSE);
753*35238bceSAndroid Build Coastguard Worker
754*35238bceSAndroid Build Coastguard Worker glGenTextures(1, &texture);
755*35238bceSAndroid Build Coastguard Worker isTexture = glIsTexture(texture);
756*35238bceSAndroid Build Coastguard Worker checkBooleans(isTexture, GL_FALSE);
757*35238bceSAndroid Build Coastguard Worker
758*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, texture);
759*35238bceSAndroid Build Coastguard Worker isTexture = glIsTexture(texture);
760*35238bceSAndroid Build Coastguard Worker checkBooleans(isTexture, GL_TRUE);
761*35238bceSAndroid Build Coastguard Worker
762*35238bceSAndroid Build Coastguard Worker glBindTexture(GL_TEXTURE_2D, 0);
763*35238bceSAndroid Build Coastguard Worker glDeleteTextures(1, &texture);
764*35238bceSAndroid Build Coastguard Worker isTexture = glIsTexture(texture);
765*35238bceSAndroid Build Coastguard Worker checkBooleans(isTexture, GL_FALSE);
766*35238bceSAndroid Build Coastguard Worker m_log << TestLog::EndSection;
767*35238bceSAndroid Build Coastguard Worker
768*35238bceSAndroid Build Coastguard Worker expectError(GL_NO_ERROR);
769*35238bceSAndroid Build Coastguard Worker });
770*35238bceSAndroid Build Coastguard Worker }
771*35238bceSAndroid Build Coastguard Worker
772*35238bceSAndroid Build Coastguard Worker } // namespace Functional
773*35238bceSAndroid Build Coastguard Worker } // namespace gles2
774*35238bceSAndroid Build Coastguard Worker } // namespace deqp
775