Fix negative CompressedTexImage2D tests am: 9de005f035 am: 958ab8f9cb am: b42217f8ce
[platform/upstream/VK-GL-CTS.git] / external / openglcts / modules / gles31 / es31cTextureStorageMultisampleFunctionalTests.hpp
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