| #ifndef _TCUPLATFORM_HPP |
| #define _TCUPLATFORM_HPP |
| /*------------------------------------------------------------------------- |
| * drawElements Quality Program Tester Core |
| * ---------------------------------------- |
| * |
| * Copyright 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| *//*! |
| * \file |
| * \brief Platform (OS) specific services. |
| *//*--------------------------------------------------------------------*/ |
| |
| #include "tcuDefs.hpp" |
| |
| namespace glu |
| { |
| class Platform; |
| } |
| |
| namespace eglu |
| { |
| class Platform; |
| } |
| |
| namespace vk |
| { |
| class Platform; |
| } |
| |
| namespace tcu |
| { |
| |
| class CommandLine; |
| class FunctionLibrary; |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Base class for platform implementation. |
| * |
| * This class represents the minimum set of functionality for a platform |
| * port. |
| * |
| * In addition to implementing Platform class, main entry point must be |
| * created that takes care of parsing command line, creating log and |
| * executing tcu::App. See tcuMain.cpp for reference on implementing |
| * application stub. |
| * |
| * If the platform uses standard posix-style main() for application entry |
| * point, tcuMain.cpp can be used as is. In that case you only have to |
| * implement createPlatform(). |
| * |
| * API-specific platform interfaces (glu::Platform and eglu::Platform) |
| * can be provided by implementing get<API>Platform() functions. |
| *//*--------------------------------------------------------------------*/ |
| class Platform |
| { |
| public: |
| Platform (void); |
| virtual ~Platform (void); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Process platform-specific events. |
| * |
| * Test framework will call this function between test cases and test case |
| * iterations. Any event handling that must be done periodically should be |
| * done here. |
| * |
| * Test framework will decide whether to continue test execution based on |
| * return code. For instance if the application receives close event from OS, |
| * it should communicate that to framework by returning false. |
| * |
| * \note Do not do rendering buffer swaps here. |
| * Do it in RenderContext::postIterate() instead. |
| * \return true if test execution should continue, false otherwise. |
| *//*--------------------------------------------------------------------*/ |
| virtual bool processEvents (void); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Get GL platform interface |
| * |
| * GL-specific platform interface is defined by glu::Platform. If your |
| * platform port supports OpenGL (ES), you should implement this function. |
| * |
| * Default implementation throws tcu::NotSupportedError exception. |
| * |
| * \return Reference to GL platform interface. |
| *//*--------------------------------------------------------------------*/ |
| virtual const glu::Platform& getGLPlatform (void) const; |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Get EGL platform interface |
| * |
| * EGL-specific platform interface is defined by eglu::Platform. If your |
| * platform port supports EGL, you should implement this function. |
| * |
| * Default implementation throws tcu::NotSupportedError exception. |
| * |
| * \return Reference to EGL platform interface. |
| *//*--------------------------------------------------------------------*/ |
| virtual const eglu::Platform& getEGLPlatform (void) const; |
| |
| virtual const vk::Platform& getVulkanPlatform (void) const; |
| }; |
| |
| } // tcu |
| |
| #endif // _TCUPLATFORM_HPP |