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