Merge vk-gl-cts/opengl-es-cts-3.2.3 into vk-gl-cts/opengl-es-cts-3.2.4
[platform/upstream/VK-GL-CTS.git] / framework / egl / egluGLFunctionLoader.hpp
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