c6d4460751f206cd0d438f64b0389c4ace2ed4d5
[WebKit-https.git] / Source / ThirdParty / ANGLE / src / tests / test_utils / angle_test_configs.h
1 //
2 // Copyright 2014 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 #ifndef ANGLE_TEST_CONFIGS_H_
8 #define ANGLE_TEST_CONFIGS_H_
9
10 // On Linux EGL/egl.h includes X.h which does defines for some very common
11 // names that are used by gtest (like None and Bool) and causes a lot of
12 // compilation errors. To work around this, even if this file doesn't use it,
13 // we include gtest before EGL so that it compiles fine in other files that
14 // want to use gtest.
15 #include <gtest/gtest.h>
16
17 #include <EGL/egl.h>
18 #include <EGL/eglext.h>
19
20 #include "angle_test_instantiate.h"
21 #include "util/EGLPlatformParameters.h"
22
23 namespace angle
24 {
25
26 struct PlatformParameters
27 {
28     PlatformParameters();
29     PlatformParameters(EGLint majorVersion,
30                        EGLint minorVersion,
31                        const EGLPlatformParameters &eglPlatformParameters);
32     PlatformParameters(EGLint majorVersion, EGLint minorVersion, GLESDriverType driver);
33
34     EGLint getRenderer() const;
35     EGLint getDeviceType() const;
36     bool isSwiftshader() const;
37
38     void initDefaultParameters();
39
40     auto tie() const
41     {
42         return std::tie(driver, noFixture, eglParameters, majorVersion, minorVersion);
43     }
44
45     GLESDriverType driver;
46     bool noFixture;
47     EGLPlatformParameters eglParameters;
48     EGLint majorVersion;
49     EGLint minorVersion;
50 };
51
52 const char *GetRendererName(EGLint renderer);
53
54 bool operator<(const PlatformParameters &a, const PlatformParameters &b);
55 bool operator==(const PlatformParameters &a, const PlatformParameters &b);
56 std::ostream &operator<<(std::ostream &stream, const PlatformParameters &pp);
57
58 // EGL platforms
59 namespace egl_platform
60 {
61
62 EGLPlatformParameters DEFAULT();
63 EGLPlatformParameters DEFAULT_NULL();
64
65 EGLPlatformParameters D3D9();
66 EGLPlatformParameters D3D9_NULL();
67 EGLPlatformParameters D3D9_REFERENCE();
68
69 EGLPlatformParameters D3D11();
70 EGLPlatformParameters D3D11_PRESENT_PATH_FAST();
71 EGLPlatformParameters D3D11_FL11_1();
72 EGLPlatformParameters D3D11_FL11_0();
73 EGLPlatformParameters D3D11_FL10_1();
74 EGLPlatformParameters D3D11_FL10_0();
75 EGLPlatformParameters D3D11_FL9_3();
76
77 EGLPlatformParameters D3D11_NULL();
78
79 EGLPlatformParameters D3D11_WARP();
80 EGLPlatformParameters D3D11_FL11_1_WARP();
81 EGLPlatformParameters D3D11_FL11_0_WARP();
82 EGLPlatformParameters D3D11_FL10_1_WARP();
83 EGLPlatformParameters D3D11_FL10_0_WARP();
84 EGLPlatformParameters D3D11_FL9_3_WARP();
85
86 EGLPlatformParameters D3D11_REFERENCE();
87 EGLPlatformParameters D3D11_FL11_1_REFERENCE();
88 EGLPlatformParameters D3D11_FL11_0_REFERENCE();
89 EGLPlatformParameters D3D11_FL10_1_REFERENCE();
90 EGLPlatformParameters D3D11_FL10_0_REFERENCE();
91 EGLPlatformParameters D3D11_FL9_3_REFERENCE();
92
93 EGLPlatformParameters OPENGL();
94 EGLPlatformParameters OPENGL(EGLint major, EGLint minor);
95 EGLPlatformParameters OPENGL_NULL();
96
97 EGLPlatformParameters OPENGLES();
98 EGLPlatformParameters OPENGLES(EGLint major, EGLint minor);
99 EGLPlatformParameters OPENGLES_NULL();
100
101 EGLPlatformParameters OPENGL_OR_GLES();
102 EGLPlatformParameters OPENGL_OR_GLES(EGLint major, EGLint minor);
103 EGLPlatformParameters OPENGL_OR_GLES_NULL();
104
105 EGLPlatformParameters VULKAN();
106 EGLPlatformParameters VULKAN_NULL();
107 EGLPlatformParameters VULKAN_SWIFTSHADER();
108
109 }  // namespace egl_platform
110
111 // ANGLE tests platforms
112 PlatformParameters ES1_D3D9();
113 PlatformParameters ES2_D3D9();
114
115 PlatformParameters ES1_D3D11();
116 PlatformParameters ES2_D3D11();
117 PlatformParameters ES2_D3D11_PRESENT_PATH_FAST();
118 PlatformParameters ES2_D3D11_FL11_0();
119 PlatformParameters ES2_D3D11_FL10_1();
120 PlatformParameters ES2_D3D11_FL10_0();
121 PlatformParameters ES2_D3D11_FL9_3();
122
123 PlatformParameters ES2_D3D11_WARP();
124 PlatformParameters ES2_D3D11_FL11_0_WARP();
125 PlatformParameters ES2_D3D11_FL10_1_WARP();
126 PlatformParameters ES2_D3D11_FL10_0_WARP();
127 PlatformParameters ES2_D3D11_FL9_3_WARP();
128
129 PlatformParameters ES2_D3D11_REFERENCE();
130 PlatformParameters ES2_D3D11_FL11_0_REFERENCE();
131 PlatformParameters ES2_D3D11_FL10_1_REFERENCE();
132 PlatformParameters ES2_D3D11_FL10_0_REFERENCE();
133 PlatformParameters ES2_D3D11_FL9_3_REFERENCE();
134
135 PlatformParameters ES3_D3D11();
136 PlatformParameters ES3_D3D11_FL11_1();
137 PlatformParameters ES3_D3D11_FL11_0();
138 PlatformParameters ES3_D3D11_FL10_1();
139 PlatformParameters ES31_D3D11();
140 PlatformParameters ES31_D3D11_FL11_1();
141 PlatformParameters ES31_D3D11_FL11_0();
142
143 PlatformParameters ES3_D3D11_WARP();
144 PlatformParameters ES3_D3D11_FL11_1_WARP();
145 PlatformParameters ES3_D3D11_FL11_0_WARP();
146 PlatformParameters ES3_D3D11_FL10_1_WARP();
147
148 PlatformParameters ES1_OPENGL();
149 PlatformParameters ES2_OPENGL();
150 PlatformParameters ES2_OPENGL(EGLint major, EGLint minor);
151 PlatformParameters ES3_OPENGL();
152 PlatformParameters ES3_OPENGL(EGLint major, EGLint minor);
153 PlatformParameters ES31_OPENGL();
154 PlatformParameters ES31_OPENGL(EGLint major, EGLint minor);
155
156 PlatformParameters ES1_OPENGLES();
157 PlatformParameters ES2_OPENGLES();
158 PlatformParameters ES2_OPENGLES(EGLint major, EGLint minor);
159 PlatformParameters ES3_OPENGLES();
160 PlatformParameters ES3_OPENGLES(EGLint major, EGLint minor);
161 PlatformParameters ES31_OPENGLES();
162 PlatformParameters ES31_OPENGLES(EGLint major, EGLint minor);
163
164 PlatformParameters ES1_NULL();
165 PlatformParameters ES2_NULL();
166 PlatformParameters ES3_NULL();
167 PlatformParameters ES31_NULL();
168
169 PlatformParameters ES1_VULKAN();
170 PlatformParameters ES1_VULKAN_NULL();
171 PlatformParameters ES1_VULKAN_SWIFTSHADER();
172 PlatformParameters ES2_VULKAN();
173 PlatformParameters ES2_VULKAN_NULL();
174 PlatformParameters ES2_VULKAN_SWIFTSHADER();
175 PlatformParameters ES3_VULKAN();
176 PlatformParameters ES3_VULKAN_NULL();
177 PlatformParameters ES3_VULKAN_SWIFTSHADER();
178 PlatformParameters ES31_VULKAN();
179 PlatformParameters ES31_VULKAN_NULL();
180 PlatformParameters ES31_VULKAN_SWIFTSHADER();
181
182 PlatformParameters ES1_METAL();
183 PlatformParameters ES2_METAL();
184 PlatformParameters ES3_METAL();
185
186 PlatformParameters ES2_WGL();
187 PlatformParameters ES3_WGL();
188
189 PlatformParameters ES2_EGL();
190 PlatformParameters ES3_EGL();
191
192 const char *GetNativeEGLLibraryNameWithExtension();
193
194 inline PlatformParameters WithNoVirtualContexts(const PlatformParameters &params)
195 {
196     PlatformParameters withNoVirtualContexts                  = params;
197     withNoVirtualContexts.eglParameters.contextVirtualization = EGL_FALSE;
198     return withNoVirtualContexts;
199 }
200
201 inline PlatformParameters WithNoFixture(const PlatformParameters &params)
202 {
203     PlatformParameters withNoFixture = params;
204     withNoFixture.noFixture          = true;
205     return withNoFixture;
206 }
207
208 inline PlatformParameters WithNoTransformFeedback(const PlatformParameters &params)
209 {
210     PlatformParameters withNoTransformFeedback                     = params;
211     withNoTransformFeedback.eglParameters.transformFeedbackFeature = EGL_FALSE;
212     return withNoTransformFeedback;
213 }
214
215 inline PlatformParameters WithAllocateNonZeroMemory(const PlatformParameters &params)
216 {
217     PlatformParameters allocateNonZero                         = params;
218     allocateNonZero.eglParameters.allocateNonZeroMemoryFeature = EGL_TRUE;
219     return allocateNonZero;
220 }
221
222 inline PlatformParameters WithRobustness(const PlatformParameters &params)
223 {
224     PlatformParameters withRobustness       = params;
225     withRobustness.eglParameters.robustness = EGL_TRUE;
226     return withRobustness;
227 }
228 }  // namespace angle
229
230 #endif  // ANGLE_TEST_CONFIGS_H_