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 28namespace glu 29{ 30class Platform; 31} 32 33namespace eglu 34{ 35class Platform; 36} 37 38namespace vk 39{ 40class Platform; 41} 42 43namespace tcu 44{ 45 46class CommandLine; 47class 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 *//*--------------------------------------------------------------------*/ 67class Platform 68{ 69public: 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