Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/tests/test_expectations/GPUTestExpectationsTest.cpp
1693 views
1
//
2
// Copyright 2019 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
// GPUTestExpectationsTest.cpp : Tests of the test_expectations library.
8
9
#include "test_expectations/GPUTestConfig.h"
10
#include "test_expectations/GPUTestExpectationsParser.h"
11
#include "test_utils/ANGLETest.h"
12
13
namespace angle
14
{
15
16
class GPUTestConfigTest : public ANGLETest
17
{
18
protected:
19
GPUTestConfigTest() {}
20
21
// todo(jonahr): Eventually could add support for all conditions/operating
22
// systems, but these are the ones in use for now
23
void validateConfigBase(const GPUTestConfig &config)
24
{
25
EXPECT_EQ(IsWindows(), config.getConditions()[GPUTestConfig::kConditionWin]);
26
EXPECT_EQ(IsOSX(), config.getConditions()[GPUTestConfig::kConditionMac]);
27
EXPECT_EQ(IsIOS(), config.getConditions()[GPUTestConfig::kConditionIOS]);
28
EXPECT_EQ(IsLinux(), config.getConditions()[GPUTestConfig::kConditionLinux]);
29
EXPECT_EQ(IsAndroid(), config.getConditions()[GPUTestConfig::kConditionAndroid]);
30
EXPECT_EQ(IsNexus5X(), config.getConditions()[GPUTestConfig::kConditionNexus5X]);
31
EXPECT_EQ((IsPixel2() || IsPixel2XL()),
32
config.getConditions()[GPUTestConfig::kConditionPixel2OrXL]);
33
EXPECT_EQ(IsIntel(), config.getConditions()[GPUTestConfig::kConditionIntel]);
34
EXPECT_EQ(IsAMD(), config.getConditions()[GPUTestConfig::kConditionAMD]);
35
EXPECT_EQ(IsNVIDIA(), config.getConditions()[GPUTestConfig::kConditionNVIDIA]);
36
EXPECT_EQ(IsDebug(), config.getConditions()[GPUTestConfig::kConditionDebug]);
37
EXPECT_EQ(IsRelease(), config.getConditions()[GPUTestConfig::kConditionRelease]);
38
}
39
40
void validateConfigAPI(const GPUTestConfig &config,
41
const GPUTestConfig::API &api,
42
uint32_t preRotation,
43
bool enableDirectSPIRVGen)
44
{
45
bool D3D9 = false;
46
bool D3D11 = false;
47
bool GLDesktop = false;
48
bool GLES = false;
49
bool Vulkan = false;
50
bool Metal = false;
51
switch (api)
52
{
53
case GPUTestConfig::kAPID3D9:
54
D3D9 = true;
55
break;
56
case GPUTestConfig::kAPID3D11:
57
D3D11 = true;
58
break;
59
case GPUTestConfig::kAPIGLDesktop:
60
GLDesktop = true;
61
break;
62
case GPUTestConfig::kAPIGLES:
63
GLES = true;
64
break;
65
case GPUTestConfig::kAPIVulkan:
66
Vulkan = true;
67
break;
68
case GPUTestConfig::kAPIMetal:
69
Metal = true;
70
break;
71
case GPUTestConfig::kAPIUnknown:
72
default:
73
break;
74
}
75
EXPECT_EQ(D3D9, config.getConditions()[GPUTestConfig::kConditionD3D9]);
76
EXPECT_EQ(D3D11, config.getConditions()[GPUTestConfig::kConditionD3D11]);
77
EXPECT_EQ(GLDesktop, config.getConditions()[GPUTestConfig::kConditionGLDesktop]);
78
EXPECT_EQ(GLES, config.getConditions()[GPUTestConfig::kConditionGLES]);
79
EXPECT_EQ(Vulkan, config.getConditions()[GPUTestConfig::kConditionVulkan]);
80
EXPECT_EQ(Metal, config.getConditions()[GPUTestConfig::kConditionMetal]);
81
82
switch (preRotation)
83
{
84
case 90:
85
EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation]);
86
EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation90]);
87
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation180]);
88
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation270]);
89
break;
90
case 180:
91
EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation]);
92
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation90]);
93
EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation180]);
94
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation270]);
95
break;
96
case 270:
97
EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation]);
98
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation90]);
99
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation180]);
100
EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation270]);
101
break;
102
default:
103
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation]);
104
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation90]);
105
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation180]);
106
EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation270]);
107
break;
108
}
109
110
EXPECT_EQ(enableDirectSPIRVGen, config.getConditions()[GPUTestConfig::kConditionSPIRVGen]);
111
}
112
};
113
114
// Create a new GPUTestConfig and make sure all the condition flags were set
115
// correctly based on the hardware.
116
TEST_P(GPUTestConfigTest, GPUTestConfigConditions)
117
{
118
GPUTestConfig config;
119
validateConfigBase(config);
120
}
121
122
// Create a new GPUTestConfig with each backend specified and validate the
123
// condition flags are set correctly.
124
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_D3D9)
125
{
126
GPUTestConfig config(GPUTestConfig::kAPID3D9, 0, false);
127
validateConfigAPI(config, GPUTestConfig::kAPID3D9, 0, false);
128
}
129
130
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_D3D11)
131
{
132
GPUTestConfig config(GPUTestConfig::kAPID3D11, 0, false);
133
validateConfigAPI(config, GPUTestConfig::kAPID3D11, 0, false);
134
}
135
136
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Metal)
137
{
138
GPUTestConfig config(GPUTestConfig::kAPIMetal, 0, false);
139
validateConfigAPI(config, GPUTestConfig::kAPIMetal, 0, false);
140
}
141
142
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_GLDesktop)
143
{
144
GPUTestConfig config(GPUTestConfig::kAPIGLDesktop, 0, false);
145
validateConfigAPI(config, GPUTestConfig::kAPIGLDesktop, 0, false);
146
}
147
148
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_GLES)
149
{
150
GPUTestConfig config(GPUTestConfig::kAPIGLES, 0, false);
151
validateConfigAPI(config, GPUTestConfig::kAPIGLES, 0, false);
152
}
153
154
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan)
155
{
156
GPUTestConfig config(GPUTestConfig::kAPIVulkan, 0, false);
157
validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 0, false);
158
}
159
160
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan_PreRotation90)
161
{
162
GPUTestConfig config(GPUTestConfig::kAPIVulkan, 90, false);
163
validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 90, false);
164
}
165
166
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan_PreRotation180)
167
{
168
GPUTestConfig config(GPUTestConfig::kAPIVulkan, 180, false);
169
validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 180, false);
170
}
171
172
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan_PreRotation270)
173
{
174
GPUTestConfig config(GPUTestConfig::kAPIVulkan, 270, false);
175
validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 270, false);
176
}
177
178
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan_PreRotation270_DirectSPIRVGen)
179
{
180
GPUTestConfig config(GPUTestConfig::kAPIVulkan, 270, true);
181
validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 270, true);
182
}
183
184
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
185
// tests should be run against.
186
ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(GPUTestConfigTest);
187
188
} // namespace angle
189
190