13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef _EGLUGLFUNCTIONLOADER_HPP 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define _EGLUGLFUNCTIONLOADER_HPP 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program EGL Module 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * --------------------------------------- 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief glw::FunctionLoader using eglGetProcAddress() and tcu::Library. 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuDefs.hpp" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuFunctionLibrary.hpp" 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glwFunctionLoader.hpp" 293c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include "gluRenderContext.hpp" 303c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 313c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosnamespace tcu 323c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos{ 333c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosclass CommandLine; 343c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos} 353c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 363c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosnamespace eglw 373c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos{ 383c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosclass Library; 393c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos} 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace eglu 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 443c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosclass Platform; 453c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass GLFunctionLoader : public glw::FunctionLoader 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic: 493c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos GLFunctionLoader (const eglw::Library& egl, const tcu::FunctionLibrary* platformLibrary); 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry glw::GenericFuncType get (const char* name) const; 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate: 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry GLFunctionLoader (const GLFunctionLoader&); 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry GLFunctionLoader& operator= (const GLFunctionLoader&); 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 563c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const eglw::Library& m_egl; 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const tcu::FunctionLibrary* const m_library; //!< Base platform library for functions. Used if eglGetProcAddress() fails. 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 603c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosclass GLLibraryCache 613c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos{ 623c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulospublic: 633c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos GLLibraryCache (const Platform& platform, const tcu::CommandLine& cmdLine); 643c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos ~GLLibraryCache (void); 653c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 663c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const tcu::FunctionLibrary* getLibrary (glu::ApiType apiType); 673c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 683c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosprivate: 693c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos GLLibraryCache& operator= (const GLLibraryCache& other); 703c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos GLLibraryCache (const GLLibraryCache& other); 713c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 723c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos typedef std::map<deUint32, tcu::FunctionLibrary*> LibraryMap; 733c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 743c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const Platform& m_platform; 753c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const tcu::CommandLine& m_cmdLine; 763c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 773c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos LibraryMap m_libraries; 783c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos}; 793c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // eglu 813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif // _EGLUGLFUNCTIONLOADER_HPP 83