1 #ifndef _ES31CTEXTURESTORAGEMULTISAMPLEFUNCTIONALTESTS_HPP 2 #define _ES31CTEXTURESTORAGEMULTISAMPLEFUNCTIONALTESTS_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 es31cTextureStorageMultisampleFunctionalTests.hpp 29 * \brief Declares test classes for multisample texture functional conformance 30 * tests. (ES3.1 only) 31 */ /*-------------------------------------------------------------------*/ 32 33 #include "es31cTextureStorageMultisampleTests.hpp" 34 35 namespace glcts 36 { 37 /** Test case: Verify that blitting from a multi-sampled framebuffer object 38 * to a single-sampled framebuffer object. 39 */ 40 class MultisampleTextureFunctionalTestsBlittingTest : public glcts::TestCase 41 { 42 public: 43 /* Public methods */ 44 MultisampleTextureFunctionalTestsBlittingTest(Context& context); 45 46 virtual void deinit(); 47 virtual tcu::TestNode::IterateResult iterate(); 48 49 private: 50 /* Private variables */ 51 glw::GLuint dst_fbo_id; 52 glw::GLuint dst_to_color_id; 53 glw::GLuint dst_to_depth_stencil_id; 54 glw::GLuint src_fbo_id; 55 glw::GLuint src_to_color_id; 56 glw::GLuint src_to_depth_stencil_id; 57 }; 58 59 /** Test case: Verifies data rendered as a result of blitting depth multisample data 60 * to a single-sampled depth attachment is valid. 61 */ 62 class MultisampleTextureFunctionalTestsBlittingMultisampledDepthAttachmentTest : public glcts::TestCase 63 { 64 public: 65 /* Public methods */ 66 MultisampleTextureFunctionalTestsBlittingMultisampledDepthAttachmentTest(Context& context); 67 68 virtual void deinit(); 69 virtual tcu::TestNode::IterateResult iterate(); 70 71 private: 72 /* Private variables */ 73 glw::GLuint fbo_dst_id; 74 glw::GLuint fbo_src_id; 75 glw::GLuint fs_depth_preview_id; 76 glw::GLuint fs_id; 77 glw::GLuint po_depth_preview_id; 78 glw::GLuint po_id; 79 glw::GLuint to_dst_preview_id; 80 glw::GLuint to_dst_id; 81 glw::GLuint to_src_id; 82 glw::GLuint vao_id; 83 glw::GLuint vs_id; 84 }; 85 86 /** Test case: Verifies data rendered as a result of blitting integer multisample data 87 * to a single-sampled color attachment is valid. 88 */ 89 class MultisampleTextureFunctionalTestsBlittingMultisampledIntegerAttachmentTest : public glcts::TestCase 90 { 91 public: 92 /* Public methods */ 93 MultisampleTextureFunctionalTestsBlittingMultisampledIntegerAttachmentTest(Context& context); 94 95 virtual void deinit(); 96 virtual tcu::TestNode::IterateResult iterate(); 97 98 private: 99 /* Private variables */ 100 glw::GLuint dst_to_id; 101 glw::GLuint fbo_draw_id; 102 glw::GLuint fbo_read_id; 103 glw::GLuint fs_id; 104 glw::GLuint po_id; 105 glw::GLuint src_to_id; 106 glw::GLuint vs_id; 107 }; 108 109 /** Test case: Verify that blitting to a multisampled framebuffer object results 110 * in GL_INVALID_OPERATION error. 111 */ 112 class MultisampleTextureFunctionalTestsBlittingToMultisampledFBOIsForbiddenTest : public glcts::TestCase 113 { 114 public: 115 /* Public methods */ 116 MultisampleTextureFunctionalTestsBlittingToMultisampledFBOIsForbiddenTest(Context& context); 117 118 virtual void deinit(); 119 virtual tcu::TestNode::IterateResult iterate(); 120 121 private: 122 /* Private variables */ 123 glw::GLuint dst_to_id; 124 glw::GLuint fbo_draw_id; 125 glw::GLuint fbo_read_id; 126 glw::GLuint src_to_id; 127 }; 128 129 /** Test case: Verify sample masking mechanism for non-integer color-renderable internalformats used for 2D multisample textures */ 130 class MultisampleTextureFunctionalTestsSampleMaskingForNonIntegerColorRenderableTexturesTest : public glcts::TestCase 131 { 132 public: 133 /* Public methods */ 134 MultisampleTextureFunctionalTestsSampleMaskingForNonIntegerColorRenderableTexturesTest(Context& context); 135 136 virtual void deinit(); 137 virtual tcu::TestNode::IterateResult iterate(); 138 139 private: 140 /* Private methods */ 141 virtual void compileShader(glw::GLuint id, const glw::GLchar* source); 142 virtual void linkProgram(glw::GLuint id); 143 144 void initInternals(); 145 146 /* Private variables */ 147 glw::GLuint bo_id; 148 glw::GLuint fbo_id; 149 glw::GLuint fs_draw_id; 150 glw::GLuint po_draw_id; 151 glw::GLuint po_verify_id; 152 glw::GLuint tfo_id; 153 glw::GLuint to_2d_multisample_id; 154 glw::GLuint vs_draw_id; 155 glw::GLuint vs_verify_id; 156 }; 157 158 /** Test case: Verify sample masking mechanism for normalized/unsigned integer/signed integer color-renderable 159 * and depth-renderable internalformats used for 2D multisample textures */ 160 class MultisampleTextureFunctionalTestsSampleMaskingTexturesTest : public glcts::TestCase 161 { 162 public: 163 /* Public methods */ 164 MultisampleTextureFunctionalTestsSampleMaskingTexturesTest(Context& context); 165 166 virtual void deinit(); 167 virtual tcu::TestNode::IterateResult iterate(); 168 169 private: 170 /* Private methods */ 171 virtual void compileShader(glw::GLuint id, const glw::GLchar* source); 172 void initInternals(); 173 virtual void linkProgram(glw::GLuint id); 174 175 /* Private variables */ 176 glw::GLuint bo_id; 177 glw::GLuint fbo_id; 178 glw::GLuint fs_draw_id; 179 glw::GLuint po_draw_id; 180 glw::GLuint po_verify_id; 181 glw::GLuint tfo_id; 182 glw::GLuint to_2d_multisample_id; 183 glw::GLuint vs_draw_id; 184 glw::GLuint vs_verify_id; 185 }; 186 187 /** Test case: Verify 2D/2D array multisample texture size can be queried successfully 188 * from within fragment shaders. 189 */ 190 class MultisampleTextureFunctionalTestsTextureSizeFragmentShadersTest : public glcts::TestCase 191 { 192 public: 193 /* Public methods */ 194 MultisampleTextureFunctionalTestsTextureSizeFragmentShadersTest(Context& context); 195 196 virtual void deinit(); 197 virtual tcu::TestNode::IterateResult iterate(); 198 199 private: 200 /* Private variables */ 201 glw::GLuint fbo_id; 202 glw::GLuint fs_id; 203 glw::GLuint po_id; 204 glw::GLuint to_2d_multisample_id; 205 glw::GLuint to_2d_multisample_array_id; 206 glw::GLuint vs_id; 207 }; 208 209 /** Test case: Verify 2D/2D array multisample texture size can be queried successfully 210 * from within vertex shaders. 211 */ 212 class MultisampleTextureFunctionalTestsTextureSizeVertexShadersTest : public glcts::TestCase 213 { 214 public: 215 /* Public methods */ 216 MultisampleTextureFunctionalTestsTextureSizeVertexShadersTest(Context& context); 217 218 virtual void deinit(); 219 virtual tcu::TestNode::IterateResult iterate(); 220 221 private: 222 /* Private variables */ 223 glw::GLuint bo_id; 224 glw::GLuint fbo_id; 225 glw::GLuint fs_id; 226 glw::GLuint po_id; 227 glw::GLuint tfo_id; 228 glw::GLuint to_2d_multisample_id; 229 glw::GLuint to_2d_multisample_array_id; 230 glw::GLuint vs_2d_array_id; 231 glw::GLuint vs_2d_id; 232 }; 233 } /* glcts namespace */ 234 235 #endif // _ES31CTEXTURESTORAGEMULTISAMPLEFUNCTIONALTESTS_HPP 236