diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp')
-rw-r--r-- | Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp new file mode 100644 index 000000000..a928d85e1 --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp @@ -0,0 +1,88 @@ +// +// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// angle_test_instantiate.cpp: Adds support for filtering parameterized +// tests by platform, so we skip unsupported configs. + +#include "test_utils/angle_test_instantiate.h" + +#include <map> +#include <iostream> + +#include "EGLWindow.h" +#include "OSWindow.h" +#include "test_utils/angle_test_configs.h" + +namespace angle +{ + +bool IsPlatformAvailable(const PlatformParameters ¶m) +{ + switch (param.getRenderer()) + { + case EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE: + break; + + case EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE: +#ifndef ANGLE_ENABLE_D3D9 + return false; +#endif + break; + + case EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE: +#ifndef ANGLE_ENABLE_D3D11 + return false; +#endif + break; + + case EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE: + case EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE: +#ifndef ANGLE_ENABLE_OPENGL + return false; +#endif + break; + + default: + UNREACHABLE(); + break; + } + + static std::map<PlatformParameters, bool> paramAvailabilityCache; + auto iter = paramAvailabilityCache.find(param); + if (iter != paramAvailabilityCache.end()) + { + return iter->second; + } + else + { + OSWindow *osWindow = CreateOSWindow(); + bool result = osWindow->initialize("CONFIG_TESTER", 1, 1); + + if (result) + { + EGLWindow *eglWindow = + new EGLWindow(param.majorVersion, param.minorVersion, param.eglParameters); + result = eglWindow->initializeGL(osWindow); + + eglWindow->destroyGL(); + SafeDelete(eglWindow); + } + + osWindow->destroy(); + SafeDelete(osWindow); + + paramAvailabilityCache[param] = result; + + if (!result) + { + std::cout << "Skipping tests using configuration " << param << " because it is not available." << std::endl; + } + + return result; + } +} + +} |