1 #ifndef _ESEXTCTEXTURECUBEMAPARRAYGETTERCALLS_HPP
2 #define _ESEXTCTEXTURECUBEMAPARRAYGETTERCALLS_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  * \file  esextcTextureCubeMapArrayGetterCalls.hpp
28  * \brief Texture Cube Map Array Getter Calls (Test 6)
29  */ /*-------------------------------------------------------------------*/
30 
31 #include "../esextcTestCaseBase.hpp"
32 #include <map>
33 #include <vector>
34 
35 namespace glcts
36 {
37 /*   Implementation of Test 6 from CTS_EXT_texture_cube_map_array. Test description follows:
38  *
39  *   Make sure getter calls work correctly in regard to cube-map array textures.
40  *
41  *   Category: API;
42  *   Priority: Must-have.
43  *
44  *   Consider a cube-map array texture. Make sure that getter calls operating
45  *   on the texture object report valid default properties for a newly created
46  *   and initialized cube-map array texture.
47  *   Modify texture properties of the object and make sure valid values are
48  *   reported by the getter calls.
49  *   Getter calls to consider: glGetTexParameterfv(), glGetTexParameteriv().
50  *
51  *   Make sure that GL_TEXTURE_CUBE_MAP_ARRAY_EXT texture binding is reported
52  *   correctly by glGetBooleanv(), glGetFloatv() and glGetIntegerv().
53  *
54  *   Make sure that glGetTexLevelParameterfv() and glGetTexLevelParameteriv()
55  *   do not report an error, when all relevant properties defined for the
56  *   GL_TEXTURE_CUBE_MAP_ARRAY_EXT texture target are queried.
57  *
58  *   Both immutable and mutable textures should be checked
59  */
60 class TextureCubeMapArrayGetterCalls : public TestCaseBase
61 {
62 public:
63     /* Public functions */
64     TextureCubeMapArrayGetterCalls(Context &context, const ExtParameters &extParams, const char *name,
65                                    const char *description);
66 
~TextureCubeMapArrayGetterCalls()67     virtual ~TextureCubeMapArrayGetterCalls()
68     {
69     }
70 
71     virtual void deinit(void);
72     virtual IterateResult iterate(void);
73 
74 private:
75     /* Private functions */
76     void initTest(void);
77     void verifyTextureBindings(void);
78     void verifyGetTexParameter(glw::GLenum pname, glw::GLint expected_value);
79     void verifyGetTexLevelParameters(void);
80 
81     static const char *getStringForGetTexParameterPname(glw::GLenum pname);
82     static const char *getStringForGetTexLevelParameterPname(glw::GLenum pname);
83 
84     /* Private variables */
85     glw::GLuint m_to_id;
86     glw::GLboolean m_test_passed;
87 
88     static const glw::GLuint m_depth;
89     static const glw::GLsizei m_height;
90     static const glw::GLsizei m_width;
91     static const glw::GLuint m_n_components;
92 
93     /* Values represented by variables below are used by
94      * verifyTextureLevelParameterValues() */
95     glw::GLint m_expected_alpha_size;
96     glw::GLint m_expected_alpha_type;
97     glw::GLint m_expected_blue_size;
98     glw::GLint m_expected_blue_type;
99     glw::GLint m_expected_compressed;
100     glw::GLint m_expected_depth_size;
101     glw::GLint m_expected_depth_type;
102     glw::GLint m_expected_green_size;
103     glw::GLint m_expected_green_type;
104     glw::GLint m_expected_red_size;
105     glw::GLint m_expected_red_type;
106     glw::GLint m_expected_shared_size;
107     glw::GLint m_expected_stencil_size;
108     glw::GLint m_expected_texture_internal_format;
109 
110     typedef std::map<glw::GLenum, glw::GLint> PNamesMap;
111     typedef std::vector<glw::GLenum> PNamesVec;
112 
113     PNamesMap pnames_for_gettexparameter_default;
114     PNamesMap pnames_for_gettexparameter_modified;
115     PNamesVec pnames_for_gettexlevelparameter;
116 };
117 
118 } // namespace glcts
119 
120 #endif // _ESEXTCTEXTURECUBEMAPARRAYGETTERCALLS_HPP
121