13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*-------------------------------------------------------------------------
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program Tester Core
33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ----------------------------------------
43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project
63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License");
83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License.
93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at
103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *      http://www.apache.org/licenses/LICENSE-2.0
123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software
143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS,
153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and
173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License.
183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*!
203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file
213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief X11Egl Platform.
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuX11EglPlatform.hpp"
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluGLContextFactory.hpp"
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace tcu
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace x11
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace egl
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing std::string;
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing de::MovePtr;
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing de::UniquePtr;
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing glu::ContextFactory;
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing eglu::GLContextFactory;
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing eglu::NativeDisplay;
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing eglu::NativeDisplayFactory;
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing eglu::NativeWindow;
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing eglu::NativeWindowFactory;
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing eglu::NativePixmap;
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing eglu::NativePixmapFactory;
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing eglu::WindowParams;
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing tcu::TextureLevel;
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef EGL_PLATFORM_X11_EXT
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#	define EGL_PLATFORM_X11_EXT			0x31D5
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef EGL_PLATFORM_X11_SCREEN_EXT
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#	define EGL_PLATFORM_X11_SCREEN_EXT	0x31D6
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass Display : public NativeDisplay
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	static const Capability CAPABILITIES 		= Capability(CAPABILITY_GET_DISPLAY_LEGACY |
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 CAPABILITY_GET_DISPLAY_PLATFORM);
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							Display				(MovePtr<x11::Display> x11Display)
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry								: NativeDisplay	(CAPABILITIES,
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 EGL_PLATFORM_X11_EXT,
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 "EGL_EXT_platform_x11")
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry								, m_display		(x11Display) {}
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void*					getPlatformNative	(void) 	{ return m_display->getXDisplay(); }
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	EGLNativeDisplayType	getLegacyNative		(void)	{ return m_display->getXDisplay(); }
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	x11::Display&			getX11Display		(void)	{ return *m_display; }
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	UniquePtr<x11::Display>	m_display;
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass Window : public NativeWindow
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	static const Capability	CAPABILITIES		= Capability(CAPABILITY_CREATE_SURFACE_LEGACY |
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 CAPABILITY_CREATE_SURFACE_PLATFORM |
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 CAPABILITY_GET_SURFACE_SIZE |
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 CAPABILITY_SET_SURFACE_SIZE |
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 CAPABILITY_GET_SCREEN_SIZE);
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							Window				(Display&				display,
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 const WindowParams&	params,
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 Visual*				visual);
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	EGLNativeWindowType		getLegacyNative		(void) { return m_window.getXID(); }
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void*					getPlatformNative	(void) { return &m_window.getXID(); }
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	IVec2					getSurfaceSize		(void) const;
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void					setSurfaceSize		(IVec2 size);
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	IVec2					getScreenSize		(void) const { return getSurfaceSize(); }
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	x11::Window				m_window;
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1023c827367444ee418f129b2c238299f49d3264554Jarkko PoyryWindow::Window(Display& display, const WindowParams& params, Visual* visual)
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	: NativeWindow	(CAPABILITIES)
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	, m_window		(display.getX11Display(), params.width, params.height, visual)
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	m_window.setVisibility((params.visibility != WindowParams::VISIBILITY_HIDDEN));
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1093c827367444ee418f129b2c238299f49d3264554Jarkko PoyryIVec2 Window::getSurfaceSize (void) const
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	IVec2 ret;
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	m_window.getDimensions(&ret.x(), &ret.y());
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return ret;
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid Window::setSurfaceSize (IVec2 size)
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	m_window.setDimensions(size.x(), size.y());
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass WindowFactory : public NativeWindowFactory
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						WindowFactory		(void);
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	NativeWindow*		createWindow		(NativeDisplay*			nativeDisplay,
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 const WindowParams&	params) const;
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	NativeWindow*		createWindow		(NativeDisplay*			nativeDisplay,
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 EGLDisplay				display,
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 EGLConfig				config,
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 const EGLAttrib*		attribList,
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 const WindowParams&	params) const;
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1363c827367444ee418f129b2c238299f49d3264554Jarkko PoyryWindowFactory::WindowFactory (void)
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	: NativeWindowFactory ("window", "X11 Window", Window::CAPABILITIES)
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1413c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNativeWindow* WindowFactory::createWindow (NativeDisplay*		nativeDisplay,
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry										   const WindowParams&	params) const
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	Display&	display	= *dynamic_cast<Display*>(nativeDisplay);
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return new Window(display, params, DE_NULL);
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1493c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNativeWindow* WindowFactory::createWindow (NativeDisplay*			nativeDisplay,
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry										   EGLDisplay				eglDisplay,
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry										   EGLConfig				config,
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry										   const EGLAttrib*			attribList,
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry										   const WindowParams&		params) const
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	DE_UNREF(attribList);
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	Display&	display		= *dynamic_cast<Display*>(nativeDisplay);
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	EGLint		visualID	= 0;
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	::Visual*	visual		= DE_NULL;
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	eglGetConfigAttrib(eglDisplay, config, EGL_NATIVE_VISUAL_ID, &visualID);
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	if (visualID != 0)
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		visual = display.getX11Display().getVisual(visualID);
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return new Window(display, params, visual);
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#if 0
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass Pixmap : public NativePixmap
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	enum {
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		CAPABILITIES = (CAPABILITY_CREATE_SURFACE_LEGACY |
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						CAPABILITY_CREATE_SURFACE_PLATFORM |
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						CAPABILITY_READ_PIXELS)
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	};
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							Pixmap				(MovePtr<x11::Pixmap> x11Pixmap)
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry								: NativePixmap	(CAPABILITIES)
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry								, m_pixmap		(x11Pixmap) {}
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void*					getPlatformNative	(void) { return &m_pixmap.getXID(); }
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void					readPixels			(TextureLevel* dst);
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	UniquePtr<x11::Pixmap>	m_pixmap;
1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass PixmapFactory : public NativePixmapFactory
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					PixmapFactory	(void)
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						: NativePixmapFactory ("pixmap", "X11 Pixmap", Pixmap::CAPABILITIES) {}
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	NativePixmap*	createPixmap	(NativeDisplay* nativeDisplay,
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry									 int			width,
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry									 int			height) const;
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2003c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNativePixmap* PixmapFactory::createPixmap (NativeDisplay* nativeDisplay,
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry										   int			width,
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry										   int			height) const
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	Display*				display		= dynamic_cast<Display*>(nativeDisplay);
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	MovePtr<x11::Pixmap>	x11Pixmap	(new x11::Pixmap(display->getX11Display(),
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 width, height));
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return new Pixmap(x11Pixmap);
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass DisplayFactory : public NativeDisplayFactory
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						DisplayFactory		(EventState& eventState);
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	NativeDisplay*		createDisplay		(const EGLAttrib* attribList) const;
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	EventState&			m_eventState;
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2233c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDisplayFactory::DisplayFactory (EventState& eventState)
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	: NativeDisplayFactory	("x11", "Native X11 Display",
2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							 Display::CAPABILITIES,
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							 EGL_PLATFORM_X11_SCREEN_EXT,
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							 "EGL_EXT_platform_x11")
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	, m_eventState			(eventState)
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	m_nativeWindowRegistry.registerFactory(new WindowFactory());
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	// m_nativePixmapRegistry.registerFactory(new PixmapFactory());
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2343c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNativeDisplay* DisplayFactory::createDisplay (const EGLAttrib* attribList) const
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	DE_UNREF(attribList);
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	//! \todo [2014-03-18 lauri] Somehow make the display configurable from command line
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	MovePtr<x11::Display>	x11Display	(new x11::Display(m_eventState, DE_NULL));
2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return new Display(x11Display);
2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2443c827367444ee418f129b2c238299f49d3264554Jarkko PoyryPlatform::Platform (EventState& eventState)
2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	m_nativeDisplayFactoryRegistry.registerFactory(new DisplayFactory(eventState));
2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2493c827367444ee418f129b2c238299f49d3264554Jarkko PoyryMovePtr<ContextFactory> Platform::createContextFactory (void)
2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return MovePtr<ContextFactory>(new GLContextFactory(m_nativeDisplayFactoryRegistry));
2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // egl
2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // x11
2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // tcu
258