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