• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "GLSLANG/ShaderLang.h"
21 #include "angle_test_instantiate.h"
22 #include "util/EGLPlatformParameters.h"
23 
24 namespace angle
25 {
26 
27 // The GLES driver type determines what shared object we use to load the GLES entry points.
28 // AngleEGL loads from ANGLE's version of libEGL, libGLESv2, and libGLESv1_CM.
29 // SystemEGL uses the system copies of libEGL, libGLESv2, and libGLESv1_CM.
30 // SystemWGL loads Windows GL with the GLES compatiblity extensions. See util/WGLWindow.h.
31 enum class GLESDriverType
32 {
33     AngleEGL,
34     SystemEGL,
35     SystemWGL,
36 };
37 
38 struct PlatformParameters
39 {
40     PlatformParameters();
41     PlatformParameters(EGLint majorVersion,
42                        EGLint minorVersion,
43                        const EGLPlatformParameters &eglPlatformParameters);
44     PlatformParameters(EGLint majorVersion, EGLint minorVersion, GLESDriverType driver);
45 
46     EGLint getRenderer() const;
47 
48     void initDefaultParameters();
49 
tiePlatformParameters50     auto tie() const
51     {
52         return std::tie(driver, noFixture, eglParameters, majorVersion, minorVersion);
53     }
54 
55     GLESDriverType driver;
56     bool noFixture;
57     EGLPlatformParameters eglParameters;
58     EGLint majorVersion;
59     EGLint minorVersion;
60 };
61 
62 bool operator<(const PlatformParameters &a, const PlatformParameters &b);
63 bool operator==(const PlatformParameters &a, const PlatformParameters &b);
64 std::ostream &operator<<(std::ostream &stream, const PlatformParameters &pp);
65 
66 // EGL platforms
67 namespace egl_platform
68 {
69 
70 EGLPlatformParameters DEFAULT();
71 EGLPlatformParameters DEFAULT_NULL();
72 
73 EGLPlatformParameters D3D9();
74 EGLPlatformParameters D3D9_NULL();
75 EGLPlatformParameters D3D9_REFERENCE();
76 
77 EGLPlatformParameters D3D11();
78 EGLPlatformParameters D3D11_PRESENT_PATH_FAST();
79 EGLPlatformParameters D3D11_FL11_1();
80 EGLPlatformParameters D3D11_FL11_0();
81 EGLPlatformParameters D3D11_FL10_1();
82 EGLPlatformParameters D3D11_FL10_0();
83 EGLPlatformParameters D3D11_FL9_3();
84 
85 EGLPlatformParameters D3D11_NULL();
86 
87 EGLPlatformParameters D3D11_WARP();
88 EGLPlatformParameters D3D11_FL11_1_WARP();
89 EGLPlatformParameters D3D11_FL11_0_WARP();
90 EGLPlatformParameters D3D11_FL10_1_WARP();
91 EGLPlatformParameters D3D11_FL10_0_WARP();
92 EGLPlatformParameters D3D11_FL9_3_WARP();
93 
94 EGLPlatformParameters D3D11_REFERENCE();
95 EGLPlatformParameters D3D11_FL11_1_REFERENCE();
96 EGLPlatformParameters D3D11_FL11_0_REFERENCE();
97 EGLPlatformParameters D3D11_FL10_1_REFERENCE();
98 EGLPlatformParameters D3D11_FL10_0_REFERENCE();
99 EGLPlatformParameters D3D11_FL9_3_REFERENCE();
100 
101 EGLPlatformParameters OPENGL();
102 EGLPlatformParameters OPENGL(EGLint major, EGLint minor);
103 EGLPlatformParameters OPENGL_NULL();
104 
105 EGLPlatformParameters OPENGLES();
106 EGLPlatformParameters OPENGLES(EGLint major, EGLint minor);
107 EGLPlatformParameters OPENGLES_NULL();
108 
109 EGLPlatformParameters OPENGL_OR_GLES();
110 EGLPlatformParameters OPENGL_OR_GLES_NULL();
111 
112 EGLPlatformParameters VULKAN();
113 EGLPlatformParameters VULKAN_NULL();
114 
115 }  // namespace egl_platform
116 
117 // ANGLE tests platforms
118 PlatformParameters ES1_D3D9();
119 PlatformParameters ES2_D3D9();
120 
121 PlatformParameters ES1_D3D11();
122 PlatformParameters ES2_D3D11();
123 PlatformParameters ES2_D3D11_PRESENT_PATH_FAST();
124 PlatformParameters ES2_D3D11_FL11_0();
125 PlatformParameters ES2_D3D11_FL10_1();
126 PlatformParameters ES2_D3D11_FL10_0();
127 PlatformParameters ES2_D3D11_FL9_3();
128 
129 PlatformParameters ES2_D3D11_WARP();
130 PlatformParameters ES2_D3D11_FL11_0_WARP();
131 PlatformParameters ES2_D3D11_FL10_1_WARP();
132 PlatformParameters ES2_D3D11_FL10_0_WARP();
133 PlatformParameters ES2_D3D11_FL9_3_WARP();
134 
135 PlatformParameters ES2_D3D11_REFERENCE();
136 PlatformParameters ES2_D3D11_FL11_0_REFERENCE();
137 PlatformParameters ES2_D3D11_FL10_1_REFERENCE();
138 PlatformParameters ES2_D3D11_FL10_0_REFERENCE();
139 PlatformParameters ES2_D3D11_FL9_3_REFERENCE();
140 
141 PlatformParameters ES3_D3D11();
142 PlatformParameters ES3_D3D11_FL11_1();
143 PlatformParameters ES3_D3D11_FL11_0();
144 PlatformParameters ES3_D3D11_FL10_1();
145 PlatformParameters ES31_D3D11();
146 PlatformParameters ES31_D3D11_FL11_1();
147 PlatformParameters ES31_D3D11_FL11_0();
148 
149 PlatformParameters ES3_D3D11_WARP();
150 PlatformParameters ES3_D3D11_FL11_1_WARP();
151 PlatformParameters ES3_D3D11_FL11_0_WARP();
152 PlatformParameters ES3_D3D11_FL10_1_WARP();
153 
154 PlatformParameters ES1_OPENGL();
155 PlatformParameters ES2_OPENGL();
156 PlatformParameters ES2_OPENGL(EGLint major, EGLint minor);
157 PlatformParameters ES3_OPENGL();
158 PlatformParameters ES3_OPENGL(EGLint major, EGLint minor);
159 PlatformParameters ES31_OPENGL();
160 PlatformParameters ES31_OPENGL(EGLint major, EGLint minor);
161 
162 PlatformParameters ES1_OPENGLES();
163 PlatformParameters ES2_OPENGLES();
164 PlatformParameters ES2_OPENGLES(EGLint major, EGLint minor);
165 PlatformParameters ES3_OPENGLES();
166 PlatformParameters ES3_OPENGLES(EGLint major, EGLint minor);
167 PlatformParameters ES31_OPENGLES();
168 PlatformParameters ES31_OPENGLES(EGLint major, EGLint minor);
169 
170 PlatformParameters ES1_NULL();
171 PlatformParameters ES2_NULL();
172 PlatformParameters ES3_NULL();
173 PlatformParameters ES31_NULL();
174 
175 PlatformParameters ES1_VULKAN();
176 PlatformParameters ES1_VULKAN_NULL();
177 PlatformParameters ES2_VULKAN();
178 PlatformParameters ES2_VULKAN_NULL();
179 PlatformParameters ES3_VULKAN();
180 PlatformParameters ES3_VULKAN_NULL();
181 PlatformParameters ES31_VULKAN();
182 PlatformParameters ES31_VULKAN_NULL();
183 
184 PlatformParameters ES2_WGL();
185 PlatformParameters ES3_WGL();
186 
WithNoVirtualContexts(const PlatformParameters & params)187 inline PlatformParameters WithNoVirtualContexts(const PlatformParameters &params)
188 {
189     PlatformParameters withNoVirtualContexts                  = params;
190     withNoVirtualContexts.eglParameters.contextVirtualization = EGL_FALSE;
191     return withNoVirtualContexts;
192 }
193 
WithNoFixture(const PlatformParameters & params)194 inline PlatformParameters WithNoFixture(const PlatformParameters &params)
195 {
196     PlatformParameters withNoFixture = params;
197     withNoFixture.noFixture          = true;
198     return withNoFixture;
199 }
200 }  // namespace angle
201 
202 #endif  // ANGLE_TEST_CONFIGS_H_
203