• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2015 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "SkColorSpace.h"
9 #include "SkCommonFlagsConfig.h"
10 #include "Test.h"
11 #include <initializer_list>
12 
13 using sk_gpu_test::GrContextFactory;
14 
15 namespace {
16 // The code
17 //   SkCommandLineFlags::StringArray FLAGS_config1 = make_string_array({"a", "b"})
18 // can be used to construct string array that one gets with command line flags.
19 // For example, the call above is equivalent of
20 //   DEFINE_string(config1, "a b", "");
21 // in cases where the default command line flag value ("a b") is used.
22 // make_string_array can be used to construct StringArray strings that have spaces in
23 // them.
make_string_array(std::initializer_list<const char * > strings)24 SkCommandLineFlags::StringArray make_string_array(std::initializer_list<const char*> strings) {
25     SkTArray<SkString> array;
26     for (auto& s : strings) {
27         array.push_back(SkString(s));
28     }
29     return SkCommandLineFlags::StringArray(array);
30 }
31 }
DEF_TEST(ParseConfigs_Gpu,reporter)32 DEF_TEST(ParseConfigs_Gpu, reporter) {
33     // Parses a normal config and returns correct "tag".
34     // Simple GL config works
35     SkCommandLineFlags::StringArray config1 = make_string_array({"gl"});
36     SkCommandLineConfigArray configs;
37     ParseConfigs(config1, &configs);
38 
39     REPORTER_ASSERT(reporter, configs.count() == 1);
40     REPORTER_ASSERT(reporter, configs[0]->getTag().equals("gl"));
41     REPORTER_ASSERT(reporter, configs[0]->getViaParts().count() == 0);
42 #if SK_SUPPORT_GPU
43     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu());
44     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getContextType()
45                     == GrContextFactory::kGL_ContextType);
46     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getUseNVPR() == false);
47     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getUseDIText() == false);
48     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getSamples() == 1);
49     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getColorType() == kRGBA_8888_SkColorType);
50     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getColorSpace() == nullptr);
51 #endif
52 }
53 
DEF_TEST(ParseConfigs_OutParam,reporter)54 DEF_TEST(ParseConfigs_OutParam, reporter) {
55     // Clears the out parameter.
56     SkCommandLineFlags::StringArray config1 = make_string_array({"gles"});
57     SkCommandLineConfigArray configs;
58     ParseConfigs(config1, &configs);
59     REPORTER_ASSERT(reporter, configs.count() == 1);
60     REPORTER_ASSERT(reporter, configs[0]->getTag().equals("gles"));
61 
62     SkCommandLineFlags::StringArray config2 = make_string_array({"8888"});
63     ParseConfigs(config2, &configs);
64     REPORTER_ASSERT(reporter, configs.count() == 1);
65     REPORTER_ASSERT(reporter, configs[0]->getTag().equals("8888"));
66 
67     SkCommandLineFlags::StringArray config3 = make_string_array({"gl"});
68     ParseConfigs(config3, &configs);
69     REPORTER_ASSERT(reporter, configs.count() == 1);
70     REPORTER_ASSERT(reporter, configs[0]->getTag().equals("gl"));
71 }
72 
DEF_TEST(ParseConfigs_DefaultConfigs,reporter)73 DEF_TEST(ParseConfigs_DefaultConfigs, reporter) {
74     // Parses all default configs and returns correct "tag".
75 
76     SkCommandLineFlags::StringArray config1 = make_string_array({
77         "565",
78         "8888",
79         "debuggl",
80         "gl",
81         "gldft",
82         "nullgl",
83         "glmsaa8",
84         "glmsaa4",
85         "nonrendering",
86         "nullgl",
87         "gles",
88         "glnvpr8",
89         "glnvpr4",
90         "glnvprdit8",
91         "glesnvprdit4",
92         "pdf",
93         "skp",
94         "svg",
95         "xps",
96         "angle_d3d11_es2",
97         "angle_gl_es2",
98         "commandbuffer",
99         "mesa",
100         "hwui",
101         "glf16",
102         "glessrgb",
103         "gl",
104         "glnvpr4",
105         "glnvprdit4",
106         "glsrgb",
107         "glmsaa4",
108         "vk",
109         "glwide",
110         "glnarrow",
111         "glnostencils",
112         "mock",
113         "mtl",
114         "gl4444",
115         "gl565",
116         "gltestthreading"
117     });
118 
119     SkCommandLineConfigArray configs;
120     ParseConfigs(config1, &configs);
121 
122     auto srgbColorSpace = SkColorSpace::MakeSRGB();
123 
124     REPORTER_ASSERT(reporter, configs.count() == config1.count());
125     for (int i = 0; i < config1.count(); ++i) {
126         REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i]));
127         REPORTER_ASSERT(reporter, configs[i]->getViaParts().count() == 0);
128     }
129 #if SK_SUPPORT_GPU
130     REPORTER_ASSERT(reporter, !configs[0]->asConfigGpu());
131     REPORTER_ASSERT(reporter, !configs[1]->asConfigGpu());
132     REPORTER_ASSERT(reporter, configs[2]->asConfigGpu());
133     REPORTER_ASSERT(reporter, configs[3]->asConfigGpu());
134     REPORTER_ASSERT(reporter, configs[4]->asConfigGpu()->getUseDIText());
135     REPORTER_ASSERT(reporter, configs[5]->asConfigGpu());
136     REPORTER_ASSERT(reporter, configs[6]->asConfigGpu()->getSamples() == 8);
137     REPORTER_ASSERT(reporter, configs[7]->asConfigGpu()->getSamples() == 4);
138     REPORTER_ASSERT(reporter, !configs[8]->asConfigGpu());
139     REPORTER_ASSERT(reporter, configs[9]->asConfigGpu());
140     REPORTER_ASSERT(reporter, configs[10]->asConfigGpu());
141     REPORTER_ASSERT(reporter, configs[11]->asConfigGpu()->getSamples() == 8);
142     REPORTER_ASSERT(reporter, configs[11]->asConfigGpu()->getUseNVPR());
143     REPORTER_ASSERT(reporter, !configs[11]->asConfigGpu()->getUseDIText());
144     REPORTER_ASSERT(reporter, configs[12]->asConfigGpu()->getSamples() == 4);
145     REPORTER_ASSERT(reporter, configs[12]->asConfigGpu()->getUseNVPR());
146     REPORTER_ASSERT(reporter, !configs[12]->asConfigGpu()->getUseDIText());
147     REPORTER_ASSERT(reporter, configs[13]->asConfigGpu()->getSamples() == 8);
148     REPORTER_ASSERT(reporter, configs[13]->asConfigGpu()->getUseNVPR());
149     REPORTER_ASSERT(reporter, configs[13]->asConfigGpu()->getUseDIText());
150     REPORTER_ASSERT(reporter, configs[14]->asConfigGpu()->getSamples() == 4);
151     REPORTER_ASSERT(reporter, configs[14]->asConfigGpu()->getUseNVPR());
152     REPORTER_ASSERT(reporter, configs[14]->asConfigGpu()->getUseDIText());
153     REPORTER_ASSERT(reporter, !configs[15]->asConfigGpu());
154     REPORTER_ASSERT(reporter, !configs[16]->asConfigGpu());
155     REPORTER_ASSERT(reporter, !configs[17]->asConfigGpu());
156     REPORTER_ASSERT(reporter, !configs[18]->asConfigGpu());
157     REPORTER_ASSERT(reporter, !configs[23]->asConfigGpu());
158     REPORTER_ASSERT(reporter, configs[24]->asConfigGpu()->getColorType() == kRGBA_F16_SkColorType);
159     REPORTER_ASSERT(reporter, configs[24]->asConfigGpu()->getColorSpace());
160     REPORTER_ASSERT(reporter, configs[24]->asConfigGpu()->getColorSpace()->gammaIsLinear());
161     const SkMatrix44* srgbXYZ = srgbColorSpace->toXYZD50();
162     SkASSERT(srgbXYZ);
163     const SkMatrix44* config25XYZ = configs[24]->asConfigGpu()->getColorSpace()->toXYZD50();
164     SkASSERT(config25XYZ);
165     REPORTER_ASSERT(reporter, *config25XYZ == *srgbXYZ);
166     REPORTER_ASSERT(reporter, configs[25]->asConfigGpu()->getColorType() == kRGBA_8888_SkColorType);
167     REPORTER_ASSERT(reporter, configs[25]->asConfigGpu()->getColorSpace() == srgbColorSpace.get());
168     REPORTER_ASSERT(reporter, configs[32]->asConfigGpu()->getColorType() == kRGBA_F16_SkColorType);
169     REPORTER_ASSERT(reporter, configs[32]->asConfigGpu()->getColorSpace());
170     REPORTER_ASSERT(reporter, configs[32]->asConfigGpu()->getColorSpace()->gammaIsLinear());
171     const SkMatrix44* config41XYZ = configs[32]->asConfigGpu()->getColorSpace()->toXYZD50();
172     SkASSERT(config41XYZ);
173     REPORTER_ASSERT(reporter, *config41XYZ != *srgbXYZ);
174     REPORTER_ASSERT(reporter, configs[33]->asConfigGpu()->getColorType() == kRGBA_F16_SkColorType);
175     REPORTER_ASSERT(reporter, configs[33]->asConfigGpu()->getColorSpace());
176     REPORTER_ASSERT(reporter, configs[33]->asConfigGpu()->getColorSpace()->gammaIsLinear());
177     REPORTER_ASSERT(reporter, *configs[33]->asConfigGpu()->getColorSpace()->toXYZD50() !=
178                     *srgbColorSpace->toXYZD50());
179     REPORTER_ASSERT(reporter, configs[34]->asConfigGpu()->getContextType() ==
180                               GrContextFactory::kGL_ContextType);
181     REPORTER_ASSERT(reporter, SkToBool(configs[34]->asConfigGpu()->getContextOverrides() &
182                               SkCommandLineConfigGpu::ContextOverrides::kAvoidStencilBuffers));
183     REPORTER_ASSERT(reporter, configs[35]->asConfigGpu()->getContextType() ==
184                               GrContextFactory::kMock_ContextType);
185     REPORTER_ASSERT(reporter, configs[19]->asConfigGpu());
186     REPORTER_ASSERT(reporter, configs[20]->asConfigGpu());
187     REPORTER_ASSERT(reporter, configs[21]->asConfigGpu());
188     REPORTER_ASSERT(reporter, configs[37]->asConfigGpu()->getContextType() ==
189                               GrContextFactory::kGL_ContextType);
190     REPORTER_ASSERT(reporter, configs[37]->asConfigGpu()->getColorType() == kARGB_4444_SkColorType);
191     REPORTER_ASSERT(reporter, configs[37]->asConfigGpu()->getAlphaType() == kPremul_SkAlphaType);
192     REPORTER_ASSERT(reporter, configs[38]->asConfigGpu()->getContextType() ==
193                               GrContextFactory::kGL_ContextType);
194     REPORTER_ASSERT(reporter, configs[38]->asConfigGpu()->getColorType() == kRGB_565_SkColorType);
195     REPORTER_ASSERT(reporter, configs[38]->asConfigGpu()->getAlphaType() == kOpaque_SkAlphaType);
196     REPORTER_ASSERT(reporter, !configs[22]->asConfigGpu());
197     REPORTER_ASSERT(reporter, configs[26]->asConfigGpu());
198     REPORTER_ASSERT(reporter, configs[27]->asConfigGpu());
199     REPORTER_ASSERT(reporter, configs[27]->asConfigGpu()->getSamples() == 4);
200     REPORTER_ASSERT(reporter, configs[27]->asConfigGpu()->getUseNVPR());
201     REPORTER_ASSERT(reporter, configs[28]->asConfigGpu());
202     REPORTER_ASSERT(reporter, configs[28]->asConfigGpu()->getSamples() == 4);
203     REPORTER_ASSERT(reporter, configs[28]->asConfigGpu()->getUseNVPR());
204     REPORTER_ASSERT(reporter, configs[28]->asConfigGpu()->getUseDIText());
205     REPORTER_ASSERT(reporter, configs[29]->asConfigGpu());
206     REPORTER_ASSERT(reporter, configs[29]->asConfigGpu()->getColorType()  == kRGBA_8888_SkColorType);
207     REPORTER_ASSERT(reporter, configs[29]->asConfigGpu()->getColorSpace() == srgbColorSpace.get());
208     REPORTER_ASSERT(reporter, configs[30]->asConfigGpu());
209     REPORTER_ASSERT(reporter, configs[30]->asConfigGpu()->getSamples() == 4);
210     REPORTER_ASSERT(reporter, configs[39]->asConfigGpu());
211     REPORTER_ASSERT(reporter, configs[39]->asConfigGpu()->getTestThreading());
212 #ifdef SK_VULKAN
213     REPORTER_ASSERT(reporter, configs[31]->asConfigGpu());
214 #endif
215 #endif
216 }
217 
DEF_TEST(ParseConfigs_ExtendedGpuConfigsCorrect,reporter)218 DEF_TEST(ParseConfigs_ExtendedGpuConfigsCorrect, reporter) {
219     SkCommandLineFlags::StringArray config1 = make_string_array({
220         "gpu[api=gl,nvpr=true,dit=false]",
221         "gpu[api=angle_d3d9_es2]",
222         "gpu[api=angle_gl_es3]",
223         "gpu[api=mesa,samples=77]",
224         "gpu[dit=true,api=commandbuffer]",
225         "gpu[api=gles]",
226         "gpu[api=gl]",
227         "gpu[api=vulkan]",
228         "gpu[api=metal]",
229         "gpu[api=mock]",
230     });
231 
232     SkCommandLineConfigArray configs;
233     ParseConfigs(config1, &configs);
234     REPORTER_ASSERT(reporter, configs.count() == config1.count());
235     for (int i = 0; i < config1.count(); ++i) {
236         REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i]));
237     }
238 #if SK_SUPPORT_GPU
239     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getContextType() ==
240                     GrContextFactory::kGL_ContextType);
241     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getUseNVPR());
242     REPORTER_ASSERT(reporter, !configs[0]->asConfigGpu()->getUseDIText());
243     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu()->getSamples() == 1);
244     REPORTER_ASSERT(reporter, configs[1]->asConfigGpu()->getContextType() ==
245                     GrContextFactory::kANGLE_D3D9_ES2_ContextType);
246     REPORTER_ASSERT(reporter, configs[1]->asConfigGpu());
247     REPORTER_ASSERT(reporter, configs[2]->asConfigGpu()->getContextType() ==
248                     GrContextFactory::kANGLE_GL_ES3_ContextType);
249     REPORTER_ASSERT(reporter, configs[2]->asConfigGpu());
250     REPORTER_ASSERT(reporter, !configs[3]->asConfigGpu());
251     REPORTER_ASSERT(reporter, configs[4]->asConfigGpu()->getContextType() ==
252                     GrContextFactory::kCommandBuffer_ContextType);
253     REPORTER_ASSERT(reporter, configs[5]->asConfigGpu()->getContextType() ==
254                     GrContextFactory::kGLES_ContextType);
255     REPORTER_ASSERT(reporter, !configs[5]->asConfigGpu()->getUseNVPR());
256     REPORTER_ASSERT(reporter, !configs[5]->asConfigGpu()->getUseDIText());
257     REPORTER_ASSERT(reporter, configs[5]->asConfigGpu()->getSamples() == 1);
258     REPORTER_ASSERT(reporter, configs[6]->asConfigGpu()->getContextType() ==
259                               GrContextFactory::kGL_ContextType);
260     REPORTER_ASSERT(reporter, !configs[6]->asConfigGpu()->getUseNVPR());
261     REPORTER_ASSERT(reporter, !configs[6]->asConfigGpu()->getUseDIText());
262     REPORTER_ASSERT(reporter, configs[6]->asConfigGpu()->getSamples() == 1);
263 #ifdef SK_VULKAN
264     REPORTER_ASSERT(reporter, configs[7]->asConfigGpu()->getContextType() ==
265                               GrContextFactory::kVulkan_ContextType);
266     REPORTER_ASSERT(reporter, !configs[7]->asConfigGpu()->getUseNVPR());
267     REPORTER_ASSERT(reporter, !configs[7]->asConfigGpu()->getUseDIText());
268     REPORTER_ASSERT(reporter, configs[7]->asConfigGpu()->getSamples() == 1);
269 #endif
270 #ifdef SK_METAL
271     REPORTER_ASSERT(reporter, configs[8]->asConfigGpu()->getContextType() ==
272                               GrContextFactory::kMetal_ContextType);
273     REPORTER_ASSERT(reporter, !configs[8]->asConfigGpu()->getUseNVPR());
274     REPORTER_ASSERT(reporter, !configs[8]->asConfigGpu()->getUseDIText());
275     REPORTER_ASSERT(reporter, configs[8]->asConfigGpu()->getSamples() == 0);
276 #endif
277     REPORTER_ASSERT(reporter, configs[9]->asConfigGpu()->getContextType() ==
278                    GrContextFactory::kMock_ContextType);
279 #endif
280 }
281 
DEF_TEST(ParseConfigs_ExtendedGpuConfigsIncorrect,reporter)282 DEF_TEST(ParseConfigs_ExtendedGpuConfigsIncorrect, reporter) {
283     SkCommandLineFlags::StringArray config1 = make_string_array({
284         "gpu[api=gl,nvpr=1]", // Number as bool.
285         "gpu[api=gl,]", // Trailing in comma.
286         "gpu[api=angle_glu]", // Unknown api.
287         "gpu[api=,samples=0]", // Empty api.
288         "gpu[api=gl,samples=true]", // Value true as a number.
289         "gpu[api=gl,samples=0,samples=0]", // Duplicate option key.
290         "gpu[,api=gl,samples=0]", // Leading comma.
291         "gpu[samples=54", // Missing closing parenthesis.
292         ",,",
293         "gpu[]", // Missing required api specifier
294         "gpu[samples=4]", // Missing required api specifier
295         "gpu[", // Missing bracket.
296         "samples=54" // No backend.
297         "gpu[nvpr=true ]", // Space.
298     });
299 
300     SkCommandLineConfigArray configs;
301     ParseConfigs(config1, &configs);
302     REPORTER_ASSERT(reporter, configs.count() == config1.count());
303     for (int i = 0; i < config1.count(); ++i) {
304         REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i]));
305         REPORTER_ASSERT(reporter, configs[i]->getBackend().equals(config1[i]));
306 #if SK_SUPPORT_GPU
307         REPORTER_ASSERT(reporter, !configs[i]->asConfigGpu());
308 #endif
309     }
310 }
311 
DEF_TEST(ParseConfigs_ExtendedGpuConfigsSurprises,reporter)312 DEF_TEST(ParseConfigs_ExtendedGpuConfigsSurprises, reporter) {
313     // These just list explicitly some properties of the system.
314     SkCommandLineFlags::StringArray config1 = make_string_array({
315         // Options are not canonized -> two same configs have a different tag.
316         "gpu[api=gl,nvpr=true,dit=true]", "gpu[api=gl,dit=true,nvpr=true]",
317         "gpu[api=debuggl]", "gpu[api=gl]", "gpu[api=gles]", ""
318         "gpu[api=gl]", "gpu[api=gl,samples=0]", "gpu[api=gles,samples=0]"
319     });
320     SkCommandLineConfigArray configs;
321     ParseConfigs(config1, &configs);
322     REPORTER_ASSERT(reporter, configs.count() == config1.count());
323     for (int i = 0; i < config1.count(); ++i) {
324         REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i]));
325 #if SK_SUPPORT_GPU
326         REPORTER_ASSERT(reporter, configs[i]->getBackend().equals("gpu"));
327         REPORTER_ASSERT(reporter, configs[i]->asConfigGpu());
328 #else
329         REPORTER_ASSERT(reporter, configs[i]->getBackend().equals(config1[i]));
330 #endif
331     }
332 }
333 
334 #if SK_SUPPORT_GPU
DEF_TEST(ParseConfigs_ViaParsing,reporter)335 DEF_TEST(ParseConfigs_ViaParsing, reporter) {
336     SkCommandLineFlags::StringArray config1 = make_string_array({
337         "a-b-c-8888",
338         "zz-qq-gpu",
339         "a-angle_gl_es2"
340     });
341 
342     SkCommandLineConfigArray configs;
343     ParseConfigs(config1, &configs);
344     const struct {
345         const char* backend;
346         const char* vias[3];
347     } expectedConfigs[] = {
348         {"8888", {"a", "b", "c"}},
349         {"gpu", {"zz", "qq", nullptr}},
350         {"gpu", { "a", nullptr, nullptr }}
351     };
352     for (int i = 0; i < config1.count(); ++i) {
353         REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i]));
354         REPORTER_ASSERT(reporter, configs[i]->getBackend().equals(expectedConfigs[i].backend));
355         for (int j = 0; j < static_cast<int>(SK_ARRAY_COUNT(expectedConfigs[i].vias)); ++j) {
356             if (!expectedConfigs[i].vias[j]) {
357                 REPORTER_ASSERT(reporter, configs[i]->getViaParts().count() == j);
358                 break;
359             }
360             REPORTER_ASSERT(reporter,
361                             configs[i]->getViaParts()[j].equals(expectedConfigs[i].vias[j]));
362         }
363     }
364 }
365 #endif
366 
DEF_TEST(ParseConfigs_ViaParsingExtendedForm,reporter)367 DEF_TEST(ParseConfigs_ViaParsingExtendedForm, reporter) {
368     SkCommandLineFlags::StringArray config1 = make_string_array({
369         "zz-qq-gpu[api=gles]",
370         "abc-nbc-cbs-gpu[api=angle_d3d9_es2,samples=1]",
371         "a-gpu[api=gl",
372         "abc-def-angle_gl_es2[api=gles]",
373     });
374 
375     SkCommandLineConfigArray configs;
376     ParseConfigs(config1, &configs);
377     const struct {
378         const char* backend;
379         const char* vias[3];
380     } expectedConfigs[] = {
381 #if SK_SUPPORT_GPU
382         {"gpu", {"zz", "qq", nullptr}},
383         {"gpu", {"abc", "nbc", "cbs"}},
384 #else
385         {"gpu[api=gles]", {"zz", "qq", nullptr}},
386         {"gpu[api=angle_d3d9_es2,samples=1]", {"abc", "nbc", "cbs"}},
387 #endif
388         {"gpu[api=gl", {"a", nullptr, nullptr}}, // Missing bracket makes this is not extended
389                                                  // form but via still works as expected.
390         {"angle_gl_es2[api=gles]", {"abc", "def", nullptr}}  // This is not extended form.
391                                                              // angle_gl_es2 is an api type not a
392                                                              // backend.
393     };
394     for (int i = 0; i < config1.count(); ++i) {
395         REPORTER_ASSERT(reporter, configs[i]->getTag().equals(config1[i]));
396         REPORTER_ASSERT(reporter, configs[i]->getBackend().equals(expectedConfigs[i].backend));
397         for (int j = 0; j < static_cast<int>(SK_ARRAY_COUNT(expectedConfigs[i].vias)); ++j) {
398             if (!expectedConfigs[i].vias[j]) {
399                 REPORTER_ASSERT(reporter, configs[i]->getViaParts().count() ==
400                                 static_cast<int>(j));
401                 break;
402             }
403             REPORTER_ASSERT(reporter,
404                             configs[i]->getViaParts()[j].equals(expectedConfigs[i].vias[j]));
405         }
406     }
407 #if SK_SUPPORT_GPU
408     REPORTER_ASSERT(reporter, configs[0]->asConfigGpu());
409     REPORTER_ASSERT(reporter, configs[1]->asConfigGpu());
410     REPORTER_ASSERT(reporter, !configs[2]->asConfigGpu());
411     REPORTER_ASSERT(reporter, !configs[3]->asConfigGpu());
412 #endif
413 }
414