1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL ES 3.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 Sync stress tests.
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "es3sSyncTests.hpp"
25*35238bceSAndroid Build Coastguard Worker
26*35238bceSAndroid Build Coastguard Worker #include "tcuTestLog.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "deRandom.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "tcuVector.hpp"
29*35238bceSAndroid Build Coastguard Worker #include "gluShaderProgram.hpp"
30*35238bceSAndroid Build Coastguard Worker #include "gluCallLogWrapper.hpp"
31*35238bceSAndroid Build Coastguard Worker #include "gluRenderContext.hpp"
32*35238bceSAndroid Build Coastguard Worker #include "deStringUtil.hpp"
33*35238bceSAndroid Build Coastguard Worker #include "deString.h"
34*35238bceSAndroid Build Coastguard Worker
35*35238bceSAndroid Build Coastguard Worker #include <vector>
36*35238bceSAndroid Build Coastguard Worker
37*35238bceSAndroid Build Coastguard Worker #include "glw.h"
38*35238bceSAndroid Build Coastguard Worker
39*35238bceSAndroid Build Coastguard Worker using std::vector;
40*35238bceSAndroid Build Coastguard Worker using tcu::TestLog;
41*35238bceSAndroid Build Coastguard Worker
42*35238bceSAndroid Build Coastguard Worker namespace deqp
43*35238bceSAndroid Build Coastguard Worker {
44*35238bceSAndroid Build Coastguard Worker namespace gles3
45*35238bceSAndroid Build Coastguard Worker {
46*35238bceSAndroid Build Coastguard Worker namespace Stress
47*35238bceSAndroid Build Coastguard Worker {
48*35238bceSAndroid Build Coastguard Worker
49*35238bceSAndroid Build Coastguard Worker static const int NUM_CASE_ITERATIONS = 1;
50*35238bceSAndroid Build Coastguard Worker
51*35238bceSAndroid Build Coastguard Worker enum WaitCommand
52*35238bceSAndroid Build Coastguard Worker {
53*35238bceSAndroid Build Coastguard Worker COMMAND_WAIT_SYNC = 1 << 0,
54*35238bceSAndroid Build Coastguard Worker COMMAND_CLIENT_WAIT_SYNC = 1 << 1
55*35238bceSAndroid Build Coastguard Worker };
56*35238bceSAndroid Build Coastguard Worker
57*35238bceSAndroid Build Coastguard Worker class FenceSyncCase : public TestCase, public glu::CallLogWrapper
58*35238bceSAndroid Build Coastguard Worker {
59*35238bceSAndroid Build Coastguard Worker public:
60*35238bceSAndroid Build Coastguard Worker FenceSyncCase(Context &context, const char *name, const char *description, int numPrimitives, uint32_t waitCommand);
61*35238bceSAndroid Build Coastguard Worker ~FenceSyncCase(void);
62*35238bceSAndroid Build Coastguard Worker
63*35238bceSAndroid Build Coastguard Worker void init(void);
64*35238bceSAndroid Build Coastguard Worker void deinit(void);
65*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
66*35238bceSAndroid Build Coastguard Worker
67*35238bceSAndroid Build Coastguard Worker private:
68*35238bceSAndroid Build Coastguard Worker FenceSyncCase(const FenceSyncCase &other);
69*35238bceSAndroid Build Coastguard Worker FenceSyncCase &operator=(const FenceSyncCase &other);
70*35238bceSAndroid Build Coastguard Worker
71*35238bceSAndroid Build Coastguard Worker int m_numSyncs;
72*35238bceSAndroid Build Coastguard Worker uint32_t m_waitCommand;
73*35238bceSAndroid Build Coastguard Worker
74*35238bceSAndroid Build Coastguard Worker glu::ShaderProgram *m_program;
75*35238bceSAndroid Build Coastguard Worker vector<GLsync> m_syncObjects;
76*35238bceSAndroid Build Coastguard Worker int m_iterNdx;
77*35238bceSAndroid Build Coastguard Worker de::Random m_rnd;
78*35238bceSAndroid Build Coastguard Worker };
79*35238bceSAndroid Build Coastguard Worker
FenceSyncCase(Context & context,const char * name,const char * description,int numSyncs,uint32_t waitCommand)80*35238bceSAndroid Build Coastguard Worker FenceSyncCase::FenceSyncCase(Context &context, const char *name, const char *description, int numSyncs,
81*35238bceSAndroid Build Coastguard Worker uint32_t waitCommand)
82*35238bceSAndroid Build Coastguard Worker : TestCase(context, name, description)
83*35238bceSAndroid Build Coastguard Worker , CallLogWrapper(context.getRenderContext().getFunctions(), context.getTestContext().getLog())
84*35238bceSAndroid Build Coastguard Worker , m_numSyncs(numSyncs)
85*35238bceSAndroid Build Coastguard Worker , m_waitCommand(waitCommand)
86*35238bceSAndroid Build Coastguard Worker , m_program(DE_NULL)
87*35238bceSAndroid Build Coastguard Worker , m_syncObjects(DE_NULL)
88*35238bceSAndroid Build Coastguard Worker , m_iterNdx(0)
89*35238bceSAndroid Build Coastguard Worker , m_rnd(deStringHash(name))
90*35238bceSAndroid Build Coastguard Worker {
91*35238bceSAndroid Build Coastguard Worker }
92*35238bceSAndroid Build Coastguard Worker
~FenceSyncCase(void)93*35238bceSAndroid Build Coastguard Worker FenceSyncCase::~FenceSyncCase(void)
94*35238bceSAndroid Build Coastguard Worker {
95*35238bceSAndroid Build Coastguard Worker FenceSyncCase::deinit();
96*35238bceSAndroid Build Coastguard Worker }
97*35238bceSAndroid Build Coastguard Worker
generateVertices(std::vector<float> & dst,int numPrimitives,de::Random & rnd)98*35238bceSAndroid Build Coastguard Worker static void generateVertices(std::vector<float> &dst, int numPrimitives, de::Random &rnd)
99*35238bceSAndroid Build Coastguard Worker {
100*35238bceSAndroid Build Coastguard Worker int numVertices = 3 * numPrimitives;
101*35238bceSAndroid Build Coastguard Worker dst.resize(numVertices * 4);
102*35238bceSAndroid Build Coastguard Worker
103*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < numVertices; i++)
104*35238bceSAndroid Build Coastguard Worker {
105*35238bceSAndroid Build Coastguard Worker dst[i * 4] = rnd.getFloat(-1.0f, 1.0f); // x
106*35238bceSAndroid Build Coastguard Worker dst[i * 4 + 1] = rnd.getFloat(-1.0f, 1.0f); // y
107*35238bceSAndroid Build Coastguard Worker dst[i * 4 + 2] = rnd.getFloat(0.0f, 1.0f); // z
108*35238bceSAndroid Build Coastguard Worker dst[i * 4 + 3] = 1.0f; // w
109*35238bceSAndroid Build Coastguard Worker }
110*35238bceSAndroid Build Coastguard Worker }
111*35238bceSAndroid Build Coastguard Worker
init(void)112*35238bceSAndroid Build Coastguard Worker void FenceSyncCase::init(void)
113*35238bceSAndroid Build Coastguard Worker {
114*35238bceSAndroid Build Coastguard Worker const char *vertShaderSource = "#version 300 es\n"
115*35238bceSAndroid Build Coastguard Worker "layout(location = 0) in mediump vec4 a_position;\n"
116*35238bceSAndroid Build Coastguard Worker "\n"
117*35238bceSAndroid Build Coastguard Worker "void main (void)\n"
118*35238bceSAndroid Build Coastguard Worker "{\n"
119*35238bceSAndroid Build Coastguard Worker " gl_Position = a_position;\n"
120*35238bceSAndroid Build Coastguard Worker "}\n";
121*35238bceSAndroid Build Coastguard Worker
122*35238bceSAndroid Build Coastguard Worker const char *fragShaderSource = "#version 300 es\n"
123*35238bceSAndroid Build Coastguard Worker "layout(location = 0) out mediump vec4 o_color;\n"
124*35238bceSAndroid Build Coastguard Worker "\n"
125*35238bceSAndroid Build Coastguard Worker "void main (void)\n"
126*35238bceSAndroid Build Coastguard Worker "{\n"
127*35238bceSAndroid Build Coastguard Worker " o_color = vec4(0.25, 0.5, 0.75, 1.0);\n"
128*35238bceSAndroid Build Coastguard Worker "}\n";
129*35238bceSAndroid Build Coastguard Worker
130*35238bceSAndroid Build Coastguard Worker DE_ASSERT(!m_program);
131*35238bceSAndroid Build Coastguard Worker m_program = new glu::ShaderProgram(m_context.getRenderContext(),
132*35238bceSAndroid Build Coastguard Worker glu::makeVtxFragSources(vertShaderSource, fragShaderSource));
133*35238bceSAndroid Build Coastguard Worker
134*35238bceSAndroid Build Coastguard Worker if (!m_program->isOk())
135*35238bceSAndroid Build Coastguard Worker {
136*35238bceSAndroid Build Coastguard Worker m_testCtx.getLog() << *m_program;
137*35238bceSAndroid Build Coastguard Worker TCU_FAIL("Failed to compile shader program");
138*35238bceSAndroid Build Coastguard Worker }
139*35238bceSAndroid Build Coastguard Worker
140*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass"); // Initialize test result to pass.
141*35238bceSAndroid Build Coastguard Worker GLU_CHECK_MSG("Case initialization finished");
142*35238bceSAndroid Build Coastguard Worker }
143*35238bceSAndroid Build Coastguard Worker
deinit(void)144*35238bceSAndroid Build Coastguard Worker void FenceSyncCase::deinit(void)
145*35238bceSAndroid Build Coastguard Worker {
146*35238bceSAndroid Build Coastguard Worker if (m_program)
147*35238bceSAndroid Build Coastguard Worker {
148*35238bceSAndroid Build Coastguard Worker delete m_program;
149*35238bceSAndroid Build Coastguard Worker m_program = DE_NULL;
150*35238bceSAndroid Build Coastguard Worker }
151*35238bceSAndroid Build Coastguard Worker
152*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)m_syncObjects.size(); i++)
153*35238bceSAndroid Build Coastguard Worker if (m_syncObjects[i])
154*35238bceSAndroid Build Coastguard Worker glDeleteSync(m_syncObjects[i]);
155*35238bceSAndroid Build Coastguard Worker
156*35238bceSAndroid Build Coastguard Worker m_syncObjects.erase(m_syncObjects.begin(), m_syncObjects.end());
157*35238bceSAndroid Build Coastguard Worker }
158*35238bceSAndroid Build Coastguard Worker
iterate(void)159*35238bceSAndroid Build Coastguard Worker FenceSyncCase::IterateResult FenceSyncCase::iterate(void)
160*35238bceSAndroid Build Coastguard Worker {
161*35238bceSAndroid Build Coastguard Worker TestLog &log = m_testCtx.getLog();
162*35238bceSAndroid Build Coastguard Worker std::vector<float> vertices;
163*35238bceSAndroid Build Coastguard Worker bool testOk = true;
164*35238bceSAndroid Build Coastguard Worker
165*35238bceSAndroid Build Coastguard Worker std::string header = "Case iteration " + de::toString(m_iterNdx + 1) + " / " + de::toString(NUM_CASE_ITERATIONS);
166*35238bceSAndroid Build Coastguard Worker tcu::ScopedLogSection section(log, header, header);
167*35238bceSAndroid Build Coastguard Worker
168*35238bceSAndroid Build Coastguard Worker enableLogging(true);
169*35238bceSAndroid Build Coastguard Worker
170*35238bceSAndroid Build Coastguard Worker TCU_CHECK(m_program);
171*35238bceSAndroid Build Coastguard Worker glUseProgram(m_program->getProgram());
172*35238bceSAndroid Build Coastguard Worker glEnable(GL_DEPTH_TEST);
173*35238bceSAndroid Build Coastguard Worker glClearColor(0.3f, 0.3f, 0.3f, 1.0f);
174*35238bceSAndroid Build Coastguard Worker glClearDepthf(1.0f);
175*35238bceSAndroid Build Coastguard Worker glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
176*35238bceSAndroid Build Coastguard Worker
177*35238bceSAndroid Build Coastguard Worker // Generate vertices
178*35238bceSAndroid Build Coastguard Worker
179*35238bceSAndroid Build Coastguard Worker glEnableVertexAttribArray(0);
180*35238bceSAndroid Build Coastguard Worker generateVertices(vertices, m_numSyncs, m_rnd);
181*35238bceSAndroid Build Coastguard Worker glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, &vertices[0]);
182*35238bceSAndroid Build Coastguard Worker m_syncObjects.resize(m_numSyncs);
183*35238bceSAndroid Build Coastguard Worker
184*35238bceSAndroid Build Coastguard Worker // Perform draws and create sync objects
185*35238bceSAndroid Build Coastguard Worker
186*35238bceSAndroid Build Coastguard Worker enableLogging(false);
187*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "// NOT LOGGED: " << m_numSyncs << " glDrawArrays and glFenceSync calls done here."
188*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
189*35238bceSAndroid Build Coastguard Worker
190*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < m_numSyncs; i++)
191*35238bceSAndroid Build Coastguard Worker {
192*35238bceSAndroid Build Coastguard Worker glDrawArrays(GL_TRIANGLES, i * 3, 3);
193*35238bceSAndroid Build Coastguard Worker m_syncObjects[i] = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
194*35238bceSAndroid Build Coastguard Worker GLU_CHECK_MSG("Sync object created");
195*35238bceSAndroid Build Coastguard Worker }
196*35238bceSAndroid Build Coastguard Worker enableLogging(true);
197*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "// Draws performed, sync objects created." << TestLog::EndMessage;
198*35238bceSAndroid Build Coastguard Worker
199*35238bceSAndroid Build Coastguard Worker // Wait for sync objects
200*35238bceSAndroid Build Coastguard Worker
201*35238bceSAndroid Build Coastguard Worker m_rnd.shuffle(m_syncObjects.begin(), m_syncObjects.end());
202*35238bceSAndroid Build Coastguard Worker
203*35238bceSAndroid Build Coastguard Worker enableLogging(false);
204*35238bceSAndroid Build Coastguard Worker if (m_waitCommand & COMMAND_WAIT_SYNC)
205*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "// NOT LOGGED: " << m_numSyncs << " glWaitSync calls done here."
206*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
207*35238bceSAndroid Build Coastguard Worker else if (m_waitCommand & COMMAND_CLIENT_WAIT_SYNC)
208*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "// NOT LOGGED: " << m_numSyncs << " glClientWaitSync calls done here."
209*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
210*35238bceSAndroid Build Coastguard Worker
211*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < m_numSyncs; i++)
212*35238bceSAndroid Build Coastguard Worker {
213*35238bceSAndroid Build Coastguard Worker GLenum waitValue = 0;
214*35238bceSAndroid Build Coastguard Worker
215*35238bceSAndroid Build Coastguard Worker if (m_waitCommand & COMMAND_WAIT_SYNC)
216*35238bceSAndroid Build Coastguard Worker {
217*35238bceSAndroid Build Coastguard Worker glWaitSync(m_syncObjects[i], 0, GL_TIMEOUT_IGNORED);
218*35238bceSAndroid Build Coastguard Worker GLU_CHECK_MSG("glWaitSync called");
219*35238bceSAndroid Build Coastguard Worker }
220*35238bceSAndroid Build Coastguard Worker else if (m_waitCommand & COMMAND_CLIENT_WAIT_SYNC)
221*35238bceSAndroid Build Coastguard Worker {
222*35238bceSAndroid Build Coastguard Worker waitValue = glClientWaitSync(m_syncObjects[i], 0, 100);
223*35238bceSAndroid Build Coastguard Worker GLU_CHECK_MSG("glClientWaitSync called");
224*35238bceSAndroid Build Coastguard Worker switch (waitValue)
225*35238bceSAndroid Build Coastguard Worker {
226*35238bceSAndroid Build Coastguard Worker case GL_ALREADY_SIGNALED:
227*35238bceSAndroid Build Coastguard Worker break;
228*35238bceSAndroid Build Coastguard Worker case GL_TIMEOUT_EXPIRED:
229*35238bceSAndroid Build Coastguard Worker break;
230*35238bceSAndroid Build Coastguard Worker case GL_CONDITION_SATISFIED:
231*35238bceSAndroid Build Coastguard Worker break;
232*35238bceSAndroid Build Coastguard Worker case GL_WAIT_FAILED:
233*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "// glClientWaitSync returned GL_WAIT_FAILED" << TestLog::EndMessage;
234*35238bceSAndroid Build Coastguard Worker testOk = false;
235*35238bceSAndroid Build Coastguard Worker break;
236*35238bceSAndroid Build Coastguard Worker default:
237*35238bceSAndroid Build Coastguard Worker TCU_FAIL("glClientWaitSync returned an unknown return value.");
238*35238bceSAndroid Build Coastguard Worker }
239*35238bceSAndroid Build Coastguard Worker }
240*35238bceSAndroid Build Coastguard Worker }
241*35238bceSAndroid Build Coastguard Worker enableLogging(true);
242*35238bceSAndroid Build Coastguard Worker
243*35238bceSAndroid Build Coastguard Worker glFinish();
244*35238bceSAndroid Build Coastguard Worker
245*35238bceSAndroid Build Coastguard Worker // Delete sync objects
246*35238bceSAndroid Build Coastguard Worker
247*35238bceSAndroid Build Coastguard Worker enableLogging(false);
248*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "// NOT LOGGED: " << m_numSyncs << " glDeleteSync calls done here."
249*35238bceSAndroid Build Coastguard Worker << TestLog::EndMessage;
250*35238bceSAndroid Build Coastguard Worker
251*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)m_syncObjects.size(); i++)
252*35238bceSAndroid Build Coastguard Worker {
253*35238bceSAndroid Build Coastguard Worker if (m_syncObjects[i])
254*35238bceSAndroid Build Coastguard Worker {
255*35238bceSAndroid Build Coastguard Worker glDeleteSync(m_syncObjects[i]);
256*35238bceSAndroid Build Coastguard Worker GLU_CHECK_MSG("Sync object deleted");
257*35238bceSAndroid Build Coastguard Worker }
258*35238bceSAndroid Build Coastguard Worker }
259*35238bceSAndroid Build Coastguard Worker
260*35238bceSAndroid Build Coastguard Worker enableLogging(true);
261*35238bceSAndroid Build Coastguard Worker
262*35238bceSAndroid Build Coastguard Worker m_syncObjects.erase(m_syncObjects.begin(), m_syncObjects.end());
263*35238bceSAndroid Build Coastguard Worker
264*35238bceSAndroid Build Coastguard Worker // Evaluate test result
265*35238bceSAndroid Build Coastguard Worker
266*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "// Test result: " << (testOk ? "Passed!" : "Failed!") << TestLog::EndMessage;
267*35238bceSAndroid Build Coastguard Worker
268*35238bceSAndroid Build Coastguard Worker if (!testOk)
269*35238bceSAndroid Build Coastguard Worker {
270*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
271*35238bceSAndroid Build Coastguard Worker return STOP;
272*35238bceSAndroid Build Coastguard Worker }
273*35238bceSAndroid Build Coastguard Worker
274*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "// Sync objects created and deleted successfully." << TestLog::EndMessage;
275*35238bceSAndroid Build Coastguard Worker
276*35238bceSAndroid Build Coastguard Worker return (++m_iterNdx < NUM_CASE_ITERATIONS) ? CONTINUE : STOP;
277*35238bceSAndroid Build Coastguard Worker }
278*35238bceSAndroid Build Coastguard Worker
SyncTests(Context & context)279*35238bceSAndroid Build Coastguard Worker SyncTests::SyncTests(Context &context) : TestCaseGroup(context, "fence_sync", "Fence Sync Tests")
280*35238bceSAndroid Build Coastguard Worker {
281*35238bceSAndroid Build Coastguard Worker }
282*35238bceSAndroid Build Coastguard Worker
~SyncTests(void)283*35238bceSAndroid Build Coastguard Worker SyncTests::~SyncTests(void)
284*35238bceSAndroid Build Coastguard Worker {
285*35238bceSAndroid Build Coastguard Worker }
286*35238bceSAndroid Build Coastguard Worker
init(void)287*35238bceSAndroid Build Coastguard Worker void SyncTests::init(void)
288*35238bceSAndroid Build Coastguard Worker {
289*35238bceSAndroid Build Coastguard Worker // Fence sync stress tests.
290*35238bceSAndroid Build Coastguard Worker
291*35238bceSAndroid Build Coastguard Worker addChild(new FenceSyncCase(m_context, "wait_sync_10_syncs", "", 10, COMMAND_WAIT_SYNC));
292*35238bceSAndroid Build Coastguard Worker addChild(new FenceSyncCase(m_context, "wait_sync_1000_syncs", "", 1000, COMMAND_WAIT_SYNC));
293*35238bceSAndroid Build Coastguard Worker addChild(new FenceSyncCase(m_context, "wait_sync_10000_syncs", "", 10000, COMMAND_WAIT_SYNC));
294*35238bceSAndroid Build Coastguard Worker
295*35238bceSAndroid Build Coastguard Worker addChild(new FenceSyncCase(m_context, "client_wait_sync_10_syncs", "", 10, COMMAND_CLIENT_WAIT_SYNC));
296*35238bceSAndroid Build Coastguard Worker addChild(new FenceSyncCase(m_context, "client_wait_sync_1000_syncs", "", 1000, COMMAND_CLIENT_WAIT_SYNC));
297*35238bceSAndroid Build Coastguard Worker addChild(new FenceSyncCase(m_context, "client_wait_sync_10000_syncs", "", 10000, COMMAND_CLIENT_WAIT_SYNC));
298*35238bceSAndroid Build Coastguard Worker }
299*35238bceSAndroid Build Coastguard Worker
300*35238bceSAndroid Build Coastguard Worker } // namespace Stress
301*35238bceSAndroid Build Coastguard Worker } // namespace gles3
302*35238bceSAndroid Build Coastguard Worker } // namespace deqp
303