/*------------------------------------------------------------------------- * drawElements Quality Program OpenGL ES 3.1 Module * ------------------------------------------------- * * Copyright 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *//*! * \file * \brief Shared structures for ES 3.1 negative API tests *//*--------------------------------------------------------------------*/ #include "es31fNegativeTestShared.hpp" #include "tcuResultCollector.hpp" #include "gluContextInfo.hpp" #include "gluRenderContext.hpp" #include "glwFunctions.hpp" namespace deqp { namespace gles31 { namespace Functional { namespace NegativeTestShared { using glw::GLenum; using tcu::TestLog; using std::string; ErrorCase::ErrorCase (Context& ctx, const char* name, const char* desc) : TestCase(ctx, name, desc) { } NegativeTestContext::NegativeTestContext (ErrorCase& host, glu::RenderContext& renderCtx, const glu::ContextInfo& ctxInfo, tcu::TestLog& log, tcu::ResultCollector& results, bool enableLogging_) : glu::CallLogWrapper (renderCtx.getFunctions(), log) , m_host (host) , m_renderCtx (renderCtx) , m_ctxInfo (ctxInfo) , m_results (results) , m_openSections (0) { enableLogging(enableLogging_); } NegativeTestContext::~NegativeTestContext () { while (m_openSections--) getLog() << TestLog::EndSection; } void NegativeTestContext::fail (const string& msg) { m_results.addResult(QP_TEST_RESULT_FAIL, msg); } int NegativeTestContext::getInteger (GLenum pname) const { int retval = 0; m_renderCtx.getFunctions().getIntegerv(pname, &retval); return retval; } void NegativeTestContext::beginSection (const string& desc) { if (isLoggingEnabled()) { getLog() << TestLog::Section("callstream", desc); m_openSections++; } } void NegativeTestContext::endSection (void) { if (isLoggingEnabled()) { DE_ASSERT (m_openSections > 0); getLog() << TestLog::EndSection; m_openSections--; } } void NegativeTestContext::expectError (GLenum error) { m_host.expectError(error, error); } void NegativeTestContext::expectError (GLenum error0, GLenum error1) { m_host.expectError(error0, error1); } bool NegativeTestContext::isShaderSupported (glu::ShaderType shaderType) { if (contextSupports(getRenderContext().getType(), glu::ApiType::es(3, 2))) return true; switch (shaderType) { case glu::SHADERTYPE_GEOMETRY: return getContextInfo().isExtensionSupported("GL_EXT_geometry_shader"); case glu::SHADERTYPE_TESSELLATION_CONTROL: case glu::SHADERTYPE_TESSELLATION_EVALUATION: return getContextInfo().isExtensionSupported("GL_EXT_tessellation_shader"); default: return true; } } bool NegativeTestContext::isExtensionSupported (std::string extension) { return getContextInfo().isExtensionSupported(extension.c_str()); } } // NegativeTestShared } // Functional } // gles31 } // deqp