• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-existent 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 // Checks that calling GetProcAddress for a null pointer function fails.
TEST_P(EGLReadinessCheckTest,GetProcAddressNullInput)43 TEST_P(EGLReadinessCheckTest, GetProcAddressNullInput)
44 {
45     auto check = eglGetProcAddress(nullptr);
46     EXPECT_EQ(nullptr, check);
47 }
48 
49 // Tests that our allowlist function generally maps to our support function.
50 // We can add specific exceptions here if needed.
51 // Disabled because it was creating a large number of configs. This could even result
52 // in a BSOD on Windows.
TEST_P(EGLReadinessCheckTest,DISABLED_AllowlistMatchesSupport)53 TEST_P(EGLReadinessCheckTest, DISABLED_AllowlistMatchesSupport)
54 {
55     // Has issues with Vulkan support detection on Android.
56     ANGLE_SKIP_TEST_IF(IsAndroid());
57 
58     // Cannot make any useful checks if SystemInfo is not supported.
59     SystemInfo systemInfo;
60     ANGLE_SKIP_TEST_IF(!GetSystemInfo(&systemInfo));
61 
62     auto check = [&systemInfo](const PlatformParameters &params) {
63         EXPECT_EQ(IsConfigAllowlisted(systemInfo, params), IsConfigSupported(params)) << params;
64     };
65 
66     check(ES1_OPENGL());
67     check(ES2_OPENGL());
68     check(ES3_OPENGL());
69     check(ES31_OPENGL());
70 
71     check(ES1_OPENGLES());
72     check(ES2_OPENGLES());
73     check(ES3_OPENGLES());
74     check(ES31_OPENGLES());
75 
76     check(ES1_D3D9());
77     check(ES2_D3D9());
78 
79     check(ES1_D3D11());
80     check(ES2_D3D11());
81     check(ES3_D3D11());
82     check(ES31_D3D11());
83 
84     check(ES1_VULKAN());
85     check(ES2_VULKAN());
86     check(ES3_VULKAN());
87 
88     check(ES1_VULKAN_NULL());
89     check(ES2_VULKAN_NULL());
90     check(ES3_VULKAN_NULL());
91 
92     check(ES1_NULL());
93     check(ES2_NULL());
94     check(ES3_NULL());
95     check(ES31_NULL());
96 }
97 
98 ANGLE_INSTANTIATE_TEST(EGLReadinessCheckTest, WithNoFixture(PlatformParameters()));
99