1*35238bceSAndroid Build Coastguard Worker #ifndef _EGLUGLFUNCTIONLOADER_HPP 2*35238bceSAndroid Build Coastguard Worker #define _EGLUGLFUNCTIONLOADER_HPP 3*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program EGL Module 5*35238bceSAndroid Build Coastguard Worker * --------------------------------------- 6*35238bceSAndroid Build Coastguard Worker * 7*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project 8*35238bceSAndroid Build Coastguard Worker * 9*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 10*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 11*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 12*35238bceSAndroid Build Coastguard Worker * 13*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 14*35238bceSAndroid Build Coastguard Worker * 15*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 16*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 17*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 19*35238bceSAndroid Build Coastguard Worker * limitations under the License. 20*35238bceSAndroid Build Coastguard Worker * 21*35238bceSAndroid Build Coastguard Worker *//*! 22*35238bceSAndroid Build Coastguard Worker * \file 23*35238bceSAndroid Build Coastguard Worker * \brief glw::FunctionLoader using eglGetProcAddress() and tcu::Library. 24*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/ 25*35238bceSAndroid Build Coastguard Worker 26*35238bceSAndroid Build Coastguard Worker #include "tcuDefs.hpp" 27*35238bceSAndroid Build Coastguard Worker #include "tcuFunctionLibrary.hpp" 28*35238bceSAndroid Build Coastguard Worker #include "glwFunctionLoader.hpp" 29*35238bceSAndroid Build Coastguard Worker #include "gluRenderContext.hpp" 30*35238bceSAndroid Build Coastguard Worker 31*35238bceSAndroid Build Coastguard Worker namespace tcu 32*35238bceSAndroid Build Coastguard Worker { 33*35238bceSAndroid Build Coastguard Worker class CommandLine; 34*35238bceSAndroid Build Coastguard Worker } 35*35238bceSAndroid Build Coastguard Worker 36*35238bceSAndroid Build Coastguard Worker namespace eglw 37*35238bceSAndroid Build Coastguard Worker { 38*35238bceSAndroid Build Coastguard Worker class Library; 39*35238bceSAndroid Build Coastguard Worker } 40*35238bceSAndroid Build Coastguard Worker 41*35238bceSAndroid Build Coastguard Worker namespace eglu 42*35238bceSAndroid Build Coastguard Worker { 43*35238bceSAndroid Build Coastguard Worker 44*35238bceSAndroid Build Coastguard Worker class Platform; 45*35238bceSAndroid Build Coastguard Worker 46*35238bceSAndroid Build Coastguard Worker class GLFunctionLoader : public glw::FunctionLoader 47*35238bceSAndroid Build Coastguard Worker { 48*35238bceSAndroid Build Coastguard Worker public: 49*35238bceSAndroid Build Coastguard Worker GLFunctionLoader(const eglw::Library &egl, const tcu::FunctionLibrary *platformLibrary); 50*35238bceSAndroid Build Coastguard Worker glw::GenericFuncType get(const char *name) const; 51*35238bceSAndroid Build Coastguard Worker 52*35238bceSAndroid Build Coastguard Worker private: 53*35238bceSAndroid Build Coastguard Worker GLFunctionLoader(const GLFunctionLoader &); 54*35238bceSAndroid Build Coastguard Worker GLFunctionLoader &operator=(const GLFunctionLoader &); 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard Worker const eglw::Library &m_egl; 57*35238bceSAndroid Build Coastguard Worker const tcu::FunctionLibrary 58*35238bceSAndroid Build Coastguard Worker *const m_library; //!< Base platform library for functions. Used if eglGetProcAddress() fails. 59*35238bceSAndroid Build Coastguard Worker }; 60*35238bceSAndroid Build Coastguard Worker 61*35238bceSAndroid Build Coastguard Worker class GLLibraryCache 62*35238bceSAndroid Build Coastguard Worker { 63*35238bceSAndroid Build Coastguard Worker public: 64*35238bceSAndroid Build Coastguard Worker GLLibraryCache(const Platform &platform, const tcu::CommandLine &cmdLine); 65*35238bceSAndroid Build Coastguard Worker ~GLLibraryCache(void); 66*35238bceSAndroid Build Coastguard Worker 67*35238bceSAndroid Build Coastguard Worker const tcu::FunctionLibrary *getLibrary(glu::ApiType apiType); 68*35238bceSAndroid Build Coastguard Worker 69*35238bceSAndroid Build Coastguard Worker private: 70*35238bceSAndroid Build Coastguard Worker GLLibraryCache &operator=(const GLLibraryCache &other); 71*35238bceSAndroid Build Coastguard Worker GLLibraryCache(const GLLibraryCache &other); 72*35238bceSAndroid Build Coastguard Worker 73*35238bceSAndroid Build Coastguard Worker typedef std::map<uint32_t, tcu::FunctionLibrary *> LibraryMap; 74*35238bceSAndroid Build Coastguard Worker 75*35238bceSAndroid Build Coastguard Worker const Platform &m_platform; 76*35238bceSAndroid Build Coastguard Worker const tcu::CommandLine &m_cmdLine; 77*35238bceSAndroid Build Coastguard Worker 78*35238bceSAndroid Build Coastguard Worker LibraryMap m_libraries; 79*35238bceSAndroid Build Coastguard Worker }; 80*35238bceSAndroid Build Coastguard Worker 81*35238bceSAndroid Build Coastguard Worker } // namespace eglu 82*35238bceSAndroid Build Coastguard Worker 83*35238bceSAndroid Build Coastguard Worker #endif // _EGLUGLFUNCTIONLOADER_HPP 84