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