es31cTextureStorageMultisampleTexStorage2DMultisampleTests.hpp revision 48087f5f0eb08759ee763f98daf3b34becb74559
1#ifndef _ES31CTEXTURESTORAGEMULTISAMPLETEXSTORAGE2DMULTISAMPLETESTS_HPP 2#define _ES31CTEXTURESTORAGEMULTISAMPLETEXSTORAGE2DMULTISAMPLETESTS_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 */ /*! 28 * \file es31cTextureStorageMultisampleTexStorage2DMultisampleTests.hpp 29 * \brief Declares test classes for glTexStorage2DMultisample() conformance 30 * tests. (ES3.1 only) 31 */ /*--------------------------------------------------------------------*/ 32 33#include "es31cTextureStorageMultisampleTests.hpp" 34 35namespace glcts 36{ 37/** Test case: glTexStorage2DMultisample() requests to set up multisample textures using exactly the number of samples reported for a particular 38 * internal format by glGetInternalformativ() function should succeed. Using larger values should result in an GL_INVALID_OPERATION error. */ 39class MultisampleTextureTexStorage2DGeneralSamplesNumberTest : public glcts::TestCase 40{ 41public: 42 /* Public methods */ 43 MultisampleTextureTexStorage2DGeneralSamplesNumberTest(Context& context); 44 45 virtual void deinit(); 46 virtual void deinitInternalIteration(); 47 virtual void initInternalIteration(); 48 virtual tcu::TestNode::IterateResult iterate(); 49 50private: 51 /* Private methods and variables */ 52 glw::GLuint to_id; 53}; 54 55/** Test case: Invalid multisample texture sizes are rejected; border cases are correctly accepted. */ 56class MultisampleTextureTexStorage2DInvalidAndBorderCaseTextureSizesTest : public glcts::TestCase 57{ 58public: 59 /* Public methods */ 60 MultisampleTextureTexStorage2DInvalidAndBorderCaseTextureSizesTest(Context& context); 61 62 virtual void deinit(); 63 virtual tcu::TestNode::IterateResult iterate(); 64 65private: 66 /* Private methods */ 67 void initInternals(); 68 69 /* Private variables */ 70 glw::GLuint to_id; 71}; 72 73/** Test case: Requests to set up multisample textures for internal formats that are not color-renderable, depth-renderable and stencil-renderable result in GL_INVALID_ENUM error */ 74class MultisampleTextureTexStorage2DNonColorDepthOrStencilInternalFormatsTest : public glcts::TestCase 75{ 76public: 77 /* Public methods */ 78 MultisampleTextureTexStorage2DNonColorDepthOrStencilInternalFormatsTest(Context& context); 79 80 virtual void deinit(); 81 virtual void deinitInternalIteration(); 82 virtual void initInternalIteration(); 83 virtual tcu::TestNode::IterateResult iterate(); 84 85private: 86 /* Private variables */ 87 glw::GLuint to_id; 88}; 89 90/** Test case: reconfiguration of immutable 2D texture storage is forbidden and should result in GL_INVALID_OPERATION error. */ 91class MultisampleTextureTexStorage2DReconfigurationRejectedTest : public glcts::TestCase 92{ 93public: 94 /* Public methods */ 95 MultisampleTextureTexStorage2DReconfigurationRejectedTest(Context& context); 96 97 virtual void deinit(); 98 virtual void deinitTexture(glw::GLuint& to_id, glw::GLenum texture_target); 99 virtual void initTexture(glw::GLuint& to_id, glw::GLenum texture_target); 100 virtual tcu::TestNode::IterateResult iterate(); 101 102private: 103 /* Private methods */ 104 void initInternals(); 105 106 /* Private variables */ 107 glw::GLboolean gl_oes_texture_storage_multisample_2d_array_supported; 108 glw::GLuint to_id_2d; 109 glw::GLuint to_id_2d_array; 110}; 111 112/** Test case: GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES texture target is rejected and GL_INVALID_ENUM error code set */ 113class MultisampleTextureTexStorage2DTexture2DMultisampleArrayTest : public glcts::TestCase 114{ 115public: 116 /* Public methods */ 117 MultisampleTextureTexStorage2DTexture2DMultisampleArrayTest(Context& context); 118 119 virtual tcu::TestNode::IterateResult iterate(); 120 121private: 122 /* Private methods */ 123 void initInternals(); 124}; 125 126/** Test case: Requests to set up multisample color textures with unsupported number of samples are rejected with GL_INVALID_OPERATION error */ 127class MultisampleTextureTexStorage2DUnsupportedSamplesCountForColorTexturesTest : public glcts::TestCase 128{ 129public: 130 /* Public methods */ 131 MultisampleTextureTexStorage2DUnsupportedSamplesCountForColorTexturesTest(Context& context); 132 133 virtual void deinit(); 134 virtual void deinitInternalIteration(); 135 virtual void initInternalIteration(); 136 virtual tcu::TestNode::IterateResult iterate(); 137 138private: 139 /* Private variables */ 140 glw::GLuint to_id; 141}; 142 143/** Test case: Requests to set up multisample depth textures with unsupported number of samples are rejected with GL_INVALID_OPERATION error */ 144class MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthTexturesTest : public glcts::TestCase 145{ 146public: 147 /* Public methods */ 148 MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthTexturesTest(Context& context); 149 150 virtual void deinit(); 151 virtual void deinitInternalIteration(); 152 virtual void initInternalIteration(); 153 virtual tcu::TestNode::IterateResult iterate(); 154 155private: 156 /* Private variables */ 157 glw::GLuint to_id; 158}; 159 160/** Test case: Requests to set up multisample depth+stencil textures with unsupported number of samples are rejected with GL_INVALID_OPERATION error */ 161class MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthStencilTexturesTest : public glcts::TestCase 162{ 163public: 164 /* Public methods */ 165 MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthStencilTexturesTest(Context& context); 166 167 virtual void deinit(); 168 virtual void deinitInternalIteration(); 169 virtual void initInternalIteration(); 170 virtual tcu::TestNode::IterateResult iterate(); 171 172private: 173 /* Private variables */ 174 glw::GLuint to_id; 175}; 176 177/** Test case: Requests to set up multisample color/depth/stencil textures are accepted. */ 178class MultisampleTextureTexStorage2DValidCallsTest : public glcts::TestCase 179{ 180public: 181 /* Public methods */ 182 MultisampleTextureTexStorage2DValidCallsTest(Context& context); 183 184 virtual void deinit(); 185 virtual tcu::TestNode::IterateResult iterate(); 186 187private: 188 /* Private methods */ 189 void initInternals(); 190 191 /* Private variables */ 192 glw::GLuint to_id; 193}; 194 195/** Test case: zero sample requests are rejected by generating a GL_INVALID_VALUE error. */ 196class MultisampleTextureTexStorage2DZeroSampleTest : public glcts::TestCase 197{ 198public: 199 /* Public methods */ 200 MultisampleTextureTexStorage2DZeroSampleTest(Context& context); 201 202 virtual void deinit(); 203 virtual tcu::TestNode::IterateResult iterate(); 204 205private: 206 /* Private methods */ 207 void initInternals(); 208 209 /* Private variables */ 210 glw::GLuint to_id; 211}; 212 213} /* glcts namespace */ 214 215#endif // _ES31CTEXTURESTORAGEMULTISAMPLETEXSTORAGE2DMULTISAMPLETESTS_HPP 216