Add missing JNIEXPORT and JNICALL to create*CTSActivity JNI calls
[platform/upstream/VK-GL-CTS.git] / external / openglcts / modules / runner / glcTestRunner.hpp
1 #ifndef _GLCTESTRUNNER_HPP
2 #define _GLCTESTRUNNER_HPP
3 /*-------------------------------------------------------------------------
4  * OpenGL Conformance Test Suite
5  * -----------------------------
6  *
7  * Copyright (c) 2016 Google Inc.
8  * Copyright (c) 2016 The Khronos Group Inc.
9  *
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  *      http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  *
22  */ /*!
23  * \file
24  * \brief CTS runner.
25  */ /*-------------------------------------------------------------------*/
26
27 #include "gluPlatform.hpp"
28 #include "tcuDefs.hpp"
29
30 #include <string>
31 #include <vector>
32
33 namespace tcu
34 {
35
36 class Archive;
37
38 } // tcu
39
40 namespace glcts
41 {
42
43 struct Config;
44
45 struct RunParams
46 {
47         glu::ApiType apiType;
48         const char*  configName;
49         const char*  glConfigName;
50         const char*  screenRotation;
51         int                      baseSeed;
52         const char*  fboConfig;
53         int                      surfaceWidth;
54         int                      surfaceHeight;
55 };
56
57 struct TestRunParams
58 {
59         std::vector<std::string> args;
60         std::string                              logFilename;
61 };
62
63 // Conformance test run summary - written to cts-run-summary.xml
64 struct TestRunSummary
65 {
66         glu::ApiType                       runType;
67         bool                                       isConformant;
68         std::string                                configLogFilename;
69         std::vector<TestRunParams> runParams;
70
71         TestRunSummary(void) : isConformant(false)
72         {
73         }
74
75         void clear(void)
76         {
77                 runType          = glu::ApiType();
78                 isConformant = false;
79                 configLogFilename.clear();
80                 runParams.clear();
81         }
82 };
83
84 class RunSession;
85
86 class TestRunner
87 {
88 public:
89         enum Flags
90         {
91                 VERBOSE_COMMANDS = (1 << 0),
92                 VERBOSE_IMAGES   = (1 << 1),
93                 VERBOSE_SHADERS  = (1 << 2),
94
95                 VERBOSE_ALL = VERBOSE_COMMANDS | VERBOSE_IMAGES,
96
97                 PRINT_SUMMARY = (1 << 3)
98         };
99
100         TestRunner(tcu::Platform& platform, tcu::Archive& archive, const char* logDirPath, glu::ApiType type,
101                            deUint32 flags);
102         ~TestRunner(void);
103
104         bool iterate(void);
105
106 private:
107         TestRunner(const TestRunner& other);
108         TestRunner operator=(const TestRunner& other);
109
110         void init(void);
111         void deinit(void);
112
113         void initSession(const TestRunParams& runParams);
114         void deinitSession(void);
115         bool iterateSession(void);
116
117         enum IterateState
118         {
119                 ITERATE_INIT = 0, //!< Call init() on this iteration.
120                 ITERATE_DEINIT,   //!< Call deinit() on this iteration.
121
122                 ITERATE_INIT_SESSION,   //!< Init current session.
123                 ITERATE_DEINIT_SESSION,  //!< Deinit session and move to next.
124                 ITERATE_ITERATE_SESSION, //!< Iterate current session.
125
126                 ITERATESTATE_LAST
127         };
128
129         tcu::Platform& m_platform;
130         tcu::Archive&  m_archive;
131         std::string     m_logDirPath;
132         glu::ApiType   m_type;
133         deUint32           m_flags;
134
135         // Iteration state.
136         IterateState                                                       m_iterState;
137         std::vector<TestRunParams>                                 m_runSessions;
138         std::vector<TestRunParams>::const_iterator m_sessionIter;
139         RunSession*                                                                m_curSession;
140
141         // Totals / stats.
142         int                        m_sessionsExecuted;
143         int                        m_sessionsPassed;
144         int                        m_sessionsFailed;
145         TestRunSummary m_summary;
146 };
147
148 } // glcts
149
150 #endif // _GLCTESTRUNNER_HPP