1 #ifndef _ES31FPROGRAMINTERFACEQUERYTESTCASE_HPP
2 #define _ES31FPROGRAMINTERFACEQUERYTESTCASE_HPP
3 /*-------------------------------------------------------------------------
4 * drawElements Quality Program OpenGL ES 3.1 Module
5 * -------------------------------------------------
7 * Copyright 2014 The Android Open Source Project
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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.
23 * \brief Program interface query test case
24 *//*--------------------------------------------------------------------*/
26 #include "tcuDefs.hpp"
27 #include "tes31TestCase.hpp"
28 #include "es31fProgramInterfaceDefinition.hpp"
37 struct ProgramResourceQueryTestTarget
39 ProgramResourceQueryTestTarget (ProgramInterface interface_, deUint32 propFlags_);
41 ProgramInterface interface;
45 enum ProgramResourcePropFlags
47 PROGRAMRESOURCEPROP_ARRAY_SIZE = (1 << 1),
48 PROGRAMRESOURCEPROP_ARRAY_STRIDE = (1 << 2),
49 PROGRAMRESOURCEPROP_ATOMIC_COUNTER_BUFFER_INDEX = (1 << 3),
50 PROGRAMRESOURCEPROP_BLOCK_INDEX = (1 << 4),
51 PROGRAMRESOURCEPROP_LOCATION = (1 << 5),
52 PROGRAMRESOURCEPROP_MATRIX_ROW_MAJOR = (1 << 6),
53 PROGRAMRESOURCEPROP_MATRIX_STRIDE = (1 << 7),
54 PROGRAMRESOURCEPROP_NAME_LENGTH = (1 << 8),
55 PROGRAMRESOURCEPROP_OFFSET = (1 << 9),
56 PROGRAMRESOURCEPROP_REFERENCED_BY_SHADER = (1 << 10),
57 PROGRAMRESOURCEPROP_TYPE = (1 << 11),
58 PROGRAMRESOURCEPROP_BUFFER_BINDING = (1 << 12),
59 PROGRAMRESOURCEPROP_BUFFER_DATA_SIZE = (1 << 13),
60 PROGRAMRESOURCEPROP_ACTIVE_VARIABLES = (1 << 14),
61 PROGRAMRESOURCEPROP_TOP_LEVEL_ARRAY_SIZE = (1 << 15),
62 PROGRAMRESOURCEPROP_TOP_LEVEL_ARRAY_STRIDE = (1 << 16),
63 PROGRAMRESOURCEPROP_IS_PER_PATCH = (1 << 17),
65 PROGRAMRESOURCEPROP_UNIFORM_INTERFACE_MASK = PROGRAMRESOURCEPROP_ARRAY_SIZE |
66 PROGRAMRESOURCEPROP_ARRAY_STRIDE |
67 PROGRAMRESOURCEPROP_ATOMIC_COUNTER_BUFFER_INDEX |
68 PROGRAMRESOURCEPROP_BLOCK_INDEX |
69 PROGRAMRESOURCEPROP_LOCATION |
70 PROGRAMRESOURCEPROP_MATRIX_ROW_MAJOR |
71 PROGRAMRESOURCEPROP_MATRIX_STRIDE |
72 PROGRAMRESOURCEPROP_NAME_LENGTH |
73 PROGRAMRESOURCEPROP_OFFSET |
74 PROGRAMRESOURCEPROP_REFERENCED_BY_SHADER |
75 PROGRAMRESOURCEPROP_TYPE,
77 PROGRAMRESOURCEPROP_UNIFORM_BLOCK_INTERFACE_MASK = PROGRAMRESOURCEPROP_NAME_LENGTH |
78 PROGRAMRESOURCEPROP_REFERENCED_BY_SHADER |
79 PROGRAMRESOURCEPROP_BUFFER_BINDING |
80 PROGRAMRESOURCEPROP_BUFFER_DATA_SIZE |
81 PROGRAMRESOURCEPROP_ACTIVE_VARIABLES,
83 PROGRAMRESOURCEPROP_SHADER_STORAGE_BLOCK_MASK = PROGRAMRESOURCEPROP_NAME_LENGTH |
84 PROGRAMRESOURCEPROP_REFERENCED_BY_SHADER |
85 PROGRAMRESOURCEPROP_BUFFER_BINDING |
86 PROGRAMRESOURCEPROP_BUFFER_DATA_SIZE |
87 PROGRAMRESOURCEPROP_ACTIVE_VARIABLES,
89 PROGRAMRESOURCEPROP_PROGRAM_INPUT_MASK = PROGRAMRESOURCEPROP_ARRAY_SIZE |
90 PROGRAMRESOURCEPROP_LOCATION |
91 PROGRAMRESOURCEPROP_NAME_LENGTH |
92 PROGRAMRESOURCEPROP_REFERENCED_BY_SHADER |
93 PROGRAMRESOURCEPROP_TYPE |
94 PROGRAMRESOURCEPROP_IS_PER_PATCH,
96 PROGRAMRESOURCEPROP_PROGRAM_OUTPUT_MASK = PROGRAMRESOURCEPROP_ARRAY_SIZE |
97 PROGRAMRESOURCEPROP_LOCATION |
98 PROGRAMRESOURCEPROP_NAME_LENGTH |
99 PROGRAMRESOURCEPROP_REFERENCED_BY_SHADER |
100 PROGRAMRESOURCEPROP_TYPE |
101 PROGRAMRESOURCEPROP_IS_PER_PATCH,
103 PROGRAMRESOURCEPROP_BUFFER_VARIABLE_MASK = PROGRAMRESOURCEPROP_ARRAY_SIZE |
104 PROGRAMRESOURCEPROP_ARRAY_STRIDE |
105 PROGRAMRESOURCEPROP_BLOCK_INDEX |
106 PROGRAMRESOURCEPROP_MATRIX_ROW_MAJOR |
107 PROGRAMRESOURCEPROP_MATRIX_STRIDE |
108 PROGRAMRESOURCEPROP_NAME_LENGTH |
109 PROGRAMRESOURCEPROP_OFFSET |
110 PROGRAMRESOURCEPROP_REFERENCED_BY_SHADER |
111 PROGRAMRESOURCEPROP_TOP_LEVEL_ARRAY_SIZE |
112 PROGRAMRESOURCEPROP_TOP_LEVEL_ARRAY_STRIDE |
113 PROGRAMRESOURCEPROP_TYPE,
115 PROGRAMRESOURCEPROP_TRANSFORM_FEEDBACK_VARYING_MASK = PROGRAMRESOURCEPROP_ARRAY_SIZE |
116 PROGRAMRESOURCEPROP_NAME_LENGTH |
117 PROGRAMRESOURCEPROP_TYPE,
120 class ProgramInterfaceQueryTestCase : public TestCase
123 ProgramInterfaceQueryTestCase (Context& context, const char* name, const char* description, ProgramResourceQueryTestTarget queryTarget);
124 ~ProgramInterfaceQueryTestCase (void);
127 ProgramInterface getTargetInterface (void) const;
130 const ProgramInterfaceDefinition::Program* getAndCheckProgramDefinition (void);
131 int getMaxPatchVertices (void);
132 IterateResult iterate (void);
134 virtual const ProgramInterfaceDefinition::Program* getProgramDefinition (void) const = 0;
135 virtual std::vector<std::string> getQueryTargetResources (void) const = 0;
137 const ProgramResourceQueryTestTarget m_queryTarget;
140 void checkProgramResourceUsage (const ProgramInterfaceDefinition::Program* program, const glw::Functions& gl, tcu::TestLog& log);
146 #endif // _ES31FPROGRAMINTERFACEQUERYTESTCASE_HPP