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 65namespace deqp 66{ 67namespace egl 68{ 69 70class StressTests : public TestCaseGroup 71{ 72public: 73 StressTests (EglTestContext& eglTestCtx) 74 : TestCaseGroup(eglTestCtx, "stress", "EGL stress tests") 75 { 76 } 77 78 void init (void) 79 { 80 addChild(new MemoryStressTests(m_eglTestCtx)); 81 } 82}; 83 84class PerformanceTests : public TestCaseGroup 85{ 86public: 87 PerformanceTests (EglTestContext& eglTestCtx) 88 : TestCaseGroup(eglTestCtx, "performance", "EGL performance tests") 89 { 90 } 91 92 void init (void) 93 { 94 addChild(new MakeCurrentPerfTests (m_eglTestCtx)); 95 addChild(new GLES2SharedRenderingPerfTests (m_eglTestCtx)); 96 } 97}; 98 99class FunctionalTests : public TestCaseGroup 100{ 101public: 102 FunctionalTests (EglTestContext& eglTestCtx) 103 : TestCaseGroup(eglTestCtx, "functional", "EGL functional tests") 104 { 105 } 106 107 void init (void) 108 { 109 addChild(new CreateContextTests (m_eglTestCtx)); 110 addChild(new QueryContextTests (m_eglTestCtx)); 111 addChild(new CreateSurfaceTests (m_eglTestCtx)); 112 addChild(new QuerySurfaceTests (m_eglTestCtx)); 113 addChild(new QueryConfigTests (m_eglTestCtx)); 114 addChild(new ChooseConfigTests (m_eglTestCtx)); 115 addChild(new ColorClearTests (m_eglTestCtx)); 116 addChild(new RenderTests (m_eglTestCtx)); 117 addChild(new ImageTests (m_eglTestCtx)); 118 addChild(new SharingTests (m_eglTestCtx)); 119 addChild(new NegativeApiTests (m_eglTestCtx)); 120 addChild(new FenceSyncTests (m_eglTestCtx)); 121 addChild(new MultiThreadedTests (m_eglTestCtx)); 122 addChild(new GetProcAddressTests (m_eglTestCtx)); 123 addChild(new PreservingSwapTests (m_eglTestCtx)); 124 addChild(new ClientExtensionTests (m_eglTestCtx)); 125 addChild(new CreateContextExtTests (m_eglTestCtx)); 126 addChild(new SurfacelessContextTests (m_eglTestCtx)); 127 addChild(new SwapBuffersTests (m_eglTestCtx)); 128 addChild(new NativeColorMappingTests (m_eglTestCtx)); 129 addChild(new NativeCoordMappingTests (m_eglTestCtx)); 130 addChild(new ReusableSyncTests (m_eglTestCtx)); 131 addChild(new ResizeTests (m_eglTestCtx)); 132 addChild(new BufferAgeTests (m_eglTestCtx)); 133 addChild(new PartialUpdateTests (m_eglTestCtx)); 134 addChild(new NegativePartialUpdateTests (m_eglTestCtx)); 135 addChild(new SwapBuffersWithDamageTests (m_eglTestCtx)); 136 addChild(createMultiContextTests (m_eglTestCtx)); 137 } 138}; 139 140class TestCaseWrapper : public tcu::TestCaseExecutor 141{ 142public: 143 TestCaseWrapper (void) 144 { 145 } 146 147 ~TestCaseWrapper (void) 148 { 149 } 150 151 void init (tcu::TestCase* testCase, const std::string&) 152 { 153 testCase->init(); 154 } 155 156 void deinit (tcu::TestCase* testCase) 157 { 158 testCase->deinit(); 159 } 160 161 tcu::TestNode::IterateResult iterate (tcu::TestCase* testCase) 162 { 163 return testCase->iterate(); 164 } 165}; 166 167static const eglu::NativeDisplayFactory& getDefaultDisplayFactory (tcu::TestContext& testCtx) 168{ 169 const eglu::NativeDisplayFactory& factory = eglu::selectNativeDisplayFactory(testCtx.getPlatform().getEGLPlatform().getNativeDisplayFactoryRegistry(), testCtx.getCommandLine()); 170 171 return factory; 172} 173 174TestPackage::TestPackage (tcu::TestContext& testCtx) 175 : tcu::TestPackage (testCtx, "dEQP-EGL", "dEQP EGL Tests") 176 , m_eglTestCtx (DE_NULL) 177{ 178} 179 180TestPackage::~TestPackage (void) 181{ 182 // Destroy children first since destructors may access context. 183 TestNode::deinit(); 184 delete m_eglTestCtx; 185} 186 187void TestPackage::init (void) 188{ 189 DE_ASSERT(!m_eglTestCtx); 190 m_eglTestCtx = new EglTestContext(m_testCtx, getDefaultDisplayFactory(m_testCtx)); 191 192 try 193 { 194 addChild(new InfoTests (*m_eglTestCtx)); 195 addChild(new FunctionalTests (*m_eglTestCtx)); 196 addChild(new PerformanceTests (*m_eglTestCtx)); 197 addChild(new StressTests (*m_eglTestCtx)); 198 } 199 catch (...) 200 { 201 delete m_eglTestCtx; 202 m_eglTestCtx = DE_NULL; 203 204 throw; 205 } 206} 207 208void TestPackage::deinit (void) 209{ 210 tcu::TestNode::deinit(); 211 delete m_eglTestCtx; 212 m_eglTestCtx = DE_NULL; 213} 214 215tcu::TestCaseExecutor* TestPackage::createExecutor (void) const 216{ 217 return new TestCaseWrapper(); 218} 219 220} // egl 221} // deqp 222