1/*------------------------------------------------------------------------- 2 * drawElements Quality Program OpenGL ES 3.1 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 Shared structures for ES 3.1 negative API tests 22 *//*--------------------------------------------------------------------*/ 23 24#include "es31fNegativeTestShared.hpp" 25 26#include "tcuResultCollector.hpp" 27 28#include "gluContextInfo.hpp" 29#include "gluRenderContext.hpp" 30#include "glwFunctions.hpp" 31 32namespace deqp 33{ 34namespace gles31 35{ 36namespace Functional 37{ 38namespace NegativeTestShared 39{ 40 41using glw::GLenum; 42using tcu::TestLog; 43using std::string; 44 45ErrorCase::ErrorCase (Context& ctx, const char* name, const char* desc) 46 : TestCase(ctx, name, desc) 47{ 48} 49 50NegativeTestContext::NegativeTestContext (ErrorCase& host, 51 glu::RenderContext& renderCtx, 52 const glu::ContextInfo& ctxInfo, 53 tcu::TestLog& log, 54 tcu::ResultCollector& results, 55 bool enableLogging_) 56 : glu::CallLogWrapper (renderCtx.getFunctions(), log) 57 , m_host (host) 58 , m_renderCtx (renderCtx) 59 , m_ctxInfo (ctxInfo) 60 , m_results (results) 61 , m_openSections (0) 62{ 63 enableLogging(enableLogging_); 64} 65 66NegativeTestContext::~NegativeTestContext () 67{ 68 while (m_openSections--) 69 getLog() << TestLog::EndSection; 70} 71 72void NegativeTestContext::fail (const string& msg) 73{ 74 m_results.addResult(QP_TEST_RESULT_FAIL, msg); 75} 76 77int NegativeTestContext::getInteger (GLenum pname) const 78{ 79 int retval = 0; 80 m_renderCtx.getFunctions().getIntegerv(pname, &retval); 81 return retval; 82} 83 84void NegativeTestContext::beginSection (const string& desc) 85{ 86 if (isLoggingEnabled()) 87 { 88 getLog() << TestLog::Section("callstream", desc); 89 m_openSections++; 90 } 91} 92 93void NegativeTestContext::endSection (void) 94{ 95 if (isLoggingEnabled()) 96 { 97 DE_ASSERT (m_openSections > 0); 98 getLog() << TestLog::EndSection; 99 m_openSections--; 100 } 101} 102 103void NegativeTestContext::expectError (GLenum error) 104{ 105 m_host.expectError(error, error); 106} 107 108void NegativeTestContext::expectError (GLenum error0, GLenum error1) 109{ 110 m_host.expectError(error0, error1); 111} 112 113bool NegativeTestContext::isShaderSupported (glu::ShaderType shaderType) 114{ 115 if (contextSupports(getRenderContext().getType(), glu::ApiType::es(3, 2))) 116 return true; 117 118 switch (shaderType) 119 { 120 case glu::SHADERTYPE_GEOMETRY: 121 return getContextInfo().isExtensionSupported("GL_EXT_geometry_shader"); 122 case glu::SHADERTYPE_TESSELLATION_CONTROL: 123 case glu::SHADERTYPE_TESSELLATION_EVALUATION: 124 return getContextInfo().isExtensionSupported("GL_EXT_tessellation_shader"); 125 default: 126 return true; 127 } 128} 129 130bool NegativeTestContext::isExtensionSupported (std::string extension) 131{ 132 return getContextInfo().isExtensionSupported(extension.c_str()); 133} 134 135} // NegativeTestShared 136} // Functional 137} // gles31 138} // deqp 139