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