• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*-------------------------------------------------------------------------
2  * drawElements Quality Program Tester Core
3  * ----------------------------------------
4  *
5  * Copyright (c) 2014 The Android Open Source Project
6  * Copyright (c) 2016 The Khronos Group Inc.
7  * Copyright (c) 2016 Mun Gwan-gyeong <elongbug@gmail.com>
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 wayland Platform.
24  *//*--------------------------------------------------------------------*/
25 
26 #include "tcuWaylandPlatform.hpp"
27 #include "tcuWaylandEglPlatform.hpp"
28 
29 #include "deUniquePtr.hpp"
30 #include "gluPlatform.hpp"
31 #include "vkPlatform.hpp"
32 #include "tcuWayland.hpp"
33 #include "tcuWaylandVulkanPlatform.hpp"
34 #include "tcuFunctionLibrary.hpp"
35 #include "deMemory.h"
36 
37 #include <sys/utsname.h>
38 
39 namespace tcu
40 {
41 namespace wayland
42 {
43 
44 class WaylandGLPlatform : public glu::Platform
45 {
46 public:
registerFactory(de::MovePtr<glu::ContextFactory> factory)47 	void		registerFactory	(de::MovePtr<glu::ContextFactory> factory)
48 	{
49 		m_contextFactoryRegistry.registerFactory(factory.release());
50 	}
51 };
52 
53 class WaylandPlatform : public tcu::Platform
54 {
55 public:
56 							WaylandPlatform	(void);
processEvents(void)57 	bool					processEvents	(void) { return !m_eventState.getQuitFlag(); }
getGLPlatform(void) const58 	const glu::Platform&	getGLPlatform	(void) const { return m_glPlatform; }
getEGLPlatform(void) const59 	const eglu::Platform&	getEGLPlatform	(void) const { return m_eglPlatform; }
getVulkanPlatform(void) const60 	const vk::Platform&		getVulkanPlatform	(void) const { return m_vkPlatform; }
61 
62 
63 private:
64 	EventState				m_eventState;
65 	wayland::egl::Platform	m_eglPlatform;
66 	WaylandGLPlatform		m_glPlatform;
67 	WaylandVulkanPlatform	m_vkPlatform;
68 };
69 
WaylandPlatform(void)70 WaylandPlatform::WaylandPlatform (void)
71 	: m_eglPlatform	(m_eventState)
72 	, m_vkPlatform	(m_eventState)
73 {
74 	m_glPlatform.registerFactory(m_eglPlatform.createContextFactory());
75 }
76 
77 } // wayland
78 } // tcu
79 
createPlatform(void)80 tcu::Platform* createPlatform (void)
81 {
82 	return new tcu::wayland::WaylandPlatform();
83 }
84