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