tcuWin32Platform.cpp revision 3c827367444ee418f129b2c238299f49d3264554
1fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org/*------------------------------------------------------------------------- 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org * drawElements Quality Program Tester Core 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org * ---------------------------------------- 4ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * 5ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * Copyright 2014 The Android Open Source Project 6ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * 7ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * Licensed under the Apache License, Version 2.0 (the "License"); 8ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * you may not use this file except in compliance with the License. 9ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * You may obtain a copy of the License at 1079e7902fa5f94747b5383dd40f3002dd8b62303arossberg@chromium.org * 11ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * http://www.apache.org/licenses/LICENSE-2.0 12ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * 13ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * Unless required by applicable law or agreed to in writing, software 14ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * distributed under the License is distributed on an "AS IS" BASIS, 15ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 164efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org * See the License for the specific language governing permissions and 17ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * limitations under the License. 18ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * 19ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org *//*! 20ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org * \file 21304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * \brief Win32 platform port. 22ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org *//*--------------------------------------------------------------------*/ 23ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 24ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org#include "tcuWin32Platform.hpp" 25ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org#include "tcuWGLContextFactory.hpp" 26ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 27ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org#if defined(DEQP_SUPPORT_EGL) 28ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org# include "tcuWin32EGLNativeDisplayFactory.hpp" 29ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org# include "egluGLContextFactory.hpp" 30ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org#endif 3157a54ace4b6b45d5d6a7ff38d88ee9990d47f5e2machenbach@chromium.org 32ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.orgnamespace tcu 33ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org{ 34a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.org 35e8412be858dc48afaec4959e42c5932f71a7f29bmachenbach@chromium.orgWin32Platform::Win32Platform (void) 36ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org : m_instance(GetModuleHandle(NULL)) 3757a54ace4b6b45d5d6a7ff38d88ee9990d47f5e2machenbach@chromium.org{ 38ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org // Set process priority to lower. 39ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org SetPriorityClass(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS); 40ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 41ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org m_contextFactoryRegistry.registerFactory(new WGLContextFactory(m_instance)); 42ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 43ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org#if defined(DEQP_SUPPORT_EGL) 44ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org m_nativeDisplayFactoryRegistry.registerFactory(new Win32EGLNativeDisplayFactory(m_instance)); 45c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org m_contextFactoryRegistry.registerFactory(new eglu::GLContextFactory(m_nativeDisplayFactoryRegistry)); 46ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org#endif 47ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org} 48ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 49ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.orgWin32Platform::~Win32Platform (void) 50ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org{ 51750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org} 52750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org 53ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.orgbool Win32Platform::processEvents (void) 54c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com{ 5557a54ace4b6b45d5d6a7ff38d88ee9990d47f5e2machenbach@chromium.org MSG msg; 5657a54ace4b6b45d5d6a7ff38d88ee9990d47f5e2machenbach@chromium.org while (PeekMessage(&msg, (HWND)-1, 0, 0, PM_REMOVE)) 575924917d324a643d00a8aefee030bd4acea0de0bmachenbach@chromium.org { 58c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org DispatchMessage(&msg); 59ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org if (msg.message == WM_QUIT) 60ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org return false; 61ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org } 62ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org return true; 63e3b8d0fe80e858c990832db1233c069f8b8cd5c9mstarzinger@chromium.org} 64ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 65ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org} // tcu 66ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 6757a54ace4b6b45d5d6a7ff38d88ee9990d47f5e2machenbach@chromium.org// Create platform 68ca29dd85fa02449d17188f5a6ff9a7cdf2ad9680danno@chromium.orgtcu::Platform* createPlatform (void) 69ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org{ 70ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org return new tcu::Win32Platform(); 71ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org} 72ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org