Merge upstream-vulkan-cts-1.0-dev into master
[platform/upstream/VK-GL-CTS.git] / framework / opengl / gluPlatform.hpp
1 #ifndef _GLUPLATFORM_HPP
2 #define _GLUPLATFORM_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program OpenGL ES Utilities
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 OpenGL platform interface.
24  *//*--------------------------------------------------------------------*/
25
26 #include "tcuDefs.hpp"
27 #include "gluContextFactory.hpp"
28
29 namespace tcu
30 {
31 class CommandLine;
32 }
33
34 namespace glu
35 {
36
37 /*--------------------------------------------------------------------*//*!
38  * \brief OpenGL (ES) platform interface
39  *
40  * OpenGL (ES) platform interface provides abstraction for GL context
41  * creation. A single platform may support multiple methods for creating
42  * rendering contexts (such as GLX and EGL on Linux). This is accomplished
43  * by having a list of GL context factories (m_contextFactoryRegistry).
44  *
45  * Context factory is selected on run-time using --deqp-gl-context-type
46  * command line argument. If no such argument is given, first entry
47  * is used as default.
48  *
49  * See glu::ContextFactory and glu::RenderContext for complete details
50  * on the porting layer.
51  *
52  * If your platform supports EGL and you have implemented eglu::Platform,
53  * you may enable EGL support just by registering eglu::GLContextFactory.
54  *
55  * OpenGL (ES) platform implementation is required by OpenGL (ES) tests.
56  * It is NOT required by EGL or OpenCL tests.
57  *//*--------------------------------------------------------------------*/
58 class Platform
59 {
60 public:
61                                                                         Platform                                                (void);
62                                                                         ~Platform                                               (void);
63
64         const ContextFactoryRegistry&   getContextFactoryRegistry               (void) const { return m_contextFactoryRegistry; }
65
66 protected:
67
68         //! GL context factory registry. Add your context factories here in constructor.
69         ContextFactoryRegistry                  m_contextFactoryRegistry;
70 };
71
72 } // glu
73
74 #endif // _GLUPLATFORM_HPP