1 #ifndef _ESEXTCTEXTUREBUFFERERRORS_HPP 2 #define _ESEXTCTEXTUREBUFFERERRORS_HPP 3 /*------------------------------------------------------------------------- 4 * OpenGL Conformance Test Suite 5 * ----------------------------- 6 * 7 * Copyright (c) 2014-2016 The Khronos Group Inc. 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * 21 */ /*! 22 * \file 23 * \brief 24 */ /*-------------------------------------------------------------------*/ 25 26 /*! 27 * \file esextcTextureBufferErrors.hpp 28 * \brief TexBufferEXT and TexBufferRangeEXT errors (Test 7) 29 */ /*-------------------------------------------------------------------*/ 30 31 #include "../esextcTestCaseBase.hpp" 32 #include "gluShaderUtil.hpp" 33 #include "tcuDefs.hpp" 34 35 #include <vector> 36 37 namespace glcts 38 { 39 40 /* Implementation of (Test 7) from CTS_EXT_texture_buffer. Description follows: 41 * 42 * Test whether functions TexBufferEXT and TexBufferRangeEXT generate errors 43 * as specified in the extension specification. 44 * 45 * Category: API. 46 * Dependency with OES_texture_storage_multisample_2d_array 47 * 48 * Check if for all targets apart from TEXTURE_BUFFER_EXT functions 49 * TexBufferEXT and TexBufferRangeEXT report INVALID_ENUM error. 50 * 51 * Check if for GL_DEPTH_COMPONENT32F internal format functions 52 * TexBufferEXT and TexBufferRangeEXT report INVALID_ENUM error. 53 * 54 * Check if for buffer id not previously returned by genBuffers and 55 * not equal to zero functions TexBufferEXT and TexBufferRangeEXT report 56 * INVALID_OPERATION error. 57 * 58 * Check if for offset parameter that is negative, size parameter that is less 59 * than or equal to zero or offset + size that is greater than the value of 60 * GL_BUFFER_SIZE for the buffer object bound to TEXTURE_BUFFER_EXT target 61 * function TexBufferRangeEXT reports INVALID_VALUE error. 62 * 63 * Check if in case of offset parameter not being an integer multiple of 64 * value(TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT) function TexBufferRangeEXT 65 * reports INVALID_VALUE error. 66 */ 67 class TextureBufferErrors : public TestCaseBase 68 { 69 public: 70 /* Public methods */ 71 TextureBufferErrors(Context& context, const ExtParameters& extParams, const char* name, const char* description); 72 ~TextureBufferErrors()73 virtual ~TextureBufferErrors() 74 { 75 } 76 77 virtual void deinit(void); 78 virtual IterateResult iterate(void); 79 80 private: 81 /* Private methods */ 82 void initTest(void); 83 glw::GLboolean verifyError(const glw::GLenum expected_error, const char* description); 84 85 typedef std::vector<glw::GLenum> TargetsVector; 86 87 /* Private variables */ 88 glw::GLuint m_bo_id; /* Buffer Object */ 89 glw::GLuint m_tex_id; /* Texture Buffer Object Texture ID */ 90 TargetsVector m_texture_targets; /* Texture Targets */ 91 92 /* Private static constants */ 93 static const glw::GLint m_bo_size; /* Buffer object size */ 94 }; 95 96 } // namespace glcts 97 98 #endif // _ESEXTCTEXTUREBUFFERERRORS_HPP 99