1 //
2 // Copyright 2015 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 // EGLReadinessCheckTest.cpp:
8 // Tests used to check environment in which other tests are run.
9
10 #include <gtest/gtest.h>
11
12 #include "gpu_info_util/SystemInfo.h"
13 #include "test_utils/ANGLETest.h"
14 #include "test_utils/angle_test_instantiate.h"
15
16 using namespace angle;
17
18 class EGLReadinessCheckTest : public ANGLETest<>
19 {};
20
21 // Checks the tests are running against ANGLE
TEST_P(EGLReadinessCheckTest,IsRunningOnANGLE)22 TEST_P(EGLReadinessCheckTest, IsRunningOnANGLE)
23 {
24 const char *extensionString =
25 static_cast<const char *>(eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS));
26 ASSERT_NE(strstr(extensionString, "EGL_ANGLE_platform_angle"), nullptr);
27 }
28
29 // Checks that getting function pointer works
TEST_P(EGLReadinessCheckTest,HasGetPlatformDisplayEXT)30 TEST_P(EGLReadinessCheckTest, HasGetPlatformDisplayEXT)
31 {
32 ASSERT_NE(eglGetPlatformDisplayEXT, nullptr);
33 }
34
35 // Checks that calling GetProcAddress for a non-existant function fails.
TEST_P(EGLReadinessCheckTest,GetProcAddressNegativeTest)36 TEST_P(EGLReadinessCheckTest, GetProcAddressNegativeTest)
37 {
38 auto check = eglGetProcAddress("WigglyWombats");
39 EXPECT_EQ(nullptr, check);
40 }
41
42 // Tests that our allowlist function generally maps to our support function.
43 // We can add specific exceptions here if needed.
44 // Disabled because it was creating a large number of configs. This could even result
45 // in a BDOD on Windows.
TEST_P(EGLReadinessCheckTest,DISABLED_AllowlistMatchesSupport)46 TEST_P(EGLReadinessCheckTest, DISABLED_AllowlistMatchesSupport)
47 {
48 // Has issues with Vulkan support detection on Android.
49 ANGLE_SKIP_TEST_IF(IsAndroid());
50
51 // Cannot make any useful checks if SystemInfo is not supported.
52 SystemInfo systemInfo;
53 ANGLE_SKIP_TEST_IF(!GetSystemInfo(&systemInfo));
54
55 auto check = [&systemInfo](const PlatformParameters ¶ms) {
56 EXPECT_EQ(IsConfigAllowlisted(systemInfo, params), IsConfigSupported(params)) << params;
57 };
58
59 check(ES1_OPENGL());
60 check(ES2_OPENGL());
61 check(ES3_OPENGL());
62 check(ES31_OPENGL());
63
64 check(ES1_OPENGLES());
65 check(ES2_OPENGLES());
66 check(ES3_OPENGLES());
67 check(ES31_OPENGLES());
68
69 check(ES1_D3D9());
70 check(ES2_D3D9());
71
72 check(ES1_D3D11());
73 check(ES2_D3D11());
74 check(ES3_D3D11());
75 check(ES31_D3D11());
76
77 check(ES1_VULKAN());
78 check(ES2_VULKAN());
79 check(ES3_VULKAN());
80
81 check(ES1_VULKAN_NULL());
82 check(ES2_VULKAN_NULL());
83 check(ES3_VULKAN_NULL());
84
85 check(ES1_NULL());
86 check(ES2_NULL());
87 check(ES3_NULL());
88 check(ES31_NULL());
89 }
90
91 ANGLE_INSTANTIATE_TEST(EGLReadinessCheckTest, WithNoFixture(PlatformParameters()));
92