1*35238bceSAndroid Build Coastguard Worker #ifndef _GLCLIMITTEST_HPP 2*35238bceSAndroid Build Coastguard Worker #define _GLCLIMITTEST_HPP 3*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker * OpenGL Conformance Test Suite 5*35238bceSAndroid Build Coastguard Worker * ----------------------------- 6*35238bceSAndroid Build Coastguard Worker * 7*35238bceSAndroid Build Coastguard Worker * Copyright (c) 2017 The Khronos Group Inc. 8*35238bceSAndroid Build Coastguard Worker * 9*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 10*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 11*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 12*35238bceSAndroid Build Coastguard Worker * 13*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 14*35238bceSAndroid Build Coastguard Worker * 15*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 16*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 17*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 19*35238bceSAndroid Build Coastguard Worker * limitations under the License. 20*35238bceSAndroid Build Coastguard Worker * 21*35238bceSAndroid Build Coastguard Worker */ /*! 22*35238bceSAndroid Build Coastguard Worker * \file 23*35238bceSAndroid Build Coastguard Worker * \brief Limits tests. 24*35238bceSAndroid Build Coastguard Worker */ /*-------------------------------------------------------------------*/ 25*35238bceSAndroid Build Coastguard Worker 26*35238bceSAndroid Build Coastguard Worker #include "glcTestCase.hpp" 27*35238bceSAndroid Build Coastguard Worker #include "gluDefs.hpp" 28*35238bceSAndroid Build Coastguard Worker #include "glwDefs.hpp" 29*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp" 30*35238bceSAndroid Build Coastguard Worker #include "glwFunctions.hpp" 31*35238bceSAndroid Build Coastguard Worker #include "tcuCommandLine.hpp" 32*35238bceSAndroid Build Coastguard Worker #include "tcuTestLog.hpp" 33*35238bceSAndroid Build Coastguard Worker #include "tcuVector.hpp" 34*35238bceSAndroid Build Coastguard Worker #include "tcuVectorUtil.hpp" 35*35238bceSAndroid Build Coastguard Worker 36*35238bceSAndroid Build Coastguard Worker #include <string> 37*35238bceSAndroid Build Coastguard Worker 38*35238bceSAndroid Build Coastguard Worker namespace glcts 39*35238bceSAndroid Build Coastguard Worker { 40*35238bceSAndroid Build Coastguard Worker 41*35238bceSAndroid Build Coastguard Worker template <typename DataType> 42*35238bceSAndroid Build Coastguard Worker class LimitCase : public deqp::TestCase 43*35238bceSAndroid Build Coastguard Worker { 44*35238bceSAndroid Build Coastguard Worker public: 45*35238bceSAndroid Build Coastguard Worker LimitCase(deqp::Context &context, const char *caseName, uint32_t limitToken, DataType limitBoundary, 46*35238bceSAndroid Build Coastguard Worker bool isBoundaryMaximum, const char *glslVersion = "", const char *glslBuiltin = "", 47*35238bceSAndroid Build Coastguard Worker const char *glslExtension = ""); 48*35238bceSAndroid Build Coastguard Worker virtual ~LimitCase(void); 49*35238bceSAndroid Build Coastguard Worker 50*35238bceSAndroid Build Coastguard Worker tcu::TestNode::IterateResult iterate(void); 51*35238bceSAndroid Build Coastguard Worker 52*35238bceSAndroid Build Coastguard Worker protected: 53*35238bceSAndroid Build Coastguard Worker bool isWithinBoundary(DataType value, bool isBuiltin = false) const; 54*35238bceSAndroid Build Coastguard Worker std::string createShader() const; 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard Worker // those functions require specialization for some data types 57*35238bceSAndroid Build Coastguard Worker DataType getLimitValue(const glw::Functions &gl) const; 58*35238bceSAndroid Build Coastguard Worker std::string getGLSLDataType() const; 59*35238bceSAndroid Build Coastguard Worker bool isEqual(DataType a, DataType b) const; 60*35238bceSAndroid Build Coastguard Worker bool isGreater(DataType a, DataType b) const; 61*35238bceSAndroid Build Coastguard Worker bool isSmaller(DataType a, DataType b) const; 62*35238bceSAndroid Build Coastguard Worker 63*35238bceSAndroid Build Coastguard Worker private: 64*35238bceSAndroid Build Coastguard Worker LimitCase(const LimitCase &); // not allowed! 65*35238bceSAndroid Build Coastguard Worker LimitCase &operator=(const LimitCase &); // not allowed! 66*35238bceSAndroid Build Coastguard Worker 67*35238bceSAndroid Build Coastguard Worker void adjustBoundaryForMaxFragmentInterpolationOffset(); 68*35238bceSAndroid Build Coastguard Worker 69*35238bceSAndroid Build Coastguard Worker uint32_t m_limitToken; 70*35238bceSAndroid Build Coastguard Worker DataType m_limitBoundary; // min/max value 71*35238bceSAndroid Build Coastguard Worker bool m_isBoundaryMaximum; 72*35238bceSAndroid Build Coastguard Worker const std::string m_glslVersion; 73*35238bceSAndroid Build Coastguard Worker const std::string m_glslBuiltin; 74*35238bceSAndroid Build Coastguard Worker const std::string m_glslExtension; 75*35238bceSAndroid Build Coastguard Worker }; 76*35238bceSAndroid Build Coastguard Worker 77*35238bceSAndroid Build Coastguard Worker #include "glcLimitTest.inl" 78*35238bceSAndroid Build Coastguard Worker 79*35238bceSAndroid Build Coastguard Worker } // namespace glcts 80*35238bceSAndroid Build Coastguard Worker 81*35238bceSAndroid Build Coastguard Worker #endif // _GLCLIMITTEST_HPP 82