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