1 #ifndef _ES31CTEXTURESTORAGEMULTISAMPLEFUNCTIONALTESTS_HPP
2 #define _ES31CTEXTURESTORAGEMULTISAMPLEFUNCTIONALTESTS_HPP
3 /*-------------------------------------------------------------------------
4 * OpenGL Conformance Test Suite
5 * -----------------------------
7 * Copyright (c) 2014-2016 The Khronos Group Inc.
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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.
24 */ /*-------------------------------------------------------------------*/
28 * \file es31cTextureStorageMultisampleFunctionalTests.hpp
29 * \brief Declares test classes for multisample texture functional conformance
31 */ /*-------------------------------------------------------------------*/
33 #include "es31cTextureStorageMultisampleTests.hpp"
37 /** Test case: Verify that blitting from a multi-sampled framebuffer object
38 * to a single-sampled framebuffer object.
40 class MultisampleTextureFunctionalTestsBlittingTest : public glcts::TestCase
44 MultisampleTextureFunctionalTestsBlittingTest(Context& context);
46 virtual void deinit();
47 virtual tcu::TestNode::IterateResult iterate();
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;
59 /** Test case: Verifies data rendered as a result of blitting depth multisample data
60 * to a single-sampled depth attachment is valid.
62 class MultisampleTextureFunctionalTestsBlittingMultisampledDepthAttachmentTest : public glcts::TestCase
66 MultisampleTextureFunctionalTestsBlittingMultisampledDepthAttachmentTest(Context& context);
68 virtual void deinit();
69 virtual tcu::TestNode::IterateResult iterate();
72 /* Private variables */
73 glw::GLuint fbo_dst_id;
74 glw::GLuint fbo_src_id;
75 glw::GLuint fs_depth_preview_id;
77 glw::GLuint po_depth_preview_id;
79 glw::GLuint to_dst_preview_id;
80 glw::GLuint to_dst_id;
81 glw::GLuint to_src_id;
86 /** Test case: Verifies data rendered as a result of blitting integer multisample data
87 * to a single-sampled color attachment is valid.
89 class MultisampleTextureFunctionalTestsBlittingMultisampledIntegerAttachmentTest : public glcts::TestCase
93 MultisampleTextureFunctionalTestsBlittingMultisampledIntegerAttachmentTest(Context& context);
95 virtual void deinit();
96 virtual tcu::TestNode::IterateResult iterate();
99 /* Private variables */
100 glw::GLuint dst_to_id;
101 glw::GLuint fbo_draw_id;
102 glw::GLuint fbo_read_id;
105 glw::GLuint src_to_id;
109 /** Test case: Verify that blitting to a multisampled framebuffer object results
110 * in GL_INVALID_OPERATION error.
112 class MultisampleTextureFunctionalTestsBlittingToMultisampledFBOIsForbiddenTest : public glcts::TestCase
116 MultisampleTextureFunctionalTestsBlittingToMultisampledFBOIsForbiddenTest(Context& context);
118 virtual void deinit();
119 virtual tcu::TestNode::IterateResult iterate();
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;
129 /** Test case: Verify sample masking mechanism for non-integer color-renderable internalformats used for 2D multisample textures */
130 class MultisampleTextureFunctionalTestsSampleMaskingForNonIntegerColorRenderableTexturesTest : public glcts::TestCase
134 MultisampleTextureFunctionalTestsSampleMaskingForNonIntegerColorRenderableTexturesTest(Context& context);
136 virtual void deinit();
137 virtual tcu::TestNode::IterateResult iterate();
140 /* Private methods */
141 virtual void compileShader(glw::GLuint id, const glw::GLchar* source);
142 virtual void linkProgram(glw::GLuint id);
144 void initInternals();
146 /* Private variables */
149 glw::GLuint fs_draw_id;
150 glw::GLuint po_draw_id;
151 glw::GLuint po_verify_id;
153 glw::GLuint to_2d_multisample_id;
154 glw::GLuint vs_draw_id;
155 glw::GLuint vs_verify_id;
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
164 MultisampleTextureFunctionalTestsSampleMaskingTexturesTest(Context& context);
166 virtual void deinit();
167 virtual tcu::TestNode::IterateResult iterate();
170 /* Private methods */
171 virtual void compileShader(glw::GLuint id, const glw::GLchar* source);
172 void initInternals();
173 virtual void linkProgram(glw::GLuint id);
175 /* Private variables */
178 glw::GLuint fs_draw_id;
179 glw::GLuint po_draw_id;
180 glw::GLuint po_verify_id;
182 glw::GLuint to_2d_multisample_id;
183 glw::GLuint vs_draw_id;
184 glw::GLuint vs_verify_id;
187 /** Test case: Verify 2D/2D array multisample texture size can be queried successfully
188 * from within fragment shaders.
190 class MultisampleTextureFunctionalTestsTextureSizeFragmentShadersTest : public glcts::TestCase
194 MultisampleTextureFunctionalTestsTextureSizeFragmentShadersTest(Context& context);
196 virtual void deinit();
197 virtual tcu::TestNode::IterateResult iterate();
200 /* Private variables */
204 glw::GLuint to_2d_multisample_id;
205 glw::GLuint to_2d_multisample_array_id;
209 /** Test case: Verify 2D/2D array multisample texture size can be queried successfully
210 * from within vertex shaders.
212 class MultisampleTextureFunctionalTestsTextureSizeVertexShadersTest : public glcts::TestCase
216 MultisampleTextureFunctionalTestsTextureSizeVertexShadersTest(Context& context);
218 virtual void deinit();
219 virtual tcu::TestNode::IterateResult iterate();
222 /* Private variables */
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;
233 } /* glcts namespace */
235 #endif // _ES31CTEXTURESTORAGEMULTISAMPLEFUNCTIONALTESTS_HPP