1 #ifndef _TCUPLATFORM_HPP 2 #define _TCUPLATFORM_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 Platform (OS) specific services. 24 *//*--------------------------------------------------------------------*/ 25 26 #include "tcuDefs.hpp" 27 28 namespace glu 29 { 30 class Platform; 31 } 32 33 namespace eglu 34 { 35 class Platform; 36 } 37 38 namespace vk 39 { 40 class Platform; 41 } 42 43 namespace tcu 44 { 45 46 class CommandLine; 47 class FunctionLibrary; 48 49 /*--------------------------------------------------------------------*//*! 50 * \brief Base class for platform implementation. 51 * 52 * This class represents the minimum set of functionality for a platform 53 * port. 54 * 55 * In addition to implementing Platform class, main entry point must be 56 * created that takes care of parsing command line, creating log and 57 * executing tcu::App. See tcuMain.cpp for reference on implementing 58 * application stub. 59 * 60 * If the platform uses standard posix-style main() for application entry 61 * point, tcuMain.cpp can be used as is. In that case you only have to 62 * implement createPlatform(). 63 * 64 * API-specific platform interfaces (glu::Platform and eglu::Platform) 65 * can be provided by implementing get<API>Platform() functions. 66 *//*--------------------------------------------------------------------*/ 67 class Platform 68 { 69 public: 70 Platform (void); 71 virtual ~Platform (void); 72 73 /*--------------------------------------------------------------------*//*! 74 * \brief Process platform-specific events. 75 * 76 * Test framework will call this function between test cases and test case 77 * iterations. Any event handling that must be done periodically should be 78 * done here. 79 * 80 * Test framework will decide whether to continue test execution based on 81 * return code. For instance if the application receives close event from OS, 82 * it should communicate that to framework by returning false. 83 * 84 * \note Do not do rendering buffer swaps here. 85 * Do it in RenderContext::postIterate() instead. 86 * \return true if test execution should continue, false otherwise. 87 *//*--------------------------------------------------------------------*/ 88 virtual bool processEvents (void); 89 90 /*--------------------------------------------------------------------*//*! 91 * \brief Get GL platform interface 92 * 93 * GL-specific platform interface is defined by glu::Platform. If your 94 * platform port supports OpenGL (ES), you should implement this function. 95 * 96 * Default implementation throws tcu::NotSupportedError exception. 97 * 98 * \return Reference to GL platform interface. 99 *//*--------------------------------------------------------------------*/ 100 virtual const glu::Platform& getGLPlatform (void) const; 101 102 /*--------------------------------------------------------------------*//*! 103 * \brief Get EGL platform interface 104 * 105 * EGL-specific platform interface is defined by eglu::Platform. If your 106 * platform port supports EGL, you should implement this function. 107 * 108 * Default implementation throws tcu::NotSupportedError exception. 109 * 110 * \return Reference to EGL platform interface. 111 *//*--------------------------------------------------------------------*/ 112 virtual const eglu::Platform& getEGLPlatform (void) const; 113 114 virtual const vk::Platform& getVulkanPlatform (void) const; 115 }; 116 117 } // tcu 118 119 #endif // _TCUPLATFORM_HPP 120