1 /*-------------------------------------------------------------------------
2  * OpenGL Conformance Test Suite
3  * -----------------------------
4  *
5  * Copyright (c) 2016 Google Inc.
6  * Copyright (c) 2016 The Khronos Group Inc.
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  *//*!
21  * \file
22  * \brief
23  *//*--------------------------------------------------------------------*/
24 
25 #include "tcuNullWSPlatform.hpp"
26 #include "eglwEnums.hpp"
27 #include "eglwLibrary.hpp"
28 #include "egluGLContextFactory.hpp"
29 
30 namespace tcu
31 {
32 namespace nullws
33 {
34 
35 class Window: public eglu::NativeWindow
36 {
37 public:
38 	static const Capability CAPABILITIES = CAPABILITY_CREATE_SURFACE_LEGACY;
39 
Window(eglu::NativeDisplay * nativeDisplay,const eglu::WindowParams & params)40 	Window(eglu::NativeDisplay* nativeDisplay, const eglu::WindowParams& params)
41 		: NativeWindow(CAPABILITIES)
42 	{
43 	}
44 
getLegacyNative()45 	eglw::EGLNativeWindowType getLegacyNative ()
46 	{
47 		return DE_NULL;
48 	}
49 };
50 
51 class WindowFactory: public eglu::NativeWindowFactory
52 {
53 public:
WindowFactory()54 	WindowFactory()
55 		: NativeWindowFactory("nullws", "NullWS Window", Window::CAPABILITIES)
56 	{
57 	}
58 
createWindow(eglu::NativeDisplay * nativeDisplay,const eglu::WindowParams & params) const59 	eglu::NativeWindow* createWindow(eglu::NativeDisplay* nativeDisplay, const eglu::WindowParams& params) const
60 	{
61 		return new Window(nativeDisplay, params);
62 	}
63 };
64 
65 class Pixmap: public eglu::NativePixmap
66 {
67 public:
68 	static const Capability CAPABILITIES = CAPABILITY_CREATE_SURFACE_LEGACY;
69 
Pixmap()70 	Pixmap()
71 		: NativePixmap(CAPABILITIES)
72 	{
73 	}
74 
getLegacyNative()75 	eglw::EGLNativePixmapType getLegacyNative ()
76 	{
77 		return DE_NULL;
78 	}
79 };
80 
81 class PixmapFactory: public eglu::NativePixmapFactory
82 {
83 public:
PixmapFactory()84 	PixmapFactory()
85 		: NativePixmapFactory("nullws", "NullWS Pixmap", Pixmap::CAPABILITIES)
86 	{
87 	}
88 
createPixmap(eglu::NativeDisplay *,int,int) const89 	eglu::NativePixmap* createPixmap (eglu::NativeDisplay*, int, int) const
90 	{
91 		return new Pixmap();
92 	}
93 };
94 
95 class Display: public eglu::NativeDisplay
96 {
97 public:
98 	static const Capability CAPABILITIES = CAPABILITY_GET_DISPLAY_LEGACY;
99 
Display()100 	Display()
101 		: eglu::NativeDisplay(CAPABILITIES)
102 	{
103 	}
104 
getLegacyNative()105 	eglw::EGLNativeDisplayType getLegacyNative()
106 	{
107 		return EGL_DEFAULT_DISPLAY;
108 	}
109 
getLibrary() const110 	const eglw::Library& getLibrary() const
111 	{
112 		return m_library;
113 	}
114 
115 private:
116 	eglw::DefaultLibrary m_library;
117 };
118 
119 
120 class DisplayFactory: public eglu::NativeDisplayFactory
121 {
122 public:
DisplayFactory()123 	DisplayFactory()
124 		: eglu::NativeDisplayFactory ("nullws", "NullWS Display", Display::CAPABILITIES)
125 	{
126 		m_nativeWindowRegistry.registerFactory(new WindowFactory());
127 		m_nativePixmapRegistry.registerFactory(new PixmapFactory());
128 	}
129 
createDisplay(const eglw::EGLAttrib * attribList=DE_NULL) const130 	eglu::NativeDisplay* createDisplay (const eglw::EGLAttrib* attribList = DE_NULL) const
131 	{
132 		return new Display();
133 	}
134 };
135 
Platform()136 Platform::Platform ()
137 {
138 	m_nativeDisplayFactoryRegistry.registerFactory(new DisplayFactory());
139 	m_contextFactoryRegistry.registerFactory(new eglu::GLContextFactory(m_nativeDisplayFactoryRegistry));
140 }
141 
~Platform()142 Platform::~Platform ()
143 {
144 }
145 
146 } // nullws
147 } // tcu
148 
createPlatform()149 tcu::Platform* createPlatform ()
150 {
151 	return new tcu::nullws::Platform();
152 }
153