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 46 RUNMODE_LAST 47 }; 48 49 /*--------------------------------------------------------------------*//*! 50 * \brief Should graphical tests show rendering results on screen. 51 *//*--------------------------------------------------------------------*/ 52 enum WindowVisibility 53 { 54 WINDOWVISIBILITY_WINDOWED = 0, 55 WINDOWVISIBILITY_FULLSCREEN, 56 WINDOWVISIBILITY_HIDDEN, 57 58 WINDOWVISIBILITY_LAST 59 }; 60 61 /*--------------------------------------------------------------------*//*! 62 * \brief The type of rendering surface the tests should be executed on. 63 *//*--------------------------------------------------------------------*/ 64 enum SurfaceType 65 { 66 SURFACETYPE_WINDOW = 0, //!< Native window. 67 SURFACETYPE_OFFSCREEN_NATIVE, //!< Native offscreen surface, such as pixmap. 68 SURFACETYPE_OFFSCREEN_GENERIC, //!< Generic offscreen surface, such as pbuffer. 69 SURFACETYPE_FBO, //!< Framebuffer object. 70 71 SURFACETYPE_LAST 72 }; 73 74 /*--------------------------------------------------------------------*//*! 75 * \brief Screen rotation, always to clockwise direction. 76 *//*--------------------------------------------------------------------*/ 77 enum ScreenRotation 78 { 79 SCREENROTATION_UNSPECIFIED, //!< Use default / current orientation. 80 SCREENROTATION_0, //!< Set rotation to 0 degrees from baseline. 81 SCREENROTATION_90, 82 SCREENROTATION_180, 83 SCREENROTATION_270, 84 85 SCREENROTATION_LAST 86 }; 87 88 class CaseTreeNode; 89 class CasePaths; 90 91 /*--------------------------------------------------------------------*//*! 92 * \brief Test command line 93 * 94 * CommandLine handles argument parsing and provides convinience functions 95 * for querying test parameters. 96 *//*--------------------------------------------------------------------*/ 97 class CommandLine 98 { 99 public: 100 CommandLine (void); 101 CommandLine (int argc, const char* const* argv); 102 explicit CommandLine (const std::string& cmdLine); 103 ~CommandLine (void); 104 105 bool parse (int argc, const char* const* argv); 106 bool parse (const std::string& cmdLine); 107 108 //! Get log file name (--deqp-log-filename) 109 const char* getLogFileName (void) const; 110 111 //! Get logging flags 112 deUint32 getLogFlags (void) const; 113 114 //! Get run mode (--deqp-runmode) 115 RunMode getRunMode (void) const; 116 117 //! Get default window visibility (--deqp-visibility) 118 WindowVisibility getVisibility (void) const; 119 120 //! Get watchdog enable status (--deqp-watchdog) 121 bool isWatchDogEnabled (void) const; 122 123 //! Get crash handling enable status (--deqp-crashhandler) 124 bool isCrashHandlingEnabled (void) const; 125 126 //! Get base seed for randomization (--deqp-base-seed) 127 int getBaseSeed (void) const; 128 129 //! Get test iteration count (--deqp-test-iteration-count) 130 int getTestIterationCount (void) const; 131 132 //! Get rendering target width (--deqp-surface-width) 133 int getSurfaceWidth (void) const; 134 135 //! Get rendering target height (--deqp-surface-height) 136 int getSurfaceHeight (void) const; 137 138 //! Get rendering taget type (--deqp-surface-type) 139 SurfaceType getSurfaceType (void) const; 140 141 //! Get screen rotation (--deqp-screen-rotation) 142 ScreenRotation getScreenRotation (void) const; 143 144 //! Get GL context factory name (--deqp-gl-context-type) 145 const char* getGLContextType (void) const; 146 147 //! Get GL config ID (--deqp-gl-config-id) 148 int getGLConfigId (void) const; 149 150 //! Get GL config name (--deqp-gl-config-name) 151 const char* getGLConfigName (void) const; 152 153 //! Get GL context flags (--deqp-gl-context-flags) 154 const char* getGLContextFlags (void) const; 155 156 //! Get OpenCL platform ID (--deqp-cl-platform-id) 157 int getCLPlatformId (void) const; 158 159 //! Get OpenCL device IDs (--deqp-cl-device-ids) getCLDeviceIds(std::vector<int> & deviceIds) const160 void getCLDeviceIds (std::vector<int>& deviceIds) const { deviceIds = getCLDeviceIds(); } 161 const std::vector<int>& getCLDeviceIds (void) const; 162 163 //! Get extra OpenCL program build options (--deqp-cl-build-options) 164 const char* getCLBuildOptions (void) const; 165 166 //! Get EGL native display factory (--deqp-egl-display-type) 167 const char* getEGLDisplayType (void) const; 168 169 //! Get EGL native window factory (--deqp-egl-window-type) 170 const char* getEGLWindowType (void) const; 171 172 //! Get EGL native pixmap factory (--deqp-egl-pixmap-type) 173 const char* getEGLPixmapType (void) const; 174 175 //! Should we run tests that exhaust memory (--deqp-test-oom) 176 bool isOutOfMemoryTestEnabled(void) const; 177 178 //! Check if test group is in supplied test case list. 179 bool checkTestGroupName (const char* groupName) const; 180 181 //! Check if test case is in supplied test case list. 182 bool checkTestCaseName (const char* caseName) const; 183 184 protected: 185 const de::cmdline::CommandLine& getCommandLine (void) const; 186 187 private: 188 CommandLine (const CommandLine&); // not allowed! 189 CommandLine& operator= (const CommandLine&); // not allowed! 190 191 void clear (void); 192 193 virtual void registerExtendedOptions (de::cmdline::Parser& parser); 194 195 de::cmdline::CommandLine m_cmdLine; 196 deUint32 m_logFlags; 197 CaseTreeNode* m_caseTree; 198 de::MovePtr<const CasePaths> m_casePaths; 199 }; 200 201 } // tcu 202 203 #endif // _TCUCOMMANDLINE_HPP 204