Merge "Generate flat triangles in polygon offset tests." into nougat-cts-dev am:...
[platform/upstream/VK-GL-CTS.git] / framework / common / tcuCommandLine.hpp
1 #ifndef _TCUCOMMANDLINE_HPP
2 #define _TCUCOMMANDLINE_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program Tester Core
5  * ----------------------------------------
6  *
7  * Copyright 2014 The Android Open Source Project
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 Command line parsing.
24  *//*--------------------------------------------------------------------*/
25
26 #include "tcuDefs.hpp"
27 #include "deCommandLine.hpp"
28 #include "deUniquePtr.hpp"
29
30 #include <string>
31 #include <vector>
32
33 namespace tcu
34 {
35
36 /*--------------------------------------------------------------------*//*!
37  * \brief Run mode tells whether the test program should run the tests or
38  *                dump out metadata about the tests.
39  *//*--------------------------------------------------------------------*/
40 enum RunMode
41 {
42         RUNMODE_EXECUTE = 0,                    //! Test program executes the tests.
43         RUNMODE_DUMP_XML_CASELIST,              //! Test program dumps the list of contained test cases in XML format.
44         RUNMODE_DUMP_TEXT_CASELIST,             //! Test program dumps the list of contained test cases in plain-text format.
45         RUNMODE_DUMP_STDOUT_CASELIST,   //! Test program dumps the list of contained test cases in plain-text format into stdout.
46
47         RUNMODE_LAST
48 };
49
50 /*--------------------------------------------------------------------*//*!
51  * \brief Should graphical tests show rendering results on screen.
52  *//*--------------------------------------------------------------------*/
53 enum WindowVisibility
54 {
55         WINDOWVISIBILITY_WINDOWED = 0,
56         WINDOWVISIBILITY_FULLSCREEN,
57         WINDOWVISIBILITY_HIDDEN,
58
59         WINDOWVISIBILITY_LAST
60 };
61
62 /*--------------------------------------------------------------------*//*!
63  * \brief The type of rendering surface the tests should be executed on.
64  *//*--------------------------------------------------------------------*/
65 enum SurfaceType
66 {
67         SURFACETYPE_WINDOW = 0,                 //!< Native window.
68         SURFACETYPE_OFFSCREEN_NATIVE,   //!< Native offscreen surface, such as pixmap.
69         SURFACETYPE_OFFSCREEN_GENERIC,  //!< Generic offscreen surface, such as pbuffer.
70         SURFACETYPE_FBO,                                //!< Framebuffer object.
71
72         SURFACETYPE_LAST
73 };
74
75 /*--------------------------------------------------------------------*//*!
76  * \brief Screen rotation, always to clockwise direction.
77  *//*--------------------------------------------------------------------*/
78 enum ScreenRotation
79 {
80         SCREENROTATION_UNSPECIFIED,             //!< Use default / current orientation.
81         SCREENROTATION_0,                               //!< Set rotation to 0 degrees from baseline.
82         SCREENROTATION_90,
83         SCREENROTATION_180,
84         SCREENROTATION_270,
85
86         SCREENROTATION_LAST
87 };
88
89 class CaseTreeNode;
90 class CasePaths;
91
92 /*--------------------------------------------------------------------*//*!
93  * \brief Test command line
94  *
95  * CommandLine handles argument parsing and provides convinience functions
96  * for querying test parameters.
97  *//*--------------------------------------------------------------------*/
98 class CommandLine
99 {
100 public:
101                                                                         CommandLine                                     (void);
102                                                                         CommandLine                                     (int argc, const char* const* argv);
103         explicit                                                CommandLine                                     (const std::string& cmdLine);
104                                                                         ~CommandLine                            (void);
105
106         bool                                                    parse                                           (int argc, const char* const* argv);
107         bool                                                    parse                                           (const std::string& cmdLine);
108
109         //! Get log file name (--deqp-log-filename)
110         const char*                                             getLogFileName                          (void) const;
111
112         //! Get logging flags
113         deUint32                                                getLogFlags                                     (void) const;
114
115         //! Get run mode (--deqp-runmode)
116         RunMode                                                 getRunMode                                      (void) const;
117
118         //! Get caselist dump target file pattern (--deqp-caselist-export-file)
119         const char*                                             getCaseListExportFile           (void) const;
120
121         //! Get default window visibility (--deqp-visibility)
122         WindowVisibility                                getVisibility                           (void) const;
123
124         //! Get watchdog enable status (--deqp-watchdog)
125         bool                                                    isWatchDogEnabled                       (void) const;
126
127         //! Get crash handling enable status (--deqp-crashhandler)
128         bool                                                    isCrashHandlingEnabled          (void) const;
129
130         //! Get base seed for randomization (--deqp-base-seed)
131         int                                                             getBaseSeed                                     (void) const;
132
133         //! Get test iteration count (--deqp-test-iteration-count)
134         int                                                             getTestIterationCount           (void) const;
135
136         //! Get rendering target width (--deqp-surface-width)
137         int                                                             getSurfaceWidth                         (void) const;
138
139         //! Get rendering target height (--deqp-surface-height)
140         int                                                             getSurfaceHeight                        (void) const;
141
142         //! Get rendering taget type (--deqp-surface-type)
143         SurfaceType                                             getSurfaceType                          (void) const;
144
145         //! Get screen rotation (--deqp-screen-rotation)
146         ScreenRotation                                  getScreenRotation                       (void) const;
147
148         //! Get GL context factory name (--deqp-gl-context-type)
149         const char*                                             getGLContextType                        (void) const;
150
151         //! Get GL config ID (--deqp-gl-config-id)
152         int                                                             getGLConfigId                           (void) const;
153
154         //! Get GL config name (--deqp-gl-config-name)
155         const char*                                             getGLConfigName                         (void) const;
156
157         //! Get GL context flags (--deqp-gl-context-flags)
158         const char*                                             getGLContextFlags                       (void) const;
159
160         //! Get OpenCL platform ID (--deqp-cl-platform-id)
161         int                                                             getCLPlatformId                         (void) const;
162
163         //! Get OpenCL device IDs (--deqp-cl-device-ids)
164         void                                                    getCLDeviceIds                          (std::vector<int>& deviceIds) const     { deviceIds = getCLDeviceIds(); }
165         const std::vector<int>&                 getCLDeviceIds                          (void) const;
166
167         //! Get extra OpenCL program build options (--deqp-cl-build-options)
168         const char*                                             getCLBuildOptions                       (void) const;
169
170         //! Get EGL native display factory (--deqp-egl-display-type)
171         const char*                                             getEGLDisplayType                       (void) const;
172
173         //! Get EGL native window factory (--deqp-egl-window-type)
174         const char*                                             getEGLWindowType                        (void) const;
175
176         //! Get EGL native pixmap factory (--deqp-egl-pixmap-type)
177         const char*                                             getEGLPixmapType                        (void) const;
178
179         //! Get Vulkan device ID (--deqp-vk-device-id)
180         int                                                             getVKDeviceId                           (void) const;
181
182         //! Enable development-time test case validation checks
183         bool                                                    isValidationEnabled                     (void) const;
184
185         //! Should we run tests that exhaust memory (--deqp-test-oom)
186         bool                                                    isOutOfMemoryTestEnabled(void) const;
187
188         //! Check if test group is in supplied test case list.
189         bool                                                    checkTestGroupName                      (const char* groupName) const;
190
191         //! Check if test case is in supplied test case list.
192         bool                                                    checkTestCaseName                       (const char* caseName) const;
193
194 protected:
195         const de::cmdline::CommandLine& getCommandLine                          (void) const;
196
197 private:
198                                                                         CommandLine                                     (const CommandLine&);   // not allowed!
199         CommandLine&                                    operator=                                       (const CommandLine&);   // not allowed!
200
201         void                                                    clear                                           (void);
202
203         virtual void                                    registerExtendedOptions         (de::cmdline::Parser& parser);
204
205         de::cmdline::CommandLine                m_cmdLine;
206         deUint32                                                m_logFlags;
207         CaseTreeNode*                                   m_caseTree;
208         de::MovePtr<const CasePaths>    m_casePaths;
209 };
210
211 } // tcu
212
213 #endif // _TCUCOMMANDLINE_HPP