1e5c31af7Sopenharmony_ci/*-------------------------------------------------------------------------
2e5c31af7Sopenharmony_ci * drawElements Quality Program EGL Module
3e5c31af7Sopenharmony_ci * ---------------------------------------
4e5c31af7Sopenharmony_ci *
5e5c31af7Sopenharmony_ci * Copyright 2014 The Android Open Source Project
6e5c31af7Sopenharmony_ci *
7e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
8e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License.
9e5c31af7Sopenharmony_ci * You may obtain a copy of the License at
10e5c31af7Sopenharmony_ci *
11e5c31af7Sopenharmony_ci *      http://www.apache.org/licenses/LICENSE-2.0
12e5c31af7Sopenharmony_ci *
13e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
14e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
15e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and
17e5c31af7Sopenharmony_ci * limitations under the License.
18e5c31af7Sopenharmony_ci *
19e5c31af7Sopenharmony_ci *//*!
20e5c31af7Sopenharmony_ci * \file
21e5c31af7Sopenharmony_ci * \brief EGL Test Package
22e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ci#include "teglTestPackage.hpp"
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_ci#include "tcuTestLog.hpp"
27e5c31af7Sopenharmony_ci#include "tcuPlatform.hpp"
28e5c31af7Sopenharmony_ci#include "tcuCommandLine.hpp"
29e5c31af7Sopenharmony_ci
30e5c31af7Sopenharmony_ci#include "egluPlatform.hpp"
31e5c31af7Sopenharmony_ci#include "egluUtil.hpp"
32e5c31af7Sopenharmony_ci
33e5c31af7Sopenharmony_ci#include "teglInfoTests.hpp"
34e5c31af7Sopenharmony_ci#include "teglCreateContextTests.hpp"
35e5c31af7Sopenharmony_ci#include "teglQueryContextTests.hpp"
36e5c31af7Sopenharmony_ci#include "teglCreateSurfaceTests.hpp"
37e5c31af7Sopenharmony_ci#include "teglQuerySurfaceTests.hpp"
38e5c31af7Sopenharmony_ci#include "teglChooseConfigTests.hpp"
39e5c31af7Sopenharmony_ci#include "teglQueryConfigTests.hpp"
40e5c31af7Sopenharmony_ci#include "teglColorClearTests.hpp"
41e5c31af7Sopenharmony_ci#include "teglRenderTests.hpp"
42e5c31af7Sopenharmony_ci#include "teglImageTests.hpp"
43e5c31af7Sopenharmony_ci#include "teglGLES2SharingTests.hpp"
44e5c31af7Sopenharmony_ci#include "teglNegativeApiTests.hpp"
45e5c31af7Sopenharmony_ci#include "teglSyncTests.hpp"
46e5c31af7Sopenharmony_ci#include "teglMultiThreadTests.hpp"
47e5c31af7Sopenharmony_ci#include "teglGetProcAddressTests.hpp"
48e5c31af7Sopenharmony_ci#include "teglMemoryStressTests.hpp"
49e5c31af7Sopenharmony_ci#include "teglMakeCurrentPerfTests.hpp"
50e5c31af7Sopenharmony_ci#include "teglGLES2SharedRenderingPerfTests.hpp"
51e5c31af7Sopenharmony_ci#include "teglPreservingSwapTests.hpp"
52e5c31af7Sopenharmony_ci#include "teglClientExtensionTests.hpp"
53e5c31af7Sopenharmony_ci#include "teglCreateContextExtTests.hpp"
54e5c31af7Sopenharmony_ci#include "teglSurfacelessContextTests.hpp"
55e5c31af7Sopenharmony_ci#include "teglSwapBuffersTests.hpp"
56e5c31af7Sopenharmony_ci#include "teglNativeColorMappingTests.hpp"
57e5c31af7Sopenharmony_ci#include "teglNativeCoordMappingTests.hpp"
58e5c31af7Sopenharmony_ci#include "teglResizeTests.hpp"
59e5c31af7Sopenharmony_ci#include "teglBufferAgeTests.hpp"
60e5c31af7Sopenharmony_ci#include "teglPartialUpdateTests.hpp"
61e5c31af7Sopenharmony_ci#include "teglNegativePartialUpdateTests.hpp"
62e5c31af7Sopenharmony_ci#include "teglSwapBuffersWithDamageTests.hpp"
63e5c31af7Sopenharmony_ci#include "teglMultiContextTests.hpp"
64e5c31af7Sopenharmony_ci#include "teglThreadCleanUpTests.hpp"
65e5c31af7Sopenharmony_ci#include "teglMutableRenderBufferTests.hpp"
66e5c31af7Sopenharmony_ci#include "teglGetFrameTimestampsTests.hpp"
67e5c31af7Sopenharmony_ci#include "teglRobustnessTests.hpp"
68e5c31af7Sopenharmony_ci#include "teglWideColorTests.hpp"
69e5c31af7Sopenharmony_ci
70e5c31af7Sopenharmony_cinamespace deqp
71e5c31af7Sopenharmony_ci{
72e5c31af7Sopenharmony_cinamespace egl
73e5c31af7Sopenharmony_ci{
74e5c31af7Sopenharmony_ci
75e5c31af7Sopenharmony_ciclass StressTests : public TestCaseGroup
76e5c31af7Sopenharmony_ci{
77e5c31af7Sopenharmony_cipublic:
78e5c31af7Sopenharmony_ci	StressTests (EglTestContext& eglTestCtx)
79e5c31af7Sopenharmony_ci		: TestCaseGroup(eglTestCtx, "stress", "EGL stress tests")
80e5c31af7Sopenharmony_ci	{
81e5c31af7Sopenharmony_ci	}
82e5c31af7Sopenharmony_ci
83e5c31af7Sopenharmony_ci	void init (void)
84e5c31af7Sopenharmony_ci	{
85e5c31af7Sopenharmony_ci		addChild(new MemoryStressTests(m_eglTestCtx));
86e5c31af7Sopenharmony_ci	}
87e5c31af7Sopenharmony_ci};
88e5c31af7Sopenharmony_ci
89e5c31af7Sopenharmony_ciclass PerformanceTests : public TestCaseGroup
90e5c31af7Sopenharmony_ci{
91e5c31af7Sopenharmony_cipublic:
92e5c31af7Sopenharmony_ci	PerformanceTests (EglTestContext& eglTestCtx)
93e5c31af7Sopenharmony_ci		: TestCaseGroup(eglTestCtx, "performance", "EGL performance tests")
94e5c31af7Sopenharmony_ci	{
95e5c31af7Sopenharmony_ci	}
96e5c31af7Sopenharmony_ci
97e5c31af7Sopenharmony_ci	void init (void)
98e5c31af7Sopenharmony_ci	{
99e5c31af7Sopenharmony_ci		addChild(new MakeCurrentPerfTests			(m_eglTestCtx));
100e5c31af7Sopenharmony_ci		addChild(new GLES2SharedRenderingPerfTests	(m_eglTestCtx));
101e5c31af7Sopenharmony_ci	}
102e5c31af7Sopenharmony_ci};
103e5c31af7Sopenharmony_ci
104e5c31af7Sopenharmony_ciclass FunctionalTests : public TestCaseGroup
105e5c31af7Sopenharmony_ci{
106e5c31af7Sopenharmony_cipublic:
107e5c31af7Sopenharmony_ci	FunctionalTests (EglTestContext& eglTestCtx)
108e5c31af7Sopenharmony_ci		: TestCaseGroup(eglTestCtx, "functional", "EGL functional tests")
109e5c31af7Sopenharmony_ci	{
110e5c31af7Sopenharmony_ci	}
111e5c31af7Sopenharmony_ci
112e5c31af7Sopenharmony_ci	void init (void)
113e5c31af7Sopenharmony_ci	{
114e5c31af7Sopenharmony_ci		addChild(new CreateContextTests			(m_eglTestCtx));
115e5c31af7Sopenharmony_ci		addChild(new QueryContextTests			(m_eglTestCtx));
116e5c31af7Sopenharmony_ci		addChild(new CreateSurfaceTests			(m_eglTestCtx));
117e5c31af7Sopenharmony_ci		addChild(new QuerySurfaceTests			(m_eglTestCtx));
118e5c31af7Sopenharmony_ci		addChild(new QueryConfigTests			(m_eglTestCtx));
119e5c31af7Sopenharmony_ci		addChild(new ChooseConfigTests			(m_eglTestCtx));
120e5c31af7Sopenharmony_ci		addChild(new ColorClearTests			(m_eglTestCtx));
121e5c31af7Sopenharmony_ci		addChild(new RenderTests				(m_eglTestCtx));
122e5c31af7Sopenharmony_ci		addChild(new ImageTests					(m_eglTestCtx));
123e5c31af7Sopenharmony_ci		addChild(new SharingTests				(m_eglTestCtx));
124e5c31af7Sopenharmony_ci		addChild(new NegativeApiTests			(m_eglTestCtx));
125e5c31af7Sopenharmony_ci		addChild(new FenceSyncTests				(m_eglTestCtx));
126e5c31af7Sopenharmony_ci		addChild(new MultiThreadedTests			(m_eglTestCtx));
127e5c31af7Sopenharmony_ci		addChild(new GetProcAddressTests		(m_eglTestCtx));
128e5c31af7Sopenharmony_ci		addChild(new PreservingSwapTests		(m_eglTestCtx));
129e5c31af7Sopenharmony_ci		addChild(new ClientExtensionTests		(m_eglTestCtx));
130e5c31af7Sopenharmony_ci		addChild(new CreateContextExtTests		(m_eglTestCtx));
131e5c31af7Sopenharmony_ci		addChild(new SurfacelessContextTests	(m_eglTestCtx));
132e5c31af7Sopenharmony_ci		addChild(new SwapBuffersTests			(m_eglTestCtx));
133e5c31af7Sopenharmony_ci		addChild(new NativeColorMappingTests	(m_eglTestCtx));
134e5c31af7Sopenharmony_ci		addChild(new NativeCoordMappingTests	(m_eglTestCtx));
135e5c31af7Sopenharmony_ci		addChild(new ReusableSyncTests			(m_eglTestCtx));
136e5c31af7Sopenharmony_ci		addChild(new ResizeTests				(m_eglTestCtx));
137e5c31af7Sopenharmony_ci		addChild(new BufferAgeTests				(m_eglTestCtx));
138e5c31af7Sopenharmony_ci		addChild(new PartialUpdateTests			(m_eglTestCtx));
139e5c31af7Sopenharmony_ci		addChild(new NegativePartialUpdateTests	(m_eglTestCtx));
140e5c31af7Sopenharmony_ci		addChild(new SwapBuffersWithDamageTests	(m_eglTestCtx));
141e5c31af7Sopenharmony_ci		addChild(createMultiContextTests		(m_eglTestCtx));
142e5c31af7Sopenharmony_ci		addChild(createThreadCleanUpTest		(m_eglTestCtx));
143e5c31af7Sopenharmony_ci		addChild(new MutableRenderBufferTests	(m_eglTestCtx));
144e5c31af7Sopenharmony_ci		addChild(createGetFrameTimestampsTests	(m_eglTestCtx));
145e5c31af7Sopenharmony_ci		addChild(createRobustnessTests			(m_eglTestCtx));
146e5c31af7Sopenharmony_ci		addChild(createWideColorTests			(m_eglTestCtx));
147e5c31af7Sopenharmony_ci		addChild(createHdrColorTests			(m_eglTestCtx));
148e5c31af7Sopenharmony_ci	}
149e5c31af7Sopenharmony_ci};
150e5c31af7Sopenharmony_ci
151e5c31af7Sopenharmony_ciclass TestCaseWrapper : public tcu::TestCaseExecutor
152e5c31af7Sopenharmony_ci{
153e5c31af7Sopenharmony_cipublic:
154e5c31af7Sopenharmony_ci	TestCaseWrapper (void)
155e5c31af7Sopenharmony_ci	{
156e5c31af7Sopenharmony_ci	}
157e5c31af7Sopenharmony_ci
158e5c31af7Sopenharmony_ci	~TestCaseWrapper (void)
159e5c31af7Sopenharmony_ci	{
160e5c31af7Sopenharmony_ci	}
161e5c31af7Sopenharmony_ci
162e5c31af7Sopenharmony_ci	void init (tcu::TestCase* testCase, const std::string&)
163e5c31af7Sopenharmony_ci	{
164e5c31af7Sopenharmony_ci		testCase->init();
165e5c31af7Sopenharmony_ci	}
166e5c31af7Sopenharmony_ci
167e5c31af7Sopenharmony_ci	void deinit (tcu::TestCase* testCase)
168e5c31af7Sopenharmony_ci	{
169e5c31af7Sopenharmony_ci		testCase->deinit();
170e5c31af7Sopenharmony_ci	}
171e5c31af7Sopenharmony_ci
172e5c31af7Sopenharmony_ci	tcu::TestNode::IterateResult iterate (tcu::TestCase* testCase)
173e5c31af7Sopenharmony_ci	{
174e5c31af7Sopenharmony_ci		return testCase->iterate();
175e5c31af7Sopenharmony_ci	}
176e5c31af7Sopenharmony_ci};
177e5c31af7Sopenharmony_ci
178e5c31af7Sopenharmony_cistatic const eglu::NativeDisplayFactory& getDefaultDisplayFactory (tcu::TestContext& testCtx)
179e5c31af7Sopenharmony_ci{
180e5c31af7Sopenharmony_ci	const eglu::NativeDisplayFactory& factory = eglu::selectNativeDisplayFactory(testCtx.getPlatform().getEGLPlatform().getNativeDisplayFactoryRegistry(), testCtx.getCommandLine());
181e5c31af7Sopenharmony_ci
182e5c31af7Sopenharmony_ci	return factory;
183e5c31af7Sopenharmony_ci}
184e5c31af7Sopenharmony_ci
185e5c31af7Sopenharmony_ciTestPackage::TestPackage (tcu::TestContext& testCtx)
186e5c31af7Sopenharmony_ci	: tcu::TestPackage	(testCtx, "dEQP-EGL", "dEQP EGL Tests")
187e5c31af7Sopenharmony_ci	, m_eglTestCtx		(DE_NULL)
188e5c31af7Sopenharmony_ci{
189e5c31af7Sopenharmony_ci}
190e5c31af7Sopenharmony_ci
191e5c31af7Sopenharmony_ciTestPackage::~TestPackage (void)
192e5c31af7Sopenharmony_ci{
193e5c31af7Sopenharmony_ci	// Destroy children first since destructors may access context.
194e5c31af7Sopenharmony_ci	TestNode::deinit();
195e5c31af7Sopenharmony_ci	delete m_eglTestCtx;
196e5c31af7Sopenharmony_ci}
197e5c31af7Sopenharmony_ci
198e5c31af7Sopenharmony_civoid TestPackage::init (void)
199e5c31af7Sopenharmony_ci{
200e5c31af7Sopenharmony_ci	DE_ASSERT(!m_eglTestCtx);
201e5c31af7Sopenharmony_ci	m_eglTestCtx = new EglTestContext(m_testCtx, getDefaultDisplayFactory(m_testCtx));
202e5c31af7Sopenharmony_ci
203e5c31af7Sopenharmony_ci	try
204e5c31af7Sopenharmony_ci	{
205e5c31af7Sopenharmony_ci		addChild(new InfoTests			(*m_eglTestCtx));
206e5c31af7Sopenharmony_ci		addChild(new FunctionalTests	(*m_eglTestCtx));
207e5c31af7Sopenharmony_ci		addChild(new PerformanceTests	(*m_eglTestCtx));
208e5c31af7Sopenharmony_ci		addChild(new StressTests		(*m_eglTestCtx));
209e5c31af7Sopenharmony_ci	}
210e5c31af7Sopenharmony_ci	catch (...)
211e5c31af7Sopenharmony_ci	{
212e5c31af7Sopenharmony_ci		delete m_eglTestCtx;
213e5c31af7Sopenharmony_ci		m_eglTestCtx = DE_NULL;
214e5c31af7Sopenharmony_ci
215e5c31af7Sopenharmony_ci		throw;
216e5c31af7Sopenharmony_ci	}
217e5c31af7Sopenharmony_ci}
218e5c31af7Sopenharmony_ci
219e5c31af7Sopenharmony_civoid TestPackage::deinit (void)
220e5c31af7Sopenharmony_ci{
221e5c31af7Sopenharmony_ci	tcu::TestNode::deinit();
222e5c31af7Sopenharmony_ci	delete m_eglTestCtx;
223e5c31af7Sopenharmony_ci	m_eglTestCtx = DE_NULL;
224e5c31af7Sopenharmony_ci}
225e5c31af7Sopenharmony_ci
226e5c31af7Sopenharmony_citcu::TestCaseExecutor* TestPackage::createExecutor (void) const
227e5c31af7Sopenharmony_ci{
228e5c31af7Sopenharmony_ci	return new TestCaseWrapper();
229e5c31af7Sopenharmony_ci}
230e5c31af7Sopenharmony_ci
231e5c31af7Sopenharmony_ci} // egl
232e5c31af7Sopenharmony_ci} // deqp
233