tcuAndroidPlatform.cpp revision b1a7d2198497be32dfc22386f99945656ff4080e
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 Android EGL platform.
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuAndroidPlatform.hpp"
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluRenderContext.hpp"
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluNativeDisplay.hpp"
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluNativeWindow.hpp"
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluGLContextFactory.hpp"
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluUtil.hpp"
303c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include "eglwLibrary.hpp"
313c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include "eglwEnums.hpp"
32b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos#include "tcuFunctionLibrary.hpp"
333c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos
343c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos// Assume no call translation is needed
353c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include <android/native_window.h>
363c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosstruct egl_native_pixmap_t;
373c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry HaulosDE_STATIC_ASSERT(sizeof(eglw::EGLNativeDisplayType) == sizeof(void*));
383c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry HaulosDE_STATIC_ASSERT(sizeof(eglw::EGLNativePixmapType) == sizeof(struct egl_native_pixmap_t*));
393c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry HaulosDE_STATIC_ASSERT(sizeof(eglw::EGLNativeWindowType) == sizeof(ANativeWindow*));
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace tcu
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace Android
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
463c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosusing namespace eglw;
473c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystatic const eglu::NativeDisplay::Capability	DISPLAY_CAPABILITIES	= eglu::NativeDisplay::CAPABILITY_GET_DISPLAY_LEGACY;
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystatic const eglu::NativeWindow::Capability		WINDOW_CAPABILITIES		= (eglu::NativeWindow::Capability)(eglu::NativeWindow::CAPABILITY_CREATE_SURFACE_LEGACY |
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry																										   eglu::NativeWindow::CAPABILITY_SET_SURFACE_SIZE |
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry																										   eglu::NativeWindow::CAPABILITY_GET_SCREEN_SIZE);
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass NativeDisplay : public eglu::NativeDisplay
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
563c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos									NativeDisplay			(void) : eglu::NativeDisplay(DISPLAY_CAPABILITIES), m_library("libEGL.so") {}
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual							~NativeDisplay			(void) {}
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
593c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos	virtual EGLNativeDisplayType	getLegacyNative			(void)			{ return EGL_DEFAULT_DISPLAY;	}
603c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos	virtual const eglw::Library&	getLibrary				(void) const	{ return m_library;				}
613c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos
623c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosprivate:
633c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos	eglw::DefaultLibrary			m_library;
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass NativeDisplayFactory : public eglu::NativeDisplayFactory
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
69217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos									NativeDisplayFactory	(WindowRegistry& windowRegistry);
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry									~NativeDisplayFactory	(void) {}
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual eglu::NativeDisplay*	createDisplay			(const EGLAttrib* attribList) const;
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass NativeWindow : public eglu::NativeWindow
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
78217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos									NativeWindow			(Window* window, int width, int height, int32_t format);
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual							~NativeWindow			(void);
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
81217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	virtual EGLNativeWindowType		getLegacyNative			(void)			{ return m_window->getNativeWindow();	}
82217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	IVec2							getScreenSize			(void) const	{ return m_window->getSize();			}
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void							setSurfaceSize			(IVec2 size);
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual void					processEvents			(void);
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
89217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	Window*							m_window;
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	int32_t							m_format;
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass NativeWindowFactory : public eglu::NativeWindowFactory
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
96217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos									NativeWindowFactory		(WindowRegistry& windowRegistry);
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry									~NativeWindowFactory	(void);
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual eglu::NativeWindow*		createWindow			(eglu::NativeDisplay* nativeDisplay, const eglu::WindowParams& params) const;
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual eglu::NativeWindow*		createWindow			(eglu::NativeDisplay* nativeDisplay, EGLDisplay display, EGLConfig config, const EGLAttrib* attribList, const eglu::WindowParams& params) const;
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
103217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	virtual eglu::NativeWindow*		createWindow			(const eglu::WindowParams& params, int32_t format) const;
104217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos
105217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	WindowRegistry&					m_windowRegistry;
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// NativeWindow
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
110217426c2d19d5247e094e363615d7a0b84daf3a7Pyry HaulosNativeWindow::NativeWindow (Window* window, int width, int height, int32_t format)
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	: eglu::NativeWindow	(WINDOW_CAPABILITIES)
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	, m_window				(window)
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	, m_format				(format)
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	// Set up buffers.
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	setSurfaceSize(IVec2(width, height));
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1193c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNativeWindow::~NativeWindow (void)
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
121217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	m_window->release();
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid NativeWindow::processEvents (void)
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
126217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	if (m_window->isPendingDestroy())
127217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos		throw eglu::WindowDestroyedError("Window has been destroyed");
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid NativeWindow::setSurfaceSize (tcu::IVec2 size)
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
132217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	m_window->setBuffersGeometry(size.x() != eglu::WindowParams::SIZE_DONT_CARE ? size.x() : 0,
133217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos								 size.y() != eglu::WindowParams::SIZE_DONT_CARE ? size.y() : 0,
134217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos								 m_format);
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// NativeWindowFactory
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
139217426c2d19d5247e094e363615d7a0b84daf3a7Pyry HaulosNativeWindowFactory::NativeWindowFactory (WindowRegistry& windowRegistry)
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	: eglu::NativeWindowFactory	("default", "Default display", WINDOW_CAPABILITIES)
141217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	, m_windowRegistry			(windowRegistry)
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1453c827367444ee418f129b2c238299f49d3264554Jarkko PoyryNativeWindowFactory::~NativeWindowFactory (void)
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyryeglu::NativeWindow* NativeWindowFactory::createWindow (eglu::NativeDisplay* nativeDisplay, const eglu::WindowParams& params) const
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	DE_UNREF(nativeDisplay);
152217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	return createWindow(params, WINDOW_FORMAT_RGBA_8888);
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyryeglu::NativeWindow* NativeWindowFactory::createWindow (eglu::NativeDisplay* nativeDisplay, EGLDisplay display, EGLConfig config, const EGLAttrib* attribList, const eglu::WindowParams& params) const
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1573c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos	const int32_t format = (int32_t)eglu::getConfigAttribInt(nativeDisplay->getLibrary(), display, config, EGL_NATIVE_VISUAL_ID);
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	DE_UNREF(nativeDisplay && attribList);
159217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	return createWindow(params, format);
160217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos}
161217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos
162217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos
163217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Hauloseglu::NativeWindow* NativeWindowFactory::createWindow (const eglu::WindowParams& params, int32_t format) const
164217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos{
165217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	Window* window = m_windowRegistry.tryAcquireWindow();
166217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos
167217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	if (!window)
168217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos		throw ResourceError("Native window is not available", DE_NULL, __FILE__, __LINE__);
169217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos
170217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	return new NativeWindow(window, params.width, params.height, format);
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// NativeDisplayFactory
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
175217426c2d19d5247e094e363615d7a0b84daf3a7Pyry HaulosNativeDisplayFactory::NativeDisplayFactory (WindowRegistry& windowRegistry)
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	: eglu::NativeDisplayFactory("default", "Default display", DISPLAY_CAPABILITIES)
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
178217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	m_nativeWindowRegistry.registerFactory(new NativeWindowFactory(windowRegistry));
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyryeglu::NativeDisplay* NativeDisplayFactory::createDisplay (const EGLAttrib* attribList) const
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	DE_UNREF(attribList);
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return new NativeDisplay();
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos// Vulkan
18823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
18923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosclass VulkanLibrary : public vk::Library
19023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos{
19123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulospublic:
19223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	VulkanLibrary (void)
19323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos		: m_library	("libvulkan.so")
194b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos		, m_driver	(m_library)
19523c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	{
19623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	}
19723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
19823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	const vk::PlatformInterface& getPlatformInterface (void) const
19923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	{
20023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos		return m_driver;
20123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	}
20223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
20323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosprivate:
204b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	const tcu::DynamicFunctionLibrary	m_library;
205b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	const vk::PlatformDriver			m_driver;
20623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos};
20723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// Platform
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
210217426c2d19d5247e094e363615d7a0b84daf3a7Pyry HaulosPlatform::Platform (void)
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
212217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	m_nativeDisplayFactoryRegistry.registerFactory(new NativeDisplayFactory(m_windowRegistry));
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	m_contextFactoryRegistry.registerFactory(new eglu::GLContextFactory(m_nativeDisplayFactoryRegistry));
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2163c827367444ee418f129b2c238299f49d3264554Jarkko PoyryPlatform::~Platform (void)
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
220217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulosbool Platform::processEvents (void)
221217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos{
222217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	m_windowRegistry.garbageCollect();
223217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos	return true;
224217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos}
225217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos
22623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosvk::Library* Platform::createLibrary (void) const
22723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos{
22823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	return new VulkanLibrary();
22923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos}
23023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // Android
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // tcu
233