es31cTextureStorageMultisampleTexStorage2DMultisampleTests.hpp revision 48087f5f0eb08759ee763f98daf3b34becb74559
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
35namespace 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. */
39class MultisampleTextureTexStorage2DGeneralSamplesNumberTest : public glcts::TestCase
40{
41public:
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
50private:
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. */
56class MultisampleTextureTexStorage2DInvalidAndBorderCaseTextureSizesTest : public glcts::TestCase
57{
58public:
59	/* Public methods */
60	MultisampleTextureTexStorage2DInvalidAndBorderCaseTextureSizesTest(Context& context);
61
62	virtual void						 deinit();
63	virtual tcu::TestNode::IterateResult iterate();
64
65private:
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 */
74class MultisampleTextureTexStorage2DNonColorDepthOrStencilInternalFormatsTest : public glcts::TestCase
75{
76public:
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
85private:
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. */
91class MultisampleTextureTexStorage2DReconfigurationRejectedTest : public glcts::TestCase
92{
93public:
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
102private:
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 */
113class MultisampleTextureTexStorage2DTexture2DMultisampleArrayTest : public glcts::TestCase
114{
115public:
116	/* Public methods */
117	MultisampleTextureTexStorage2DTexture2DMultisampleArrayTest(Context& context);
118
119	virtual tcu::TestNode::IterateResult iterate();
120
121private:
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 */
127class MultisampleTextureTexStorage2DUnsupportedSamplesCountForColorTexturesTest : public glcts::TestCase
128{
129public:
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
138private:
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 */
144class MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthTexturesTest : public glcts::TestCase
145{
146public:
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
155private:
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 */
161class MultisampleTextureTexStorage2DUnsupportedSamplesCountForDepthStencilTexturesTest : public glcts::TestCase
162{
163public:
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
172private:
173	/* Private variables */
174	glw::GLuint to_id;
175};
176
177/** Test case: Requests to set up multisample color/depth/stencil textures are accepted. */
178class MultisampleTextureTexStorage2DValidCallsTest : public glcts::TestCase
179{
180public:
181	/* Public methods */
182	MultisampleTextureTexStorage2DValidCallsTest(Context& context);
183
184	virtual void						 deinit();
185	virtual tcu::TestNode::IterateResult iterate();
186
187private:
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. */
196class MultisampleTextureTexStorage2DZeroSampleTest : public glcts::TestCase
197{
198public:
199	/* Public methods */
200	MultisampleTextureTexStorage2DZeroSampleTest(Context& context);
201
202	virtual void						 deinit();
203	virtual tcu::TestNode::IterateResult iterate();
204
205private:
206	/* Private methods */
207	void initInternals();
208
209	/* Private variables */
210	glw::GLuint to_id;
211};
212
213} /* glcts namespace */
214
215#endif // _ES31CTEXTURESTORAGEMULTISAMPLETEXSTORAGE2DMULTISAMPLETESTS_HPP
216