1e5c31af7Sopenharmony_ci/*------------------------------------------------------------------------- 2e5c31af7Sopenharmony_ci * OpenGL Conformance Test Suite 3e5c31af7Sopenharmony_ci * ----------------------------- 4e5c31af7Sopenharmony_ci * 5e5c31af7Sopenharmony_ci * Copyright (c) 2016 Google Inc. 6e5c31af7Sopenharmony_ci * Copyright (c) 2016 The Khronos Group Inc. 7e5c31af7Sopenharmony_ci * 8e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 9e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License. 10e5c31af7Sopenharmony_ci * You may obtain a copy of the License at 11e5c31af7Sopenharmony_ci * 12e5c31af7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 13e5c31af7Sopenharmony_ci * 14e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 15e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 16e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and 18e5c31af7Sopenharmony_ci * limitations under the License. 19e5c31af7Sopenharmony_ci * 20e5c31af7Sopenharmony_ci */ /*! 21e5c31af7Sopenharmony_ci * \file 22e5c31af7Sopenharmony_ci * \brief OpenGL Conformance Test Package Base Class 23e5c31af7Sopenharmony_ci */ /*-------------------------------------------------------------------*/ 24e5c31af7Sopenharmony_ci 25e5c31af7Sopenharmony_ci#include "glcTestPackage.hpp" 26e5c31af7Sopenharmony_ci#include "gluContextInfo.hpp" 27e5c31af7Sopenharmony_ci#include "tcuTestLog.hpp" 28e5c31af7Sopenharmony_ci#include "tcuCommandLine.hpp" 29e5c31af7Sopenharmony_ci#include "tcuWaiverUtil.hpp" 30e5c31af7Sopenharmony_ci#include "glwEnums.hpp" 31e5c31af7Sopenharmony_ci 32e5c31af7Sopenharmony_cinamespace deqp 33e5c31af7Sopenharmony_ci{ 34e5c31af7Sopenharmony_ci 35e5c31af7Sopenharmony_ciPackageContext::PackageContext(tcu::TestContext& testCtx, glu::ContextType renderContextType) 36e5c31af7Sopenharmony_ci : m_context (testCtx, renderContextType) 37e5c31af7Sopenharmony_ci , m_caseWrapper (m_context) 38e5c31af7Sopenharmony_ci{ 39e5c31af7Sopenharmony_ci} 40e5c31af7Sopenharmony_ci 41e5c31af7Sopenharmony_ciPackageContext::~PackageContext(void) 42e5c31af7Sopenharmony_ci{ 43e5c31af7Sopenharmony_ci} 44e5c31af7Sopenharmony_ci 45e5c31af7Sopenharmony_ciTestPackage::TestPackage(tcu::TestContext& testCtx, const char* name, const char* description, 46e5c31af7Sopenharmony_ci glu::ContextType renderContextType, const char* resourcesPath) 47e5c31af7Sopenharmony_ci : tcu::TestPackage (testCtx, name, description) 48e5c31af7Sopenharmony_ci , m_waiverMechanism (new tcu::WaiverUtil) 49e5c31af7Sopenharmony_ci , m_renderContextType (renderContextType) 50e5c31af7Sopenharmony_ci , m_packageCtx (DE_NULL) 51e5c31af7Sopenharmony_ci , m_archive (testCtx.getRootArchive(), resourcesPath) 52e5c31af7Sopenharmony_ci{ 53e5c31af7Sopenharmony_ci} 54e5c31af7Sopenharmony_ci 55e5c31af7Sopenharmony_ciTestPackage::~TestPackage(void) 56e5c31af7Sopenharmony_ci{ 57e5c31af7Sopenharmony_ci // Destroy all children before destroying context since destructors may access context. 58e5c31af7Sopenharmony_ci tcu::TestNode::deinit(); 59e5c31af7Sopenharmony_ci delete m_packageCtx; 60e5c31af7Sopenharmony_ci} 61e5c31af7Sopenharmony_ci 62e5c31af7Sopenharmony_civoid TestPackage::init(void) 63e5c31af7Sopenharmony_ci{ 64e5c31af7Sopenharmony_ci try 65e5c31af7Sopenharmony_ci { 66e5c31af7Sopenharmony_ci // Create context 67e5c31af7Sopenharmony_ci m_packageCtx = new PackageContext(m_testCtx, m_renderContextType); 68e5c31af7Sopenharmony_ci 69e5c31af7Sopenharmony_ci // Setup waiver mechanism 70e5c31af7Sopenharmony_ci if (m_testCtx.getCommandLine().getRunMode() == tcu::RUNMODE_EXECUTE) 71e5c31af7Sopenharmony_ci { 72e5c31af7Sopenharmony_ci Context& context = m_packageCtx->getContext(); 73e5c31af7Sopenharmony_ci const glu::ContextInfo& contextInfo = context.getContextInfo(); 74e5c31af7Sopenharmony_ci std::string vendor = contextInfo.getString(GL_VENDOR); 75e5c31af7Sopenharmony_ci std::string renderer = contextInfo.getString(GL_RENDERER); 76e5c31af7Sopenharmony_ci const tcu::CommandLine& commandLine = context.getTestContext().getCommandLine(); 77e5c31af7Sopenharmony_ci tcu::SessionInfo sessionInfo (vendor, renderer, commandLine.getInitialCmdLine()); 78e5c31af7Sopenharmony_ci m_waiverMechanism->setup(commandLine.getWaiverFileName(), m_name, vendor, renderer, sessionInfo); 79e5c31af7Sopenharmony_ci context.getTestContext().getLog().writeSessionInfo(sessionInfo.get()); 80e5c31af7Sopenharmony_ci } 81e5c31af7Sopenharmony_ci } 82e5c31af7Sopenharmony_ci catch (...) 83e5c31af7Sopenharmony_ci { 84e5c31af7Sopenharmony_ci delete m_packageCtx; 85e5c31af7Sopenharmony_ci m_packageCtx = DE_NULL; 86e5c31af7Sopenharmony_ci 87e5c31af7Sopenharmony_ci throw; 88e5c31af7Sopenharmony_ci } 89e5c31af7Sopenharmony_ci} 90e5c31af7Sopenharmony_ci 91e5c31af7Sopenharmony_civoid TestPackage::deinit(void) 92e5c31af7Sopenharmony_ci{ 93e5c31af7Sopenharmony_ci tcu::TestNode::deinit(); 94e5c31af7Sopenharmony_ci delete m_packageCtx; 95e5c31af7Sopenharmony_ci m_packageCtx = DE_NULL; 96e5c31af7Sopenharmony_ci} 97e5c31af7Sopenharmony_ci 98e5c31af7Sopenharmony_ci} // deqp 99