• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _ES31CTEXTURESTORAGEMULTISAMPLETEXSTORAGE2DMULTISAMPLETESTS_HPP
2 #define _ES31CTEXTURESTORAGEMULTISAMPLETEXSTORAGE2DMULTISAMPLETESTS_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  es31cTextureStorageMultisampleTexStorage2DMultisampleTests.hpp
29  * \brief Declares test classes for glTexStorage2DMultisample() conformance
30  *        tests. (ES3.1 only)
31  */ /*-------------------------------------------------------------------*/
32 
33 #include "es31cTextureStorageMultisampleTests.hpp"
34 
35 namespace glcts
36 {
37 /** Test case: glTexStorage2DMultisample() requests to set up multisample textures using exactly the number of samples reported for a particular
38  *  internal format by glGetInternalformativ() function should succeed. Using larger values should result in an GL_INVALID_OPERATION error. */
39 class MultisampleTextureTexStorage2DGeneralSamplesNumberTest : public glcts::TestCase
40 {
41 public:
42     /* Public methods */
43     MultisampleTextureTexStorage2DGeneralSamplesNumberTest(Context &context);
44 
45     virtual void deinit();
46     virtual void deinitInternalIteration();
47     virtual void initInternalIteration();
48     virtual tcu::TestNode::IterateResult iterate();
49 
50 private:
51     /* Private methods and variables */
52     glw::GLuint to_id;
53 };
54 
55 /** Test case: Invalid multisample texture sizes are rejected; border cases are correctly accepted. */
56 class MultisampleTextureTexStorage2DInvalidAndBorderCaseTextureSizesTest : public glcts::TestCase
57 {
58 public:
59     /* Public methods */
60     MultisampleTextureTexStorage2DInvalidAndBorderCaseTextureSizesTest(Context &context);
61 
62     virtual void deinit();
63     virtual tcu::TestNode::IterateResult iterate();
64 
65 private:
66     /* Private methods */
67     void initInternals();
68 
69     /* Private variables */
70     glw::GLuint to_id;
71 };
72 
73 /** Test case: Requests to set up multisample textures for internal formats that are not color-renderable, depth-renderable and stencil-renderable result in GL_INVALID_ENUM error */
74 class MultisampleTextureTexStorage2DNonColorDepthOrStencilInternalFormatsTest : public glcts::TestCase
75 {
76 public:
77     /* Public methods */
78     MultisampleTextureTexStorage2DNonColorDepthOrStencilInternalFormatsTest(Context &context);
79 
80     virtual void deinit();
81     virtual void deinitInternalIteration();
82     virtual void initInternalIteration();
83     virtual tcu::TestNode::IterateResult iterate();
84 
85 private:
86     /* Private variables */
87     glw::GLuint to_id;
88 };
89 
90 /** Test case: reconfiguration of immutable 2D texture storage is forbidden and should result in GL_INVALID_OPERATION error. */
91 class MultisampleTextureTexStorage2DReconfigurationRejectedTest : public glcts::TestCase
92 {
93 public:
94     /* Public methods */
95     MultisampleTextureTexStorage2DReconfigurationRejectedTest(Context &context);
96 
97     virtual void deinit();
98     virtual void deinitTexture(glw::GLuint &to_id, glw::GLenum texture_target);
99     virtual void initTexture(glw::GLuint &to_id, glw::GLenum texture_target);
100     virtual tcu::TestNode::IterateResult iterate();
101 
102 private:
103     /* Private methods */
104     void initInternals();
105 
106     /* Private variables */
107     glw::GLboolean gl_oes_texture_storage_multisample_2d_array_supported;
108     glw::GLuint to_id_2d;
109     glw::GLuint to_id_2d_array;
110 };
111 
112 /** Test case: GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES  texture target is rejected and GL_INVALID_ENUM error code set */
113 class MultisampleTextureTexStorage2DTexture2DMultisampleArrayTest : public glcts::TestCase
114 {
115 public:
116     /* Public methods */
117     MultisampleTextureTexStorage2DTexture2DMultisampleArrayTest(Context &context);
118 
119     virtual tcu::TestNode::IterateResult iterate();
120 
121 private:
122     /* Private methods */
123     void initInternals();
124 };
125 
126 /** Test case: Requests to set up multisample color textures with unsupported number of samples are rejected with GL_INVALID_OPERATION error */
127 class MultisampleTextureTexStorage2DUnsupportedSamplesCountForColorTexturesTest : public glcts::TestCase
128 {
129 public:
130     /* Public methods */
131     MultisampleTextureTexStorage2DUnsupportedSamplesCountForColorTexturesTest(Context &context);
132 
133     virtual void deinit();
134     virtual void deinitInternalIteration();
135     virtual void initInternalIteration();
136     virtual tcu::TestNode::IterateResult iterate();
137 
138 private:
139     /* Private variables */
140     glw::GLuint to_id;
141 };
142 
143 /** Test case: Requests to set up multisample depth textures with unsupported number of samples are rejected with GL_INVALID_OPERATION error */
144 class MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthTexturesTest : public glcts::TestCase
145 {
146 public:
147     /* Public methods */
148     MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthTexturesTest(Context &context);
149 
150     virtual void deinit();
151     virtual void deinitInternalIteration();
152     virtual void initInternalIteration();
153     virtual tcu::TestNode::IterateResult iterate();
154 
155 private:
156     /* Private variables */
157     glw::GLuint to_id;
158 };
159 
160 /** Test case: Requests to set up multisample depth+stencil textures with unsupported number of samples are rejected with GL_INVALID_OPERATION error */
161 class MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthStencilTexturesTest : public glcts::TestCase
162 {
163 public:
164     /* Public methods */
165     MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthStencilTexturesTest(Context &context);
166 
167     virtual void deinit();
168     virtual void deinitInternalIteration();
169     virtual void initInternalIteration();
170     virtual tcu::TestNode::IterateResult iterate();
171 
172 private:
173     /* Private variables */
174     glw::GLuint to_id;
175 };
176 
177 /** Test case: Requests to set up multisample color/depth/stencil textures are accepted. */
178 class MultisampleTextureTexStorage2DValidCallsTest : public glcts::TestCase
179 {
180 public:
181     /* Public methods */
182     MultisampleTextureTexStorage2DValidCallsTest(Context &context);
183 
184     virtual void deinit();
185     virtual tcu::TestNode::IterateResult iterate();
186 
187 private:
188     /* Private methods */
189     void initInternals();
190 
191     /* Private variables */
192     glw::GLuint to_id;
193 };
194 
195 /** Test case: zero sample requests are rejected by generating a GL_INVALID_VALUE error. */
196 class MultisampleTextureTexStorage2DZeroSampleTest : public glcts::TestCase
197 {
198 public:
199     /* Public methods */
200     MultisampleTextureTexStorage2DZeroSampleTest(Context &context);
201 
202     virtual void deinit();
203     virtual tcu::TestNode::IterateResult iterate();
204 
205 private:
206     /* Private methods */
207     void initInternals();
208 
209     /* Private variables */
210     glw::GLuint to_id;
211 };
212 
213 } // namespace glcts
214 
215 #endif // _ES31CTEXTURESTORAGEMULTISAMPLETEXSTORAGE2DMULTISAMPLETESTS_HPP
216