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