| /*------------------------------------------------------------------------- |
| * drawElements Quality Program Tester Core |
| * ---------------------------------------- |
| * |
| * Copyright 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| *//*! |
| * \file |
| * \brief Win32 platform port. |
| *//*--------------------------------------------------------------------*/ |
| |
| #include "tcuWin32Platform.hpp" |
| #include "tcuWGLContextFactory.hpp" |
| #include "tcuWin32EGLNativeDisplayFactory.hpp" |
| #include "egluGLContextFactory.hpp" |
| |
| namespace tcu |
| { |
| namespace win32 |
| { |
| |
| Platform::Platform (void) |
| : m_instance (GetModuleHandle(NULL)) |
| , m_vulkanPlatform (m_instance) |
| { |
| // Set process priority to lower. |
| SetPriorityClass(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS); |
| |
| { |
| wgl::ContextFactory* factory = DE_NULL; |
| |
| try |
| { |
| factory = new wgl::ContextFactory(m_instance); |
| } |
| catch (const std::exception& e) |
| { |
| print("Warning: WGL not supported: %s\n", e.what()); |
| } |
| |
| if (factory) |
| { |
| try |
| { |
| m_contextFactoryRegistry.registerFactory(factory); |
| } |
| catch (...) |
| { |
| delete factory; |
| throw; |
| } |
| } |
| } |
| |
| m_nativeDisplayFactoryRegistry.registerFactory(new win32::EGLNativeDisplayFactory(m_instance)); |
| m_contextFactoryRegistry.registerFactory(new eglu::GLContextFactory(m_nativeDisplayFactoryRegistry)); |
| } |
| |
| Platform::~Platform (void) |
| { |
| } |
| |
| bool Platform::processEvents (void) |
| { |
| MSG msg; |
| while (PeekMessage(&msg, (HWND)-1, 0, 0, PM_REMOVE)) |
| { |
| DispatchMessage(&msg); |
| if (msg.message == WM_QUIT) |
| return false; |
| } |
| return true; |
| } |
| |
| } // win32 |
| } // tcu |
| |
| // Create platform |
| tcu::Platform* createPlatform (void) |
| { |
| return new tcu::win32::Platform(); |
| } |