1e5c31af7Sopenharmony_ci#ifndef _ES31CLAYOUTBINDINGTESTS_HPP 2e5c31af7Sopenharmony_ci#define _ES31CLAYOUTBINDINGTESTS_HPP 3e5c31af7Sopenharmony_ci/*------------------------------------------------------------------------- 4e5c31af7Sopenharmony_ci * OpenGL Conformance Test Suite 5e5c31af7Sopenharmony_ci * ----------------------------- 6e5c31af7Sopenharmony_ci * 7e5c31af7Sopenharmony_ci * Copyright (c) 2014-2016 The Khronos Group Inc. 8e5c31af7Sopenharmony_ci * 9e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 10e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License. 11e5c31af7Sopenharmony_ci * You may obtain a copy of the License at 12e5c31af7Sopenharmony_ci * 13e5c31af7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 14e5c31af7Sopenharmony_ci * 15e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 16e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 17e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and 19e5c31af7Sopenharmony_ci * limitations under the License. 20e5c31af7Sopenharmony_ci * 21e5c31af7Sopenharmony_ci */ /*! 22e5c31af7Sopenharmony_ci * \file 23e5c31af7Sopenharmony_ci * \brief 24e5c31af7Sopenharmony_ci */ /*-------------------------------------------------------------------*/ 25e5c31af7Sopenharmony_ci 26e5c31af7Sopenharmony_ci#include "glcTestCase.hpp" 27e5c31af7Sopenharmony_ci#include "gluShaderUtil.hpp" 28e5c31af7Sopenharmony_ci#include "tcuDefs.hpp" 29e5c31af7Sopenharmony_ci#include "tes31TestCase.hpp" 30e5c31af7Sopenharmony_ci 31e5c31af7Sopenharmony_cinamespace glcts 32e5c31af7Sopenharmony_ci{ 33e5c31af7Sopenharmony_ci 34e5c31af7Sopenharmony_ci//========================================================================= 35e5c31af7Sopenharmony_ci//= utility macros/templates 36e5c31af7Sopenharmony_ci//========================================================================= 37e5c31af7Sopenharmony_citemplate <typename T, size_t N> 38e5c31af7Sopenharmony_cistd::vector<T> makeVector(const T (&data)[N]) 39e5c31af7Sopenharmony_ci{ 40e5c31af7Sopenharmony_ci return std::vector<T>(data, data + N); 41e5c31af7Sopenharmony_ci} 42e5c31af7Sopenharmony_ci 43e5c31af7Sopenharmony_cienum eStageType 44e5c31af7Sopenharmony_ci{ 45e5c31af7Sopenharmony_ci VertexShader, 46e5c31af7Sopenharmony_ci FragmentShader, 47e5c31af7Sopenharmony_ci ComputeShader 48e5c31af7Sopenharmony_ci}; 49e5c31af7Sopenharmony_ci 50e5c31af7Sopenharmony_cistruct StageType 51e5c31af7Sopenharmony_ci{ 52e5c31af7Sopenharmony_ci const char* name; 53e5c31af7Sopenharmony_ci eStageType type; 54e5c31af7Sopenharmony_ci}; 55e5c31af7Sopenharmony_ci 56e5c31af7Sopenharmony_cienum eSurfaceType 57e5c31af7Sopenharmony_ci{ 58e5c31af7Sopenharmony_ci AtomicCounter, 59e5c31af7Sopenharmony_ci Texture, 60e5c31af7Sopenharmony_ci Image, 61e5c31af7Sopenharmony_ci UniformBlock, 62e5c31af7Sopenharmony_ci ShaderStorageBuffer 63e5c31af7Sopenharmony_ci}; 64e5c31af7Sopenharmony_ci 65e5c31af7Sopenharmony_cienum eTextureType 66e5c31af7Sopenharmony_ci{ 67e5c31af7Sopenharmony_ci None, 68e5c31af7Sopenharmony_ci OneD, 69e5c31af7Sopenharmony_ci TwoD, 70e5c31af7Sopenharmony_ci ThreeD, 71e5c31af7Sopenharmony_ci OneDArray, 72e5c31af7Sopenharmony_ci TwoDArray 73e5c31af7Sopenharmony_ci}; 74e5c31af7Sopenharmony_ci 75e5c31af7Sopenharmony_cistruct LayoutBindingParameters 76e5c31af7Sopenharmony_ci{ 77e5c31af7Sopenharmony_ci char const* keyword; // uniform, buffer 78e5c31af7Sopenharmony_ci eSurfaceType surface_type; // Texture, Image... 79e5c31af7Sopenharmony_ci eTextureType texture_type; 80e5c31af7Sopenharmony_ci char const* vector_type; // lookup vector type 81e5c31af7Sopenharmony_ci char const* uniform_type; // sampler2D, image2D... 82e5c31af7Sopenharmony_ci char const* coord_vector_type; // coord vector type 83e5c31af7Sopenharmony_ci char const* access_function; // texture(), imageLoad()... 84e5c31af7Sopenharmony_ci}; 85e5c31af7Sopenharmony_ci 86e5c31af7Sopenharmony_ciclass LayoutBindingTests : public TestCaseGroup 87e5c31af7Sopenharmony_ci{ 88e5c31af7Sopenharmony_cipublic: 89e5c31af7Sopenharmony_ci LayoutBindingTests(glcts::Context& context, glu::GLSLVersion glslVersion); 90e5c31af7Sopenharmony_ci ~LayoutBindingTests(void); 91e5c31af7Sopenharmony_ci 92e5c31af7Sopenharmony_ci void init(void); 93e5c31af7Sopenharmony_ci 94e5c31af7Sopenharmony_ciprivate: 95e5c31af7Sopenharmony_ci LayoutBindingTests(const LayoutBindingTests& other); 96e5c31af7Sopenharmony_ci LayoutBindingTests& operator=(const LayoutBindingTests& other); 97e5c31af7Sopenharmony_ci 98e5c31af7Sopenharmony_ci std::string createTestName(const StageType& stageType, const LayoutBindingParameters& testArgs); 99e5c31af7Sopenharmony_ci 100e5c31af7Sopenharmony_ciprivate: 101e5c31af7Sopenharmony_ci glu::GLSLVersion m_glslVersion; 102e5c31af7Sopenharmony_ci 103e5c31af7Sopenharmony_ciprivate: 104e5c31af7Sopenharmony_ci static StageType stageTypes[]; 105e5c31af7Sopenharmony_ci static LayoutBindingParameters test_args[]; 106e5c31af7Sopenharmony_ci}; 107e5c31af7Sopenharmony_ci 108e5c31af7Sopenharmony_ci} // glcts 109e5c31af7Sopenharmony_ci 110e5c31af7Sopenharmony_ci#endif // _ES31CLAYOUTBINDINGTESTS_HPP 111