1 /*-------------------------------------------------------------------------
2 * OpenGL Conformance Test Suite
3 * -----------------------------
4 *
5 * Copyright (c) 2014-2016 The Khronos Group Inc.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 */ /*!
20 * \file
21 * \brief
22 */ /*-------------------------------------------------------------------*/
23
24 #include "esextcTextureCubeMapArrayTests.hpp"
25 #include "esextcTextureCubeMapArrayColorDepthAttachments.hpp"
26 #include "esextcTextureCubeMapArrayETC2Support.hpp"
27 #include "esextcTextureCubeMapArrayFBOIncompleteness.hpp"
28 #include "esextcTextureCubeMapArrayGenerateMipMap.hpp"
29 #include "esextcTextureCubeMapArrayGetterCalls.hpp"
30 #include "esextcTextureCubeMapArrayImageOperations.hpp"
31 #include "esextcTextureCubeMapArrayImageTextureSize.hpp"
32 #include "esextcTextureCubeMapArraySampling.hpp"
33 #include "esextcTextureCubeMapArrayStencilAttachments.hpp"
34 #include "esextcTextureCubeMapArraySubImage3D.hpp"
35 #include "esextcTextureCubeMapArrayTex3DValidation.hpp"
36
37 namespace glcts
38 {
39 /** Constructor
40 *
41 * @param context Test context
42 * @param glslVersion GLSL version
43 **/
TextureCubeMapArrayTests(glcts::Context & context,const ExtParameters & extParams)44 TextureCubeMapArrayTests::TextureCubeMapArrayTests(glcts::Context& context, const ExtParameters& extParams)
45 : TestCaseGroupBase(context, extParams, "texture_cube_map_array", "Texture Cube Map Array Tests")
46 {
47 /* No implementation needed */
48 }
49
50 /** Initializes test cases for texture cube map array tests
51 **/
init(void)52 void TextureCubeMapArrayTests::init(void)
53 {
54 /* Initialize base class */
55 TestCaseGroupBase::init();
56
57 /* Texture Cube Map Array Sampling (Test 1) */
58 addChild(new TextureCubeMapArraySamplingTest(m_context, m_extParams, "sampling", "Test 1"));
59
60 /* Texture Cube Map Array Attachment (Test 2) */
61 addChild(
62 new TextureCubeMapArrayColorDepthAttachmentsTest(m_context, m_extParams, "color_depth_attachments", "Test 2"));
63
64 /* Texture Cube Map Array Stencil Attachments (Test 3) */
65 addChild(new TextureCubeMapArrayStencilAttachments(m_context, m_extParams, "stencil_attachments_mutable_nonlayered",
66 "Test 3", false, false));
67 addChild(new TextureCubeMapArrayStencilAttachments(m_context, m_extParams, "stencil_attachments_mutable_layered",
68 "Test 3", false, true));
69 addChild(new TextureCubeMapArrayStencilAttachments(
70 m_context, m_extParams, "stencil_attachments_immutable_nonlayered", "Test 3", true, false));
71 addChild(new TextureCubeMapArrayStencilAttachments(m_context, m_extParams, "stencil_attachments_immutable_layered",
72 "Test 3", true, true));
73
74 /* Texture Cube Map Array glTexImage3D() and glTexStorage3D() Validation (Test 4) */
75 addChild(new TextureCubeMapArrayTex3DValidation(m_context, m_extParams, "tex3D_validation", "Test 4"));
76
77 /* Texture Cube Map Array SubImage3D() (Test 5) */
78 addChild(new TextureCubeMapArraySubImage3D(m_context, m_extParams, "subimage3D", "Test 5"));
79
80 /* Texture Cube Map Array Getter Calls (Test 6) */
81 addChild(new TextureCubeMapArrayGetterCalls(m_context, m_extParams, "getter_calls", "Test 6"));
82
83 /* Texture Cube Map Array glGenerateMipmap() Validation (Test 7) */
84 addChild(new TextureCubeMapArrayGenerateMipMapFilterable(
85 m_context, m_extParams, "generate_mip_map_filterable_internalformat_mutable",
86 "Test 7.1 filterable internalformat - mutable storage", ST_MUTABLE));
87
88 addChild(new TextureCubeMapArrayGenerateMipMapFilterable(
89 m_context, m_extParams, "generate_mip_map_filterable_internalformat_immutable",
90 "Test 7.1 filterable internalformat - immutable storage", ST_IMMUTABLE));
91
92 /* The following tests, as written, are only applicable to ES. */
93 addChild(new TextureCubeMapArrayGenerateMipMapNonFilterable(
94 m_context, m_extParams, "generate_mip_map_non_filterable_mutable_storage",
95 "Test 7.2 non-filterable format - mutable storage", ST_MUTABLE));
96
97 addChild(new TextureCubeMapArrayGenerateMipMapNonFilterable(
98 m_context, m_extParams, "generate_mip_map_non_filterable_immutable_storage",
99 "Test 7.2 non-filterable format - immutable storage", ST_IMMUTABLE));
100
101 /* Texture Cube Map Array Image Operations (Test 8) */
102 addChild(new TextureCubeMapArrayImageOpCompute(m_context, m_extParams, "image_op_compute_sh",
103 "Test 8 compute shader", STC_COMPUTE_SHADER));
104 addChild(new TextureCubeMapArrayImageOpCompute(m_context, m_extParams, "image_op_vertex_sh", "Test 8 vertex shader",
105 STC_VERTEX_SHADER));
106 addChild(new TextureCubeMapArrayImageOpCompute(m_context, m_extParams, "image_op_fragment_sh",
107 "Test 8 fragment shader", STC_FRAGMENT_SHADER));
108 addChild(new TextureCubeMapArrayImageOpCompute(m_context, m_extParams, "image_op_geometry_sh",
109 "Test 8 geometry shader", STC_GEOMETRY_SHADER));
110
111 addChild(new TextureCubeMapArrayImageOpCompute(m_context, m_extParams, "image_op_tessellation_control_sh",
112 "Test 8 tessellation control shader ",
113 STC_TESSELLATION_CONTROL_SHADER));
114
115 addChild(new TextureCubeMapArrayImageOpCompute(m_context, m_extParams, "image_op_tessellation_evaluation_sh",
116 "Test 8 tessellation evaluation sahder",
117 STC_TESSELLATION_EVALUATION_SHADER));
118
119 /* Texture Cube Map Array FBO incompleteness (Test 9) */
120 addChild(new TextureCubeMapArrayFBOIncompleteness(m_context, m_extParams, "fbo_incompleteness", "Test 9"));
121
122 /* textureSize and imageSize validation (Test 10) */
123 addChild(new TextureCubeMapArrayTextureSizeTFVertexShader(m_context, m_extParams, "texture_size_vertex_sh",
124 "test 10.1"));
125 addChild(new TextureCubeMapArrayTextureSizeTFGeometryShader(m_context, m_extParams, "texture_size_geometry_sh",
126 "test 10.2"));
127 addChild(new TextureCubeMapArrayTextureSizeTFTessControlShader(m_context, m_extParams,
128 "texture_size_tesselation_con_sh", "test 10.3"));
129 addChild(new TextureCubeMapArrayTextureSizeTFTessEvaluationShader(m_context, m_extParams,
130 "texture_size_tesselation_ev_sh", "test 10.4"));
131 addChild(new TextureCubeMapArrayTextureSizeRTFragmentShader(m_context, m_extParams, "texture_size_fragment_sh",
132 "test 10.5"));
133 addChild(new TextureCubeMapArrayTextureSizeRTComputeShader(m_context, m_extParams, "texture_size_compute_sh",
134 "test 10.6"));
135
136 /* Cube Map Array support for ETC2 textures (Test 11) */
137 glu::ContextType contextType = m_context.getRenderContext().getType();
138 if (glu::isContextTypeGLCore(contextType) || glu::contextSupports(contextType, glu::ApiType::es(3, 2)))
139 addChild(new TextureCubeMapArrayETC2Support(m_context, m_extParams, "etc2_texture", "test 11"));
140 }
141
142 } // namespace glcts
143