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 } // namespace glcts
234 
235 #endif // _ES31CTEXTURESTORAGEMULTISAMPLEFUNCTIONALTESTS_HPP
236