| // | |
| // Copyright 2019 The ANGLE Project Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // tes31Context_override.cpp: | |
| // Issue 3687: Overrides for dEQP's OpenGL ES 3.1 test context | |
| // | |
| // Keep the delta compared to dEQP at a minimum | |
| // clang-format off | |
| #include "tes31Context.hpp" | |
| #include "gluRenderContext.hpp" | |
| #include "gluRenderConfig.hpp" | |
| #include "gluFboRenderContext.hpp" | |
| #include "gluContextInfo.hpp" | |
| #include "gluDummyRenderContext.hpp" | |
| #include "tcuCommandLine.hpp" | |
| namespace deqp | |
| { | |
| namespace gles31 | |
| { | |
| Context::Context (tcu::TestContext& testCtx) | |
| : m_testCtx (testCtx) | |
| , m_renderCtx (DE_NULL) | |
| , m_contextInfo (DE_NULL) | |
| { | |
| if (m_testCtx.getCommandLine().getRunMode() == tcu::RUNMODE_EXECUTE) | |
| createRenderContext(); | |
| else | |
| { | |
| // \todo [2016-11-15 pyry] Many tests (erroneously) inspect context type | |
| // during test hierarchy construction. We should fix that | |
| // and revert dummy context to advertise unknown context type. | |
| m_renderCtx = new glu::DummyRenderContext(glu::ContextType(glu::ApiType::es(3,1))); | |
| } | |
| } | |
| Context::~Context (void) | |
| { | |
| destroyRenderContext(); | |
| } | |
| void Context::createRenderContext (void) | |
| { | |
| DE_ASSERT(!m_renderCtx && !m_contextInfo); | |
| try | |
| { | |
| // Issue 3687 | |
| // OpenGL ES 3.2 contexts are not supported yet, and the 3.2 context creation failure results in | |
| // tests that pass with the recreated 3.1 context being marked "fail". | |
| // Revert with Issue 3688 | |
| #if 0 | |
| try | |
| { | |
| m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 2)); | |
| } | |
| catch (...) | |
| { | |
| m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 1)); | |
| } | |
| #else | |
| // Override the original behavior (above) to only create a 3.1 context | |
| m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 1)); | |
| #endif | |
| m_contextInfo = glu::ContextInfo::create(*m_renderCtx); | |
| } | |
| catch (...) | |
| { | |
| destroyRenderContext(); | |
| throw; | |
| } | |
| } | |
| void Context::destroyRenderContext (void) | |
| { | |
| delete m_contextInfo; | |
| delete m_renderCtx; | |
| m_contextInfo = DE_NULL; | |
| m_renderCtx = DE_NULL; | |
| } | |
| const tcu::RenderTarget& Context::getRenderTarget (void) const | |
| { | |
| return m_renderCtx->getRenderTarget(); | |
| } | |
| } // gles31 | |
| } // deqp | |
| // clang-format on |