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 Redundant state change performance tests.
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "es2pRedundantStateChangeTests.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "glsStateChangePerfTestCases.hpp"
26*35238bceSAndroid Build Coastguard Worker #include "gluShaderProgram.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "glwFunctions.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp"
29*35238bceSAndroid Build Coastguard Worker
30*35238bceSAndroid Build Coastguard Worker namespace deqp
31*35238bceSAndroid Build Coastguard Worker {
32*35238bceSAndroid Build Coastguard Worker namespace gles2
33*35238bceSAndroid Build Coastguard Worker {
34*35238bceSAndroid Build Coastguard Worker namespace Performance
35*35238bceSAndroid Build Coastguard Worker {
36*35238bceSAndroid Build Coastguard Worker
37*35238bceSAndroid Build Coastguard Worker using namespace glw; // GL types
38*35238bceSAndroid Build Coastguard Worker
39*35238bceSAndroid Build Coastguard Worker namespace
40*35238bceSAndroid Build Coastguard Worker {
41*35238bceSAndroid Build Coastguard Worker
42*35238bceSAndroid Build Coastguard Worker enum
43*35238bceSAndroid Build Coastguard Worker {
44*35238bceSAndroid Build Coastguard Worker VIEWPORT_WIDTH = 24,
45*35238bceSAndroid Build Coastguard Worker VIEWPORT_HEIGHT = 24
46*35238bceSAndroid Build Coastguard Worker };
47*35238bceSAndroid Build Coastguard Worker
48*35238bceSAndroid Build Coastguard Worker class RedundantStateChangeCase : public gls::StateChangePerformanceCase
49*35238bceSAndroid Build Coastguard Worker {
50*35238bceSAndroid Build Coastguard Worker public:
51*35238bceSAndroid Build Coastguard Worker RedundantStateChangeCase(Context &context, int drawCallCount, int triangleCount, bool drawArrays,
52*35238bceSAndroid Build Coastguard Worker bool useIndexBuffer, const char *name, const char *description);
53*35238bceSAndroid Build Coastguard Worker ~RedundantStateChangeCase(void);
54*35238bceSAndroid Build Coastguard Worker
55*35238bceSAndroid Build Coastguard Worker protected:
56*35238bceSAndroid Build Coastguard Worker virtual void renderTest(const glw::Functions &gl);
57*35238bceSAndroid Build Coastguard Worker virtual void renderReference(const glw::Functions &gl);
58*35238bceSAndroid Build Coastguard Worker virtual void changeState(const glw::Functions &gl) = 0;
59*35238bceSAndroid Build Coastguard Worker };
60*35238bceSAndroid Build Coastguard Worker
RedundantStateChangeCase(Context & context,int drawCallCount,int triangleCount,bool drawArrays,bool useIndexBuffer,const char * name,const char * description)61*35238bceSAndroid Build Coastguard Worker RedundantStateChangeCase::RedundantStateChangeCase(Context &context, int drawCallCount, int triangleCount,
62*35238bceSAndroid Build Coastguard Worker bool drawArrays, bool useIndexBuffer, const char *name,
63*35238bceSAndroid Build Coastguard Worker const char *description)
64*35238bceSAndroid Build Coastguard Worker : gls::StateChangePerformanceCase(context.getTestContext(), context.getRenderContext(), name, description,
65*35238bceSAndroid Build Coastguard Worker (useIndexBuffer ? DRAWTYPE_INDEXED_BUFFER :
66*35238bceSAndroid Build Coastguard Worker drawArrays ? DRAWTYPE_NOT_INDEXED :
67*35238bceSAndroid Build Coastguard Worker DRAWTYPE_INDEXED_USER_PTR),
68*35238bceSAndroid Build Coastguard Worker drawCallCount, triangleCount)
69*35238bceSAndroid Build Coastguard Worker {
70*35238bceSAndroid Build Coastguard Worker DE_ASSERT(!useIndexBuffer || !drawArrays);
71*35238bceSAndroid Build Coastguard Worker }
72*35238bceSAndroid Build Coastguard Worker
~RedundantStateChangeCase(void)73*35238bceSAndroid Build Coastguard Worker RedundantStateChangeCase::~RedundantStateChangeCase(void)
74*35238bceSAndroid Build Coastguard Worker {
75*35238bceSAndroid Build Coastguard Worker }
76*35238bceSAndroid Build Coastguard Worker
renderTest(const glw::Functions & gl)77*35238bceSAndroid Build Coastguard Worker void RedundantStateChangeCase::renderTest(const glw::Functions &gl)
78*35238bceSAndroid Build Coastguard Worker {
79*35238bceSAndroid Build Coastguard Worker for (int callNdx = 0; callNdx < m_callCount; callNdx++)
80*35238bceSAndroid Build Coastguard Worker {
81*35238bceSAndroid Build Coastguard Worker changeState(gl);
82*35238bceSAndroid Build Coastguard Worker callDraw(gl);
83*35238bceSAndroid Build Coastguard Worker }
84*35238bceSAndroid Build Coastguard Worker }
85*35238bceSAndroid Build Coastguard Worker
renderReference(const glw::Functions & gl)86*35238bceSAndroid Build Coastguard Worker void RedundantStateChangeCase::renderReference(const glw::Functions &gl)
87*35238bceSAndroid Build Coastguard Worker {
88*35238bceSAndroid Build Coastguard Worker changeState(gl);
89*35238bceSAndroid Build Coastguard Worker
90*35238bceSAndroid Build Coastguard Worker for (int callNdx = 0; callNdx < m_callCount; callNdx++)
91*35238bceSAndroid Build Coastguard Worker callDraw(gl);
92*35238bceSAndroid Build Coastguard Worker }
93*35238bceSAndroid Build Coastguard Worker
94*35238bceSAndroid Build Coastguard Worker } // namespace
95*35238bceSAndroid Build Coastguard Worker
RedundantStateChangeTests(Context & context)96*35238bceSAndroid Build Coastguard Worker RedundantStateChangeTests::RedundantStateChangeTests(Context &context)
97*35238bceSAndroid Build Coastguard Worker : TestCaseGroup(context, "redundant_state_change_draw",
98*35238bceSAndroid Build Coastguard Worker "Test performance with redundant sate changes between rendering.")
99*35238bceSAndroid Build Coastguard Worker {
100*35238bceSAndroid Build Coastguard Worker }
101*35238bceSAndroid Build Coastguard Worker
~RedundantStateChangeTests(void)102*35238bceSAndroid Build Coastguard Worker RedundantStateChangeTests::~RedundantStateChangeTests(void)
103*35238bceSAndroid Build Coastguard Worker {
104*35238bceSAndroid Build Coastguard Worker }
105*35238bceSAndroid Build Coastguard Worker
106*35238bceSAndroid Build Coastguard Worker #define MACRO_BLOCK(...) __VA_ARGS__
107*35238bceSAndroid Build Coastguard Worker
108*35238bceSAndroid Build Coastguard Worker #define ADD_TESTCASE(NAME, DESC, DRAWARRAYS, INDEXBUFFER, INIT_FUNC, CHANGE_FUNC) \
109*35238bceSAndroid Build Coastguard Worker do \
110*35238bceSAndroid Build Coastguard Worker { \
111*35238bceSAndroid Build Coastguard Worker class RedundantStateChangeCase_##NAME : public RedundantStateChangeCase \
112*35238bceSAndroid Build Coastguard Worker { \
113*35238bceSAndroid Build Coastguard Worker public: \
114*35238bceSAndroid Build Coastguard Worker RedundantStateChangeCase_##NAME(Context &context, int drawCallCount, int triangleCount, const char *name, \
115*35238bceSAndroid Build Coastguard Worker const char *description) \
116*35238bceSAndroid Build Coastguard Worker : RedundantStateChangeCase(context, drawCallCount, triangleCount, (DRAWARRAYS), (INDEXBUFFER), name, \
117*35238bceSAndroid Build Coastguard Worker description) \
118*35238bceSAndroid Build Coastguard Worker { \
119*35238bceSAndroid Build Coastguard Worker } \
120*35238bceSAndroid Build Coastguard Worker virtual void setupInitialState(const glw::Functions &gl) \
121*35238bceSAndroid Build Coastguard Worker { \
122*35238bceSAndroid Build Coastguard Worker INIT_FUNC \
123*35238bceSAndroid Build Coastguard Worker } \
124*35238bceSAndroid Build Coastguard Worker virtual void changeState(const glw::Functions &gl) \
125*35238bceSAndroid Build Coastguard Worker { \
126*35238bceSAndroid Build Coastguard Worker CHANGE_FUNC \
127*35238bceSAndroid Build Coastguard Worker } \
128*35238bceSAndroid Build Coastguard Worker }; \
129*35238bceSAndroid Build Coastguard Worker manySmallCallsGroup->addChild(new RedundantStateChangeCase_##NAME(m_context, 1000, 2, #NAME, (DESC))); \
130*35238bceSAndroid Build Coastguard Worker fewBigCallsGroup->addChild(new RedundantStateChangeCase_##NAME(m_context, 10, 200, #NAME, (DESC))); \
131*35238bceSAndroid Build Coastguard Worker } while (0);
132*35238bceSAndroid Build Coastguard Worker
init(void)133*35238bceSAndroid Build Coastguard Worker void RedundantStateChangeTests::init(void)
134*35238bceSAndroid Build Coastguard Worker {
135*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *const manySmallCallsGroup =
136*35238bceSAndroid Build Coastguard Worker new tcu::TestCaseGroup(m_testCtx, "many_small_calls", "1000 calls, 2 triangles in each");
137*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *const fewBigCallsGroup =
138*35238bceSAndroid Build Coastguard Worker new tcu::TestCaseGroup(m_testCtx, "few_big_calls", "10 calls, 200 triangles in each");
139*35238bceSAndroid Build Coastguard Worker
140*35238bceSAndroid Build Coastguard Worker addChild(manySmallCallsGroup);
141*35238bceSAndroid Build Coastguard Worker addChild(fewBigCallsGroup);
142*35238bceSAndroid Build Coastguard Worker
143*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(blend, "Enable/Disable blending.", true, false, MACRO_BLOCK({
144*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
145*35238bceSAndroid Build Coastguard Worker requireTextures(1);
146*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
147*35238bceSAndroid Build Coastguard Worker
148*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
149*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
150*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
151*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
152*35238bceSAndroid Build Coastguard Worker
153*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
154*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
155*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
156*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
157*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
158*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
159*35238bceSAndroid Build Coastguard Worker
160*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
161*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
162*35238bceSAndroid Build Coastguard Worker
163*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
164*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
165*35238bceSAndroid Build Coastguard Worker
166*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
167*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
168*35238bceSAndroid Build Coastguard Worker
169*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
170*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
171*35238bceSAndroid Build Coastguard Worker }),
172*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.enable(GL_BLEND); }))
173*35238bceSAndroid Build Coastguard Worker
174*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(depth_test, "Enable/Disable depth test.", true, false, MACRO_BLOCK({
175*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
176*35238bceSAndroid Build Coastguard Worker requireTextures(1);
177*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
178*35238bceSAndroid Build Coastguard Worker
179*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
180*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
181*35238bceSAndroid Build Coastguard Worker
182*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
183*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
184*35238bceSAndroid Build Coastguard Worker
185*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
186*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
187*35238bceSAndroid Build Coastguard Worker
188*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
189*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
190*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
191*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
192*35238bceSAndroid Build Coastguard Worker
193*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
194*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
195*35238bceSAndroid Build Coastguard Worker
196*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
197*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
198*35238bceSAndroid Build Coastguard Worker
199*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
200*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
201*35238bceSAndroid Build Coastguard Worker
202*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
203*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
204*35238bceSAndroid Build Coastguard Worker
205*35238bceSAndroid Build Coastguard Worker gl.depthFunc(GL_LEQUAL);
206*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glDepthFunc()");
207*35238bceSAndroid Build Coastguard Worker }),
208*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.enable(GL_DEPTH_TEST); }))
209*35238bceSAndroid Build Coastguard Worker
210*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(stencil_test, "Enable/Disable stencil test.", true, false, MACRO_BLOCK({
211*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
212*35238bceSAndroid Build Coastguard Worker requireTextures(1);
213*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
214*35238bceSAndroid Build Coastguard Worker
215*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
216*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
217*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
218*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
219*35238bceSAndroid Build Coastguard Worker
220*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
221*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
222*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
223*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
224*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
225*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
226*35238bceSAndroid Build Coastguard Worker
227*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
228*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
229*35238bceSAndroid Build Coastguard Worker
230*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
231*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
232*35238bceSAndroid Build Coastguard Worker
233*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
234*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
235*35238bceSAndroid Build Coastguard Worker
236*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
237*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
238*35238bceSAndroid Build Coastguard Worker
239*35238bceSAndroid Build Coastguard Worker gl.stencilFunc(GL_LEQUAL, 0, 0);
240*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glStencilFunc()");
241*35238bceSAndroid Build Coastguard Worker
242*35238bceSAndroid Build Coastguard Worker gl.stencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE);
243*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glStencilOp()");
244*35238bceSAndroid Build Coastguard Worker
245*35238bceSAndroid Build Coastguard Worker gl.clearStencil(0);
246*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glClearStencil()");
247*35238bceSAndroid Build Coastguard Worker gl.clear(GL_STENCIL_BUFFER_BIT);
248*35238bceSAndroid Build Coastguard Worker
249*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glClear()");
250*35238bceSAndroid Build Coastguard Worker }),
251*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.enable(GL_STENCIL_TEST); }))
252*35238bceSAndroid Build Coastguard Worker
253*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(scissor_test, "Enable/Disable scissor test.", true, false, MACRO_BLOCK({
254*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
255*35238bceSAndroid Build Coastguard Worker requireTextures(1);
256*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
257*35238bceSAndroid Build Coastguard Worker
258*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
259*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
260*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
261*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
262*35238bceSAndroid Build Coastguard Worker
263*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
264*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
265*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
266*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
267*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
268*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
269*35238bceSAndroid Build Coastguard Worker
270*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
271*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
272*35238bceSAndroid Build Coastguard Worker
273*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
274*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
275*35238bceSAndroid Build Coastguard Worker
276*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
277*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
278*35238bceSAndroid Build Coastguard Worker
279*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
280*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
281*35238bceSAndroid Build Coastguard Worker
282*35238bceSAndroid Build Coastguard Worker gl.scissor(2, 3, 12, 13);
283*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glScissor()");
284*35238bceSAndroid Build Coastguard Worker }),
285*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.enable(GL_SCISSOR_TEST); }))
286*35238bceSAndroid Build Coastguard Worker
287*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(dither, "Enable/Disable dithering.", true, false, MACRO_BLOCK({
288*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
289*35238bceSAndroid Build Coastguard Worker requireTextures(1);
290*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
291*35238bceSAndroid Build Coastguard Worker
292*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
293*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
294*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
295*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
296*35238bceSAndroid Build Coastguard Worker
297*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
298*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
299*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
300*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
301*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
302*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
303*35238bceSAndroid Build Coastguard Worker
304*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
305*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
306*35238bceSAndroid Build Coastguard Worker
307*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
308*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
309*35238bceSAndroid Build Coastguard Worker
310*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
311*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
312*35238bceSAndroid Build Coastguard Worker
313*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
314*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
315*35238bceSAndroid Build Coastguard Worker }),
316*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.enable(GL_DITHER); }))
317*35238bceSAndroid Build Coastguard Worker
318*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(culling, "Enable/Disable culling.", true, false, MACRO_BLOCK({
319*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
320*35238bceSAndroid Build Coastguard Worker requireTextures(1);
321*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
322*35238bceSAndroid Build Coastguard Worker
323*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
324*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
325*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
326*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
327*35238bceSAndroid Build Coastguard Worker
328*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
329*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
330*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
331*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
332*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
333*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
334*35238bceSAndroid Build Coastguard Worker
335*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
336*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
337*35238bceSAndroid Build Coastguard Worker
338*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
339*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
340*35238bceSAndroid Build Coastguard Worker
341*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
342*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
343*35238bceSAndroid Build Coastguard Worker
344*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
345*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
346*35238bceSAndroid Build Coastguard Worker
347*35238bceSAndroid Build Coastguard Worker gl.frontFace(GL_CW);
348*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glFrontFace()");
349*35238bceSAndroid Build Coastguard Worker
350*35238bceSAndroid Build Coastguard Worker gl.cullFace(GL_FRONT);
351*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glCullFace()");
352*35238bceSAndroid Build Coastguard Worker }),
353*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.enable(GL_CULL_FACE); }))
354*35238bceSAndroid Build Coastguard Worker
355*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(depth_func, "Change depth func.", true, false, MACRO_BLOCK({
356*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
357*35238bceSAndroid Build Coastguard Worker requireTextures(1);
358*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
359*35238bceSAndroid Build Coastguard Worker
360*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
361*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
362*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
363*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
364*35238bceSAndroid Build Coastguard Worker
365*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
366*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
367*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
368*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
369*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
370*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
371*35238bceSAndroid Build Coastguard Worker
372*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
373*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
374*35238bceSAndroid Build Coastguard Worker
375*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
376*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
377*35238bceSAndroid Build Coastguard Worker
378*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
379*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
380*35238bceSAndroid Build Coastguard Worker
381*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
382*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
383*35238bceSAndroid Build Coastguard Worker
384*35238bceSAndroid Build Coastguard Worker gl.enable(GL_DEPTH_TEST);
385*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
386*35238bceSAndroid Build Coastguard Worker }),
387*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.depthFunc(GL_GEQUAL); }))
388*35238bceSAndroid Build Coastguard Worker
389*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(depth_mask, "Toggle depth mask.", true, false, MACRO_BLOCK({
390*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
391*35238bceSAndroid Build Coastguard Worker requireTextures(1);
392*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
393*35238bceSAndroid Build Coastguard Worker
394*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
395*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
396*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
397*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
398*35238bceSAndroid Build Coastguard Worker
399*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
400*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
401*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
402*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
403*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
404*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
405*35238bceSAndroid Build Coastguard Worker
406*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
407*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
408*35238bceSAndroid Build Coastguard Worker
409*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
410*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
411*35238bceSAndroid Build Coastguard Worker
412*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
413*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
414*35238bceSAndroid Build Coastguard Worker
415*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
416*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
417*35238bceSAndroid Build Coastguard Worker
418*35238bceSAndroid Build Coastguard Worker gl.enable(GL_DEPTH_TEST);
419*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
420*35238bceSAndroid Build Coastguard Worker
421*35238bceSAndroid Build Coastguard Worker gl.depthFunc(GL_LEQUAL);
422*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glDepthFunc()");
423*35238bceSAndroid Build Coastguard Worker }),
424*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.depthMask(GL_FALSE); }))
425*35238bceSAndroid Build Coastguard Worker
426*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(depth_rangef, "Change depth range.", true, false, MACRO_BLOCK({
427*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
428*35238bceSAndroid Build Coastguard Worker requireTextures(1);
429*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
430*35238bceSAndroid Build Coastguard Worker
431*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
432*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
433*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
434*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
435*35238bceSAndroid Build Coastguard Worker
436*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
437*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
438*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
439*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
440*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
441*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
442*35238bceSAndroid Build Coastguard Worker
443*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
444*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
445*35238bceSAndroid Build Coastguard Worker
446*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
447*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
448*35238bceSAndroid Build Coastguard Worker
449*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
450*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
451*35238bceSAndroid Build Coastguard Worker
452*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
453*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
454*35238bceSAndroid Build Coastguard Worker }),
455*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.depthRangef(0.0f, 1.0f); }))
456*35238bceSAndroid Build Coastguard Worker
457*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(blend_equation, "Change blend equation.", true, false, MACRO_BLOCK({
458*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
459*35238bceSAndroid Build Coastguard Worker requireTextures(1);
460*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
461*35238bceSAndroid Build Coastguard Worker
462*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
463*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
464*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
465*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
466*35238bceSAndroid Build Coastguard Worker
467*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
468*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
469*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
470*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
471*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
472*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
473*35238bceSAndroid Build Coastguard Worker
474*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
475*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
476*35238bceSAndroid Build Coastguard Worker
477*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
478*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
479*35238bceSAndroid Build Coastguard Worker
480*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
481*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
482*35238bceSAndroid Build Coastguard Worker
483*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
484*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
485*35238bceSAndroid Build Coastguard Worker
486*35238bceSAndroid Build Coastguard Worker gl.enable(GL_BLEND);
487*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
488*35238bceSAndroid Build Coastguard Worker }),
489*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.blendEquation(GL_FUNC_SUBTRACT); }))
490*35238bceSAndroid Build Coastguard Worker
491*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(blend_func, "Change blend function.", true, false, MACRO_BLOCK({
492*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
493*35238bceSAndroid Build Coastguard Worker requireTextures(1);
494*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
495*35238bceSAndroid Build Coastguard Worker
496*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
497*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
498*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
499*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
500*35238bceSAndroid Build Coastguard Worker
501*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
502*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
503*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
504*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
505*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
506*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
507*35238bceSAndroid Build Coastguard Worker
508*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
509*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
510*35238bceSAndroid Build Coastguard Worker
511*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
512*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
513*35238bceSAndroid Build Coastguard Worker
514*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
515*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
516*35238bceSAndroid Build Coastguard Worker
517*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
518*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
519*35238bceSAndroid Build Coastguard Worker
520*35238bceSAndroid Build Coastguard Worker gl.enable(GL_BLEND);
521*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
522*35238bceSAndroid Build Coastguard Worker }),
523*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); }))
524*35238bceSAndroid Build Coastguard Worker
525*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(polygon_offset, "Change polygon offset.", true, false, MACRO_BLOCK({
526*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
527*35238bceSAndroid Build Coastguard Worker requireTextures(1);
528*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
529*35238bceSAndroid Build Coastguard Worker
530*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
531*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
532*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
533*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
534*35238bceSAndroid Build Coastguard Worker
535*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
536*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
537*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
538*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
539*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
540*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
541*35238bceSAndroid Build Coastguard Worker
542*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
543*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
544*35238bceSAndroid Build Coastguard Worker
545*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
546*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
547*35238bceSAndroid Build Coastguard Worker
548*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
549*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
550*35238bceSAndroid Build Coastguard Worker
551*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
552*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
553*35238bceSAndroid Build Coastguard Worker
554*35238bceSAndroid Build Coastguard Worker gl.enable(GL_POLYGON_OFFSET_FILL);
555*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
556*35238bceSAndroid Build Coastguard Worker }),
557*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.polygonOffset(0.0f, 0.0f); }))
558*35238bceSAndroid Build Coastguard Worker
559*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(sample_coverage, "Sample coverage.", true, false, MACRO_BLOCK({
560*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
561*35238bceSAndroid Build Coastguard Worker requireTextures(1);
562*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
563*35238bceSAndroid Build Coastguard Worker
564*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
565*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
566*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
567*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
568*35238bceSAndroid Build Coastguard Worker
569*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
570*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
571*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
572*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
573*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
574*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
575*35238bceSAndroid Build Coastguard Worker
576*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
577*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
578*35238bceSAndroid Build Coastguard Worker
579*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
580*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
581*35238bceSAndroid Build Coastguard Worker
582*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
583*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
584*35238bceSAndroid Build Coastguard Worker
585*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
586*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
587*35238bceSAndroid Build Coastguard Worker }),
588*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.sampleCoverage(0.25f, GL_TRUE); }))
589*35238bceSAndroid Build Coastguard Worker
590*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(viewport, "Change viewport.", true, false, MACRO_BLOCK({
591*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
592*35238bceSAndroid Build Coastguard Worker requireTextures(1);
593*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
594*35238bceSAndroid Build Coastguard Worker
595*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
596*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
597*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
598*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
599*35238bceSAndroid Build Coastguard Worker
600*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
601*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
602*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
603*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
604*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
605*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
606*35238bceSAndroid Build Coastguard Worker
607*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
608*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
609*35238bceSAndroid Build Coastguard Worker
610*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
611*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
612*35238bceSAndroid Build Coastguard Worker
613*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
614*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
615*35238bceSAndroid Build Coastguard Worker
616*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
617*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
618*35238bceSAndroid Build Coastguard Worker }),
619*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.viewport(10, 11, 5, 6); }))
620*35238bceSAndroid Build Coastguard Worker
621*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(scissor, "Change scissor box.", true, false, MACRO_BLOCK({
622*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
623*35238bceSAndroid Build Coastguard Worker requireTextures(1);
624*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
625*35238bceSAndroid Build Coastguard Worker
626*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
627*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
628*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
629*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
630*35238bceSAndroid Build Coastguard Worker
631*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
632*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
633*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
634*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
635*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
636*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
637*35238bceSAndroid Build Coastguard Worker
638*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
639*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
640*35238bceSAndroid Build Coastguard Worker
641*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
642*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
643*35238bceSAndroid Build Coastguard Worker
644*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
645*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
646*35238bceSAndroid Build Coastguard Worker
647*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
648*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
649*35238bceSAndroid Build Coastguard Worker
650*35238bceSAndroid Build Coastguard Worker gl.enable(GL_SCISSOR_TEST);
651*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
652*35238bceSAndroid Build Coastguard Worker }),
653*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.scissor(17, 13, 5, 8); }))
654*35238bceSAndroid Build Coastguard Worker
655*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(color_mask, "Change color mask.", true, false, MACRO_BLOCK({
656*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
657*35238bceSAndroid Build Coastguard Worker requireTextures(1);
658*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
659*35238bceSAndroid Build Coastguard Worker
660*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
661*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
662*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
663*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
664*35238bceSAndroid Build Coastguard Worker
665*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
666*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
667*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
668*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
669*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
670*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
671*35238bceSAndroid Build Coastguard Worker
672*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
673*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
674*35238bceSAndroid Build Coastguard Worker
675*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
676*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
677*35238bceSAndroid Build Coastguard Worker
678*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
679*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
680*35238bceSAndroid Build Coastguard Worker
681*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
682*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
683*35238bceSAndroid Build Coastguard Worker }),
684*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.colorMask(GL_TRUE, GL_FALSE, GL_TRUE, GL_FALSE); }))
685*35238bceSAndroid Build Coastguard Worker
686*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(cull_face, "Change culling mode.", true, false, MACRO_BLOCK({
687*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
688*35238bceSAndroid Build Coastguard Worker requireTextures(1);
689*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
690*35238bceSAndroid Build Coastguard Worker
691*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
692*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
693*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
694*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
695*35238bceSAndroid Build Coastguard Worker
696*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
697*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
698*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
699*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
700*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
701*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
702*35238bceSAndroid Build Coastguard Worker
703*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
704*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
705*35238bceSAndroid Build Coastguard Worker
706*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
707*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
708*35238bceSAndroid Build Coastguard Worker
709*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
710*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
711*35238bceSAndroid Build Coastguard Worker
712*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
713*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
714*35238bceSAndroid Build Coastguard Worker
715*35238bceSAndroid Build Coastguard Worker gl.enable(GL_CULL_FACE);
716*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
717*35238bceSAndroid Build Coastguard Worker }),
718*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.cullFace(GL_FRONT); }))
719*35238bceSAndroid Build Coastguard Worker
720*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(front_face, "Change front face.", true, false, MACRO_BLOCK({
721*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
722*35238bceSAndroid Build Coastguard Worker requireTextures(1);
723*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
724*35238bceSAndroid Build Coastguard Worker
725*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
726*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
727*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
728*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
729*35238bceSAndroid Build Coastguard Worker
730*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
731*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
732*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
733*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
734*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
735*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
736*35238bceSAndroid Build Coastguard Worker
737*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
738*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
739*35238bceSAndroid Build Coastguard Worker
740*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
741*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
742*35238bceSAndroid Build Coastguard Worker
743*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
744*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
745*35238bceSAndroid Build Coastguard Worker
746*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
747*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
748*35238bceSAndroid Build Coastguard Worker
749*35238bceSAndroid Build Coastguard Worker gl.enable(GL_CULL_FACE);
750*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
751*35238bceSAndroid Build Coastguard Worker }),
752*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.frontFace(GL_CCW); }))
753*35238bceSAndroid Build Coastguard Worker
754*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(stencil_mask, "Change stencil mask.", true, false, MACRO_BLOCK({
755*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
756*35238bceSAndroid Build Coastguard Worker requireTextures(1);
757*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
758*35238bceSAndroid Build Coastguard Worker
759*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
760*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
761*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
762*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
763*35238bceSAndroid Build Coastguard Worker
764*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
765*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
766*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
767*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
768*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
769*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
770*35238bceSAndroid Build Coastguard Worker
771*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
772*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
773*35238bceSAndroid Build Coastguard Worker
774*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
775*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
776*35238bceSAndroid Build Coastguard Worker
777*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
778*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
779*35238bceSAndroid Build Coastguard Worker
780*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
781*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
782*35238bceSAndroid Build Coastguard Worker
783*35238bceSAndroid Build Coastguard Worker gl.enable(GL_STENCIL_TEST);
784*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
785*35238bceSAndroid Build Coastguard Worker
786*35238bceSAndroid Build Coastguard Worker gl.stencilFunc(GL_LEQUAL, 0, 0);
787*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glStencilFunc()");
788*35238bceSAndroid Build Coastguard Worker
789*35238bceSAndroid Build Coastguard Worker gl.stencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE);
790*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glStencilOp()");
791*35238bceSAndroid Build Coastguard Worker
792*35238bceSAndroid Build Coastguard Worker gl.clearStencil(0);
793*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glClearStencil()");
794*35238bceSAndroid Build Coastguard Worker gl.clear(GL_STENCIL_BUFFER_BIT);
795*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glClear()");
796*35238bceSAndroid Build Coastguard Worker }),
797*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.stencilMask(0xDD); }))
798*35238bceSAndroid Build Coastguard Worker
799*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(stencil_func, "Change stencil func.", true, false, MACRO_BLOCK({
800*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
801*35238bceSAndroid Build Coastguard Worker requireTextures(1);
802*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
803*35238bceSAndroid Build Coastguard Worker
804*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
805*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
806*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
807*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
808*35238bceSAndroid Build Coastguard Worker
809*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
810*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
811*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
812*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
813*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
814*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
815*35238bceSAndroid Build Coastguard Worker
816*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
817*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
818*35238bceSAndroid Build Coastguard Worker
819*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
820*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
821*35238bceSAndroid Build Coastguard Worker
822*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
823*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
824*35238bceSAndroid Build Coastguard Worker
825*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
826*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
827*35238bceSAndroid Build Coastguard Worker
828*35238bceSAndroid Build Coastguard Worker gl.enable(GL_STENCIL_TEST);
829*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
830*35238bceSAndroid Build Coastguard Worker
831*35238bceSAndroid Build Coastguard Worker gl.stencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE);
832*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glStencilOp()");
833*35238bceSAndroid Build Coastguard Worker gl.clearStencil(0);
834*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glClearStencil()");
835*35238bceSAndroid Build Coastguard Worker gl.clear(GL_STENCIL_BUFFER_BIT);
836*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glClear()");
837*35238bceSAndroid Build Coastguard Worker }),
838*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.stencilFunc(GL_LEQUAL, 0, 0xFF); }))
839*35238bceSAndroid Build Coastguard Worker
840*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(stencil_op, "Change stencil op.", true, false, MACRO_BLOCK({
841*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
842*35238bceSAndroid Build Coastguard Worker requireTextures(1);
843*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
844*35238bceSAndroid Build Coastguard Worker
845*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
846*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
847*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
848*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
849*35238bceSAndroid Build Coastguard Worker
850*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
851*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
852*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
853*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
854*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
855*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
856*35238bceSAndroid Build Coastguard Worker
857*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
858*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
859*35238bceSAndroid Build Coastguard Worker
860*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
861*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
862*35238bceSAndroid Build Coastguard Worker
863*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
864*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
865*35238bceSAndroid Build Coastguard Worker
866*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
867*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
868*35238bceSAndroid Build Coastguard Worker
869*35238bceSAndroid Build Coastguard Worker gl.enable(GL_STENCIL_TEST);
870*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
871*35238bceSAndroid Build Coastguard Worker
872*35238bceSAndroid Build Coastguard Worker gl.stencilFunc(GL_LEQUAL, 0, 0);
873*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glStencilFunc()");
874*35238bceSAndroid Build Coastguard Worker
875*35238bceSAndroid Build Coastguard Worker gl.clearStencil(0);
876*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glClearStencil()");
877*35238bceSAndroid Build Coastguard Worker
878*35238bceSAndroid Build Coastguard Worker gl.clear(GL_STENCIL_BUFFER_BIT);
879*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glClear()");
880*35238bceSAndroid Build Coastguard Worker }),
881*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.stencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE); }))
882*35238bceSAndroid Build Coastguard Worker
883*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(bind_array_buffer, "Change array buffer and refresh vertex attrib pointer.", true, false, MACRO_BLOCK({
884*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
885*35238bceSAndroid Build Coastguard Worker requireTextures(1);
886*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
887*35238bceSAndroid Build Coastguard Worker
888*35238bceSAndroid Build Coastguard Worker gl.bindAttribLocation(m_programs[0]->getProgram(), 0, "a_coord");
889*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindAttribLocation()");
890*35238bceSAndroid Build Coastguard Worker gl.linkProgram(m_programs[0]->getProgram());
891*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glLinkProgram()");
892*35238bceSAndroid Build Coastguard Worker
893*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
894*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
895*35238bceSAndroid Build Coastguard Worker
896*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(0);
897*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
898*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
899*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
900*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, NULL);
901*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
902*35238bceSAndroid Build Coastguard Worker
903*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
904*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
905*35238bceSAndroid Build Coastguard Worker
906*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
907*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
908*35238bceSAndroid Build Coastguard Worker
909*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
910*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
911*35238bceSAndroid Build Coastguard Worker
912*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
913*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
914*35238bceSAndroid Build Coastguard Worker }),
915*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({
916*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
917*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, NULL);
918*35238bceSAndroid Build Coastguard Worker }))
919*35238bceSAndroid Build Coastguard Worker
920*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(element_array_buffer, "Change element array buffer.", false, true, MACRO_BLOCK({
921*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
922*35238bceSAndroid Build Coastguard Worker requireIndexBuffers(1);
923*35238bceSAndroid Build Coastguard Worker requireTextures(1);
924*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
925*35238bceSAndroid Build Coastguard Worker
926*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
927*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
928*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
929*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
930*35238bceSAndroid Build Coastguard Worker
931*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
932*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
933*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
934*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
935*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
936*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
937*35238bceSAndroid Build Coastguard Worker
938*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
939*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
940*35238bceSAndroid Build Coastguard Worker
941*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
942*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
943*35238bceSAndroid Build Coastguard Worker
944*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
945*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
946*35238bceSAndroid Build Coastguard Worker
947*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
948*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
949*35238bceSAndroid Build Coastguard Worker
950*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_indexBuffers[0]);
951*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
952*35238bceSAndroid Build Coastguard Worker }),
953*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_indexBuffers[0]); }))
954*35238bceSAndroid Build Coastguard Worker
955*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(bind_texture, "Change texture binding.", true, false, MACRO_BLOCK({
956*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
957*35238bceSAndroid Build Coastguard Worker requireTextures(1);
958*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
959*35238bceSAndroid Build Coastguard Worker
960*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
961*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
962*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
963*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
964*35238bceSAndroid Build Coastguard Worker
965*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
966*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
967*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
968*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
969*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
970*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
971*35238bceSAndroid Build Coastguard Worker
972*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
973*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
974*35238bceSAndroid Build Coastguard Worker
975*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
976*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
977*35238bceSAndroid Build Coastguard Worker
978*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
979*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
980*35238bceSAndroid Build Coastguard Worker
981*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
982*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
983*35238bceSAndroid Build Coastguard Worker }),
984*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.bindTexture(GL_TEXTURE_2D, m_textures[0]); }))
985*35238bceSAndroid Build Coastguard Worker
986*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(use_program, "Change used program.", true, false, MACRO_BLOCK({
987*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
988*35238bceSAndroid Build Coastguard Worker requireTextures(1);
989*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
990*35238bceSAndroid Build Coastguard Worker
991*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
992*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
993*35238bceSAndroid Build Coastguard Worker
994*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
995*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
996*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
997*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
998*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
999*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
1000*35238bceSAndroid Build Coastguard Worker
1001*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
1002*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
1003*35238bceSAndroid Build Coastguard Worker
1004*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
1005*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
1006*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
1007*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
1008*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
1009*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
1010*35238bceSAndroid Build Coastguard Worker
1011*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
1012*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
1013*35238bceSAndroid Build Coastguard Worker }),
1014*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.useProgram(m_programs[0]->getProgram()); }))
1015*35238bceSAndroid Build Coastguard Worker
1016*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(tex_parameter_min_filter, "Change texture parameter min filter.", true, false, MACRO_BLOCK({
1017*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
1018*35238bceSAndroid Build Coastguard Worker requireTextures(1);
1019*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
1020*35238bceSAndroid Build Coastguard Worker
1021*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
1022*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
1023*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
1024*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
1025*35238bceSAndroid Build Coastguard Worker
1026*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
1027*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
1028*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
1029*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
1030*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
1031*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
1032*35238bceSAndroid Build Coastguard Worker
1033*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
1034*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
1035*35238bceSAndroid Build Coastguard Worker
1036*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
1037*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
1038*35238bceSAndroid Build Coastguard Worker
1039*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
1040*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
1041*35238bceSAndroid Build Coastguard Worker
1042*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
1043*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
1044*35238bceSAndroid Build Coastguard Worker }),
1045*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); }))
1046*35238bceSAndroid Build Coastguard Worker
1047*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(tex_parameter_mag_filter, "Change texture parameter mag filter.", true, false, MACRO_BLOCK({
1048*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
1049*35238bceSAndroid Build Coastguard Worker requireTextures(1);
1050*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
1051*35238bceSAndroid Build Coastguard Worker
1052*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
1053*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
1054*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
1055*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
1056*35238bceSAndroid Build Coastguard Worker
1057*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
1058*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
1059*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
1060*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
1061*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
1062*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
1063*35238bceSAndroid Build Coastguard Worker
1064*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
1065*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
1066*35238bceSAndroid Build Coastguard Worker
1067*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
1068*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
1069*35238bceSAndroid Build Coastguard Worker
1070*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
1071*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
1072*35238bceSAndroid Build Coastguard Worker
1073*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
1074*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
1075*35238bceSAndroid Build Coastguard Worker }),
1076*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); }))
1077*35238bceSAndroid Build Coastguard Worker
1078*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(tex_parameter_wrap, "Change texture parameter wrap filter.", true, false, MACRO_BLOCK({
1079*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
1080*35238bceSAndroid Build Coastguard Worker requireTextures(1);
1081*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
1082*35238bceSAndroid Build Coastguard Worker
1083*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
1084*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
1085*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
1086*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
1087*35238bceSAndroid Build Coastguard Worker
1088*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
1089*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
1090*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
1091*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
1092*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
1093*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
1094*35238bceSAndroid Build Coastguard Worker
1095*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
1096*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
1097*35238bceSAndroid Build Coastguard Worker
1098*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
1099*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
1100*35238bceSAndroid Build Coastguard Worker
1101*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
1102*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
1103*35238bceSAndroid Build Coastguard Worker
1104*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
1105*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
1106*35238bceSAndroid Build Coastguard Worker }),
1107*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); }))
1108*35238bceSAndroid Build Coastguard Worker
1109*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(bind_framebuffer, "Change framebuffer.", true, false, MACRO_BLOCK({
1110*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
1111*35238bceSAndroid Build Coastguard Worker requireTextures(1);
1112*35238bceSAndroid Build Coastguard Worker requireFramebuffers(1);
1113*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
1114*35238bceSAndroid Build Coastguard Worker
1115*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
1116*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
1117*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
1118*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
1119*35238bceSAndroid Build Coastguard Worker
1120*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
1121*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
1122*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
1123*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
1124*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
1125*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
1126*35238bceSAndroid Build Coastguard Worker
1127*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
1128*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
1129*35238bceSAndroid Build Coastguard Worker
1130*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
1131*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
1132*35238bceSAndroid Build Coastguard Worker
1133*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
1134*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
1135*35238bceSAndroid Build Coastguard Worker
1136*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
1137*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
1138*35238bceSAndroid Build Coastguard Worker
1139*35238bceSAndroid Build Coastguard Worker gl.bindFramebuffer(GL_FRAMEBUFFER, m_framebuffers[0]);
1140*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindFramebuffer()");
1141*35238bceSAndroid Build Coastguard Worker }),
1142*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.bindFramebuffer(GL_FRAMEBUFFER, m_framebuffers[0]); }))
1143*35238bceSAndroid Build Coastguard Worker
1144*35238bceSAndroid Build Coastguard Worker ADD_TESTCASE(blend_color, "Change blend color.", true, false, MACRO_BLOCK({
1145*35238bceSAndroid Build Coastguard Worker requireCoordBuffers(1);
1146*35238bceSAndroid Build Coastguard Worker requireTextures(1);
1147*35238bceSAndroid Build Coastguard Worker requirePrograms(1);
1148*35238bceSAndroid Build Coastguard Worker
1149*35238bceSAndroid Build Coastguard Worker gl.useProgram(m_programs[0]->getProgram());
1150*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram()");
1151*35238bceSAndroid Build Coastguard Worker GLint coordLoc = gl.getAttribLocation(m_programs[0]->getProgram(), "a_coord");
1152*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetAttribLocation()");
1153*35238bceSAndroid Build Coastguard Worker
1154*35238bceSAndroid Build Coastguard Worker gl.enableVertexAttribArray(coordLoc);
1155*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray()");
1156*35238bceSAndroid Build Coastguard Worker gl.bindBuffer(GL_ARRAY_BUFFER, m_coordBuffers[0]);
1157*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer()");
1158*35238bceSAndroid Build Coastguard Worker gl.vertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
1159*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer()");
1160*35238bceSAndroid Build Coastguard Worker
1161*35238bceSAndroid Build Coastguard Worker GLint samplerLoc = gl.getUniformLocation(m_programs[0]->getProgram(), "u_sampler");
1162*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glGetUniformLocation()");
1163*35238bceSAndroid Build Coastguard Worker
1164*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_2D, m_textures[0]);
1165*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture()");
1166*35238bceSAndroid Build Coastguard Worker
1167*35238bceSAndroid Build Coastguard Worker gl.uniform1i(samplerLoc, 0);
1168*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i()");
1169*35238bceSAndroid Build Coastguard Worker
1170*35238bceSAndroid Build Coastguard Worker gl.viewport(0, 0, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
1171*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport()");
1172*35238bceSAndroid Build Coastguard Worker
1173*35238bceSAndroid Build Coastguard Worker gl.enable(GL_BLEND);
1174*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable()");
1175*35238bceSAndroid Build Coastguard Worker
1176*35238bceSAndroid Build Coastguard Worker gl.blendFunc(GL_CONSTANT_COLOR, GL_CONSTANT_COLOR);
1177*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glBlendFunc()");
1178*35238bceSAndroid Build Coastguard Worker }),
1179*35238bceSAndroid Build Coastguard Worker MACRO_BLOCK({ gl.blendColor(0.75f, 0.75f, 0.75f, 0.75f); }))
1180*35238bceSAndroid Build Coastguard Worker }
1181*35238bceSAndroid Build Coastguard Worker
1182*35238bceSAndroid Build Coastguard Worker } // namespace Performance
1183*35238bceSAndroid Build Coastguard Worker } // namespace gles2
1184*35238bceSAndroid Build Coastguard Worker } // namespace deqp
1185