Merge "Report tests using Draw*BaseVertex as NotSupported" am: f96636fdfa
[platform/upstream/VK-GL-CTS.git] / external / openglcts / modules / gles31 / es31cTextureStorageMultisampleGetTexLevelParameterifvTests.hpp
1 #ifndef _ES31CTEXTURESTORAGEMULTISAMPLEGETTEXLEVELPARAMETERIFVTESTS_HPP
2 #define _ES31CTEXTURESTORAGEMULTISAMPLEGETTEXLEVELPARAMETERIFVTESTS_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  es31cTextureStorageMultisampleGetTexLevelParameterifvTests.hpp
29  * \brief Declares test classes for glGetTexLevelParameter{i, f}v() conformance
30  *        tests. (ES3.1 only)
31  */ /*-------------------------------------------------------------------*/
32
33 #include "es31cTextureStorageMultisampleTests.hpp"
34 #include "glwEnums.hpp"
35
36 namespace glcts
37 {
38 /** Test case: Verifies glGetTexLevelParameter{if}v() entry-points work correctly for
39  *             all ES3.1 texture targets.
40  **/
41 class MultisampleTextureGetTexLevelParametervFunctionalTest : public glcts::TestCase
42 {
43 public:
44         /* Public methods */
45         MultisampleTextureGetTexLevelParametervFunctionalTest(Context& context);
46
47         virtual void                                             deinit();
48         virtual tcu::TestNode::IterateResult iterate();
49
50 private:
51         typedef struct texture_properties
52         {
53                 glw::GLint       depth;
54                 glw::GLboolean fixedsamplelocations;
55                 glw::GLenum     format;
56                 glw::GLint       height;
57                 glw::GLenum     internalformat;
58                 bool               is_2d_texture;
59                 bool               is_cm_texture;
60                 bool               is_multisample_texture;
61                 glw::GLint       samples;
62                 glw::GLenum     target;
63                 glw::GLuint*   to_id_ptr;
64                 glw::GLenum     type;
65                 glw::GLenum     width;
66
67                 glw::GLint                              expected_compressed;
68                 glw::GLint                              expected_texture_alpha_size;
69                 std::vector<glw::GLint> expected_texture_alpha_types;
70                 glw::GLint                              expected_texture_blue_size;
71                 std::vector<glw::GLint> expected_texture_blue_types;
72                 glw::GLint                              expected_texture_depth;
73                 glw::GLint                              expected_texture_depth_size;
74                 std::vector<glw::GLint> expected_texture_depth_types;
75                 glw::GLint                              expected_texture_fixed_sample_locations;
76                 glw::GLint                              expected_texture_green_size;
77                 std::vector<glw::GLint> expected_texture_green_types;
78                 glw::GLint                              expected_texture_height;
79                 glw::GLint                              expected_texture_internal_format;
80                 glw::GLint                              expected_texture_red_size;
81                 std::vector<glw::GLint> expected_texture_red_types;
82                 glw::GLint                              expected_texture_samples;
83                 glw::GLint                              expected_texture_shared_size;
84                 glw::GLint                              expected_texture_stencil_size;
85                 glw::GLint                              expected_texture_width;
86
87                 texture_properties()
88                         : depth(0)
89                         , fixedsamplelocations(GL_FALSE)
90                         , format(0)
91                         , height(0)
92                         , internalformat(0)
93                         , is_2d_texture(false)
94                         , is_cm_texture(false)
95                         , is_multisample_texture(false)
96                         , samples(0)
97                         , target(GL_NONE)
98                         , to_id_ptr(NULL)
99                         , type(0)
100                         , width(0)
101                         , expected_compressed(0)
102                         , expected_texture_alpha_size(0)
103                         , expected_texture_blue_size(0)
104                         , expected_texture_depth(0)
105                         , expected_texture_depth_size(0)
106                         , expected_texture_fixed_sample_locations(0)
107                         , expected_texture_green_size(0)
108                         , expected_texture_height(0)
109                         , expected_texture_internal_format(0)
110                         , expected_texture_red_size(0)
111                         , expected_texture_samples(0)
112                         , expected_texture_shared_size(0)
113                         , expected_texture_stencil_size(0)
114                         , expected_texture_width(0)
115                 {
116                         /* Left blank intentionally */
117                 }
118         } _texture_properties;
119
120         /* Private variables */
121         glw::GLboolean gl_oes_texture_storage_multisample_2d_array_supported;
122         glw::GLuint     to_2d;
123         glw::GLuint     to_2d_array;
124         glw::GLuint     to_2d_multisample;
125         glw::GLuint     to_2d_multisample_array;
126         glw::GLuint     to_3d;
127         glw::GLuint     to_cubemap;
128 };
129
130 /** Test case: Verifies glGetTexLevelParameter{if}v() entry-points work correctly for
131  *             maximum LOD.
132  *
133  **/
134 class MultisampleTextureGetTexLevelParametervWorksForMaximumLodTest : public glcts::TestCase
135 {
136 public:
137         /* Public methods */
138         MultisampleTextureGetTexLevelParametervWorksForMaximumLodTest(Context& context);
139
140         virtual void                                             deinit();
141         virtual tcu::TestNode::IterateResult iterate();
142
143 private:
144         /* Private variables */
145         glw::GLboolean gl_oes_texture_storage_multisample_2d_array_supported;
146         glw::GLuint     to_id;
147 };
148
149 /** Test case: GL_INVALID_ENUM is reported for invalid texture target. */
150 class MultisampleTextureGetTexLevelParametervInvalidTextureTargetRejectedTest : public glcts::TestCase
151 {
152 public:
153         /* Public methods */
154         MultisampleTextureGetTexLevelParametervInvalidTextureTargetRejectedTest(Context& context);
155
156         virtual void                                             deinit();
157         virtual tcu::TestNode::IterateResult iterate();
158
159 private:
160         /* Private variables */
161         glw::GLfloat float_data;
162         glw::GLint   int_data;
163 };
164
165 /** Test case: GL_INVALID_VALUE is reported for invalid value argument. */
166 class MultisampleTextureGetTexLevelParametervInvalidValueArgumentRejectedTest : public glcts::TestCase
167 {
168 public:
169         /* Public methods */
170         MultisampleTextureGetTexLevelParametervInvalidValueArgumentRejectedTest(Context& context);
171
172         virtual void                                             deinit();
173         virtual tcu::TestNode::IterateResult iterate();
174
175 private:
176         /* Private variables */
177         glw::GLfloat float_data;
178         glw::GLint   int_data;
179 };
180
181 /** Test case: GL_INVALID_VALUE is reported for negative <lod> argument value. */
182 class MultisampleTextureGetTexLevelParametervNegativeLodIsRejectedTest : public glcts::TestCase
183 {
184 public:
185         /* Public methods */
186         MultisampleTextureGetTexLevelParametervNegativeLodIsRejectedTest(Context& context);
187
188         virtual void                                             deinit();
189         virtual tcu::TestNode::IterateResult iterate();
190
191 private:
192         /* Private methods */
193         void initInternals();
194
195         /* Private variables */
196         glw::GLfloat float_data;
197         glw::GLint   int_data;
198         glw::GLuint  to_id;
199 };
200
201 } /* glcts namespace */
202
203 #endif // _ES31CTEXTURESTORAGEMULTISAMPLEGETTEXLEVELPARAMETERIFVTESTS_HPP