1 #ifndef _EGLUGLFUNCTIONLOADER_HPP
2 #define _EGLUGLFUNCTIONLOADER_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program EGL Module
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 glw::FunctionLoader using eglGetProcAddress() and tcu::Library.
24  *//*--------------------------------------------------------------------*/
25 
26 #include "tcuDefs.hpp"
27 #include "tcuFunctionLibrary.hpp"
28 #include "glwFunctionLoader.hpp"
29 #include "gluRenderContext.hpp"
30 
31 namespace tcu
32 {
33 class CommandLine;
34 }
35 
36 namespace eglw
37 {
38 class Library;
39 }
40 
41 namespace eglu
42 {
43 
44 class Platform;
45 
46 class GLFunctionLoader : public glw::FunctionLoader
47 {
48 public:
49 										GLFunctionLoader	(const eglw::Library& egl, const tcu::FunctionLibrary* platformLibrary);
50 	glw::GenericFuncType				get					(const char* name) const;
51 
52 private:
53 										GLFunctionLoader	(const GLFunctionLoader&);
54 	GLFunctionLoader&					operator=			(const GLFunctionLoader&);
55 
56 	const eglw::Library&				m_egl;
57 	const tcu::FunctionLibrary* const	m_library;			//!< Base platform library for functions. Used if eglGetProcAddress() fails.
58 };
59 
60 class GLLibraryCache
61 {
62 public:
63 								GLLibraryCache		(const Platform& platform, const tcu::CommandLine& cmdLine);
64 								~GLLibraryCache		(void);
65 
66 	const tcu::FunctionLibrary*	getLibrary			(glu::ApiType apiType);
67 
68 private:
69 	GLLibraryCache&				operator=			(const GLLibraryCache& other);
70 								GLLibraryCache		(const GLLibraryCache& other);
71 
72 	typedef std::map<deUint32, tcu::FunctionLibrary*> LibraryMap;
73 
74 	const Platform&				m_platform;
75 	const tcu::CommandLine&		m_cmdLine;
76 
77 	LibraryMap					m_libraries;
78 };
79 
80 } // eglu
81 
82 #endif // _EGLUGLFUNCTIONLOADER_HPP
83