1 //
2 // Copyright 2017 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 // ConformanceTests.cpp:
7 // GLES1 conformance tests.
8 // Function prototypes taken from tproto.h and turned into gtest tests using a macro.
9 //
10
11 #include "test_utils/ANGLETest.h"
12 #include "test_utils/gl_raii.h"
13
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17
18 // ES 1.0
19 extern long AmbLightExec(void);
20 extern long AmbMatExec(void);
21 extern long AmbSceneExec(void);
22 extern long APFuncExec(void);
23 extern long AtnConstExec(void);
24 extern long AtnPosExec(void);
25 extern long BClearExec(void);
26 extern long BColorExec(void);
27 extern long BCornerExec(void);
28 extern long BlendExec(void);
29 extern long ClipExec(void);
30 extern long ColRampExec(void);
31 extern long CopyTexExec(void);
32 extern long DifLightExec(void);
33 extern long DifMatExec(void);
34 extern long DifMatNormExec(void);
35 extern long DifMatPosExec(void);
36 extern long DitherExec(void);
37 extern long DivZeroExec(void);
38 extern long EmitMatExec(void);
39 extern long FogExpExec(void);
40 extern long FogLinExec(void);
41 extern long LineAntiAliasExec(void);
42 extern long LineHVExec(void);
43 extern long LineRasterExec(void);
44 extern long LogicOpExec(void);
45 extern long MipExec(void);
46 extern long MipLevelsExec(void);
47 extern long MipLinExec(void);
48 extern long MipSelectExec(void);
49 extern long MaskExec(void);
50 extern long MatrixStackExec(void);
51 extern long MultiTexExec(void);
52 extern long MustPassExec(void);
53 extern long PackedPixelsExec(void);
54 extern long PointAntiAliasExec(void);
55 extern long PointRasterExec(void);
56 extern long PolyCullExec(void);
57 extern long ReadFormatExec(void);
58 extern long RescaleNormalExec(void);
59 extern long ScissorExec(void);
60 extern long SPClearExec(void);
61 extern long SPCornerExec(void);
62 extern long SpecExpExec(void);
63 extern long SpecExpNormExec(void);
64 extern long SpecLightExec(void);
65 extern long SpecMatExec(void);
66 extern long SpecNormExec(void);
67 extern long SPFuncExec(void);
68 extern long SPOpExec(void);
69 extern long SpotPosExec(void);
70 extern long SpotExpPosExec(void);
71 extern long SpotExpDirExec(void);
72 extern long TexDecalExec(void);
73 extern long TexPaletExec(void);
74 extern long TextureEdgeClampExec(void);
75 extern long TriRasterExec(void);
76 extern long TriTileExec(void);
77 extern long VertexOrderExec(void);
78 extern long ViewportClampExec(void);
79 extern long XFormExec(void);
80 extern long XFormMixExec(void);
81 extern long XFormNormalExec(void);
82 extern long XFormViewportExec(void);
83 extern long XFormHomogenousExec(void);
84 extern long ZBClearExec(void);
85 extern long ZBFuncExec(void);
86
87 // GL_OES_draw_texture
88 extern long DrawTexExec(void);
89
90 // GL_OES_query_matrix
91 extern long MatrixQueryExec(void);
92
93 // ES 1.1
94 extern long BufferObjectExec(void);
95 extern long PointSizeArrayExec(void);
96 extern long PointSpriteExec(void);
97 extern long UserClipExec(void);
98 extern long MatrixGetTestExec(void);
99 extern long GetsExec(void);
100 extern long TexCombineExec(void);
101
102 // GL_OES_matrix_palette
103 extern long MatrixPaletteExec(void);
104
105 // Test driver setup
106 void BufferSetup(void);
107 void EpsilonSetup(void);
108 void StateSetup(void);
109
110 #define CONFORMANCE_TEST_ERROR (-1)
111
112 #ifdef __cplusplus
113 }
114
115 #endif
116 namespace angle
117 {
118 class GLES1ConformanceTest : public ANGLETest
119 {
120 protected:
GLES1ConformanceTest()121 GLES1ConformanceTest()
122 {
123 setWindowWidth(48);
124 setWindowHeight(48);
125 setConfigRedBits(8);
126 setConfigGreenBits(8);
127 setConfigBlueBits(8);
128 setConfigAlphaBits(8);
129 setConfigDepthBits(24);
130 setConfigStencilBits(8);
131 }
132
testSetUp()133 void testSetUp() override
134 {
135 BufferSetup();
136 EpsilonSetup();
137 StateSetup();
138 }
139 };
140
TEST_P(GLES1ConformanceTest,AmbLight)141 TEST_P(GLES1ConformanceTest, AmbLight)
142 {
143 // Flaky timeouts due to slow test. http://anglebug.com/5234
144 ANGLE_SKIP_TEST_IF(IsVulkan());
145 ASSERT_NE(CONFORMANCE_TEST_ERROR, AmbLightExec());
146 }
147
TEST_P(GLES1ConformanceTest,AmbMat)148 TEST_P(GLES1ConformanceTest, AmbMat)
149 {
150 ASSERT_NE(CONFORMANCE_TEST_ERROR, AmbMatExec());
151 }
152
TEST_P(GLES1ConformanceTest,AmbScene)153 TEST_P(GLES1ConformanceTest, AmbScene)
154 {
155 ASSERT_NE(CONFORMANCE_TEST_ERROR, AmbSceneExec());
156 }
157
TEST_P(GLES1ConformanceTest,APFunc)158 TEST_P(GLES1ConformanceTest, APFunc)
159 {
160 ASSERT_NE(CONFORMANCE_TEST_ERROR, APFuncExec());
161 }
162
TEST_P(GLES1ConformanceTest,AtnConst)163 TEST_P(GLES1ConformanceTest, AtnConst)
164 {
165 ASSERT_NE(CONFORMANCE_TEST_ERROR, AtnConstExec());
166 }
167
TEST_P(GLES1ConformanceTest,AtnPos)168 TEST_P(GLES1ConformanceTest, AtnPos)
169 {
170 ASSERT_NE(CONFORMANCE_TEST_ERROR, AtnPosExec());
171 }
172
TEST_P(GLES1ConformanceTest,BClear)173 TEST_P(GLES1ConformanceTest, BClear)
174 {
175 ASSERT_NE(CONFORMANCE_TEST_ERROR, BClearExec());
176 }
177
TEST_P(GLES1ConformanceTest,BColor)178 TEST_P(GLES1ConformanceTest, BColor)
179 {
180 ASSERT_NE(CONFORMANCE_TEST_ERROR, BColorExec());
181 }
182
TEST_P(GLES1ConformanceTest,BCorner)183 TEST_P(GLES1ConformanceTest, BCorner)
184 {
185 ASSERT_NE(CONFORMANCE_TEST_ERROR, BCornerExec());
186 }
187
TEST_P(GLES1ConformanceTest,Blend)188 TEST_P(GLES1ConformanceTest, Blend)
189 {
190 // Slow test, takes over 20 seconds in some configs. http://anglebug.com/5171
191 ANGLE_SKIP_TEST_IF(IsVulkan() && IsIntel() && IsWindows());
192 ASSERT_NE(CONFORMANCE_TEST_ERROR, BlendExec());
193 }
194
TEST_P(GLES1ConformanceTest,Clip)195 TEST_P(GLES1ConformanceTest, Clip)
196 {
197 ASSERT_NE(CONFORMANCE_TEST_ERROR, ClipExec());
198 }
199
TEST_P(GLES1ConformanceTest,ColRamp)200 TEST_P(GLES1ConformanceTest, ColRamp)
201 {
202 ASSERT_NE(CONFORMANCE_TEST_ERROR, ColRampExec());
203 }
204
TEST_P(GLES1ConformanceTest,CopyTex)205 TEST_P(GLES1ConformanceTest, CopyTex)
206 {
207 ASSERT_NE(CONFORMANCE_TEST_ERROR, CopyTexExec());
208 }
209
TEST_P(GLES1ConformanceTest,DifLight)210 TEST_P(GLES1ConformanceTest, DifLight)
211 {
212 ASSERT_NE(CONFORMANCE_TEST_ERROR, DifLightExec());
213 }
214
TEST_P(GLES1ConformanceTest,DifMat)215 TEST_P(GLES1ConformanceTest, DifMat)
216 {
217 ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatExec());
218 }
219
TEST_P(GLES1ConformanceTest,DifMatNorm)220 TEST_P(GLES1ConformanceTest, DifMatNorm)
221 {
222 ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatNormExec());
223 }
224
TEST_P(GLES1ConformanceTest,DifMatPos)225 TEST_P(GLES1ConformanceTest, DifMatPos)
226 {
227 ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatPosExec());
228 }
229
TEST_P(GLES1ConformanceTest,Dither)230 TEST_P(GLES1ConformanceTest, Dither)
231 {
232 ASSERT_NE(CONFORMANCE_TEST_ERROR, DitherExec());
233 }
234
TEST_P(GLES1ConformanceTest,DivZero)235 TEST_P(GLES1ConformanceTest, DivZero)
236 {
237 ASSERT_NE(CONFORMANCE_TEST_ERROR, DivZeroExec());
238 }
239
TEST_P(GLES1ConformanceTest,EmitMat)240 TEST_P(GLES1ConformanceTest, EmitMat)
241 {
242 ASSERT_NE(CONFORMANCE_TEST_ERROR, EmitMatExec());
243 }
244
TEST_P(GLES1ConformanceTest,FogExp)245 TEST_P(GLES1ConformanceTest, FogExp)
246 {
247 ASSERT_NE(CONFORMANCE_TEST_ERROR, FogExpExec());
248 }
249
TEST_P(GLES1ConformanceTest,FogLin)250 TEST_P(GLES1ConformanceTest, FogLin)
251 {
252 ASSERT_NE(CONFORMANCE_TEST_ERROR, FogLinExec());
253 }
254
TEST_P(GLES1ConformanceTest,LineAntiAlias)255 TEST_P(GLES1ConformanceTest, LineAntiAlias)
256 {
257 ANGLE_SKIP_TEST_IF(true);
258 ASSERT_NE(CONFORMANCE_TEST_ERROR, LineAntiAliasExec());
259 }
260
TEST_P(GLES1ConformanceTest,LineHV)261 TEST_P(GLES1ConformanceTest, LineHV)
262 {
263 ASSERT_NE(CONFORMANCE_TEST_ERROR, LineHVExec());
264 }
265
TEST_P(GLES1ConformanceTest,LineRaster)266 TEST_P(GLES1ConformanceTest, LineRaster)
267 {
268 // http://g.co/anglebug/3862
269 ANGLE_SKIP_TEST_IF(IsVulkan());
270 ASSERT_NE(CONFORMANCE_TEST_ERROR, LineRasterExec());
271 }
272
TEST_P(GLES1ConformanceTest,LogicOp)273 TEST_P(GLES1ConformanceTest, LogicOp)
274 {
275 ANGLE_SKIP_TEST_IF(true);
276 ASSERT_NE(CONFORMANCE_TEST_ERROR, LogicOpExec());
277 }
278
TEST_P(GLES1ConformanceTest,Mip)279 TEST_P(GLES1ConformanceTest, Mip)
280 {
281 ASSERT_NE(CONFORMANCE_TEST_ERROR, MipExec());
282 }
283
TEST_P(GLES1ConformanceTest,MipLevels)284 TEST_P(GLES1ConformanceTest, MipLevels)
285 {
286 ANGLE_SKIP_TEST_IF(true);
287 ASSERT_NE(CONFORMANCE_TEST_ERROR, MipLevelsExec());
288 }
289
TEST_P(GLES1ConformanceTest,MipLin)290 TEST_P(GLES1ConformanceTest, MipLin)
291 {
292 ASSERT_NE(CONFORMANCE_TEST_ERROR, MipLinExec());
293 }
294
TEST_P(GLES1ConformanceTest,MipSelect)295 TEST_P(GLES1ConformanceTest, MipSelect)
296 {
297 ASSERT_NE(CONFORMANCE_TEST_ERROR, MipSelectExec());
298 }
299
TEST_P(GLES1ConformanceTest,Mask)300 TEST_P(GLES1ConformanceTest, Mask)
301 {
302 ASSERT_NE(CONFORMANCE_TEST_ERROR, MaskExec());
303 }
304
TEST_P(GLES1ConformanceTest,MatrixStack)305 TEST_P(GLES1ConformanceTest, MatrixStack)
306 {
307 ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixStackExec());
308 }
309
TEST_P(GLES1ConformanceTest,MultiTex)310 TEST_P(GLES1ConformanceTest, MultiTex)
311 {
312 ASSERT_NE(CONFORMANCE_TEST_ERROR, MultiTexExec());
313 }
314
TEST_P(GLES1ConformanceTest,MustPass)315 TEST_P(GLES1ConformanceTest, MustPass)
316 {
317 ANGLE_SKIP_TEST_IF(true);
318 ASSERT_NE(CONFORMANCE_TEST_ERROR, MustPassExec());
319 }
320
TEST_P(GLES1ConformanceTest,PackedPixels)321 TEST_P(GLES1ConformanceTest, PackedPixels)
322 {
323 ASSERT_NE(CONFORMANCE_TEST_ERROR, PackedPixelsExec());
324 }
325
TEST_P(GLES1ConformanceTest,PointAntiAlias)326 TEST_P(GLES1ConformanceTest, PointAntiAlias)
327 {
328 ANGLE_SKIP_TEST_IF(true);
329 ASSERT_NE(CONFORMANCE_TEST_ERROR, PointAntiAliasExec());
330 }
331
TEST_P(GLES1ConformanceTest,PointRaster)332 TEST_P(GLES1ConformanceTest, PointRaster)
333 {
334 ASSERT_NE(CONFORMANCE_TEST_ERROR, PointRasterExec());
335 }
336
TEST_P(GLES1ConformanceTest,PolyCull)337 TEST_P(GLES1ConformanceTest, PolyCull)
338 {
339 ASSERT_NE(CONFORMANCE_TEST_ERROR, PolyCullExec());
340 }
341
TEST_P(GLES1ConformanceTest,ReadFormat)342 TEST_P(GLES1ConformanceTest, ReadFormat)
343 {
344 ASSERT_NE(CONFORMANCE_TEST_ERROR, ReadFormatExec());
345 }
346
TEST_P(GLES1ConformanceTest,RescaleNormal)347 TEST_P(GLES1ConformanceTest, RescaleNormal)
348 {
349 ANGLE_SKIP_TEST_IF(true);
350 ASSERT_NE(CONFORMANCE_TEST_ERROR, RescaleNormalExec());
351 }
352
TEST_P(GLES1ConformanceTest,Scissor)353 TEST_P(GLES1ConformanceTest, Scissor)
354 {
355 ASSERT_NE(CONFORMANCE_TEST_ERROR, ScissorExec());
356 }
357
TEST_P(GLES1ConformanceTest,SPClear)358 TEST_P(GLES1ConformanceTest, SPClear)
359 {
360 // http://g.co/anglebug/3863
361 ANGLE_SKIP_TEST_IF(IsVulkan());
362 ASSERT_NE(CONFORMANCE_TEST_ERROR, SPClearExec());
363 }
364
TEST_P(GLES1ConformanceTest,SPCorner)365 TEST_P(GLES1ConformanceTest, SPCorner)
366 {
367 ASSERT_NE(CONFORMANCE_TEST_ERROR, SPCornerExec());
368 }
369
TEST_P(GLES1ConformanceTest,SpecExp)370 TEST_P(GLES1ConformanceTest, SpecExp)
371 {
372 ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecExpExec());
373 }
374
TEST_P(GLES1ConformanceTest,SpecExpNorm)375 TEST_P(GLES1ConformanceTest, SpecExpNorm)
376 {
377 ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecExpNormExec());
378 }
379
TEST_P(GLES1ConformanceTest,SpecLight)380 TEST_P(GLES1ConformanceTest, SpecLight)
381 {
382 ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecLightExec());
383 }
384
TEST_P(GLES1ConformanceTest,SpecMat)385 TEST_P(GLES1ConformanceTest, SpecMat)
386 {
387 ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecMatExec());
388 }
389
TEST_P(GLES1ConformanceTest,SpecNorm)390 TEST_P(GLES1ConformanceTest, SpecNorm)
391 {
392 ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecNormExec());
393 }
394
TEST_P(GLES1ConformanceTest,SPFunc)395 TEST_P(GLES1ConformanceTest, SPFunc)
396 {
397 ASSERT_NE(CONFORMANCE_TEST_ERROR, SPFuncExec());
398 }
399
TEST_P(GLES1ConformanceTest,SPOp)400 TEST_P(GLES1ConformanceTest, SPOp)
401 {
402 ASSERT_NE(CONFORMANCE_TEST_ERROR, SPOpExec());
403 }
404
TEST_P(GLES1ConformanceTest,SpotPos)405 TEST_P(GLES1ConformanceTest, SpotPos)
406 {
407 ASSERT_NE(CONFORMANCE_TEST_ERROR, SpotPosExec());
408 }
409
TEST_P(GLES1ConformanceTest,SpotExpPos)410 TEST_P(GLES1ConformanceTest, SpotExpPos)
411 {
412 ASSERT_NE(CONFORMANCE_TEST_ERROR, SpotExpPosExec());
413 }
414
TEST_P(GLES1ConformanceTest,SpotExpDir)415 TEST_P(GLES1ConformanceTest, SpotExpDir)
416 {
417 // http://crbug.com/1136238
418 ANGLE_SKIP_TEST_IF(IsWindows() && IsVulkan());
419 ASSERT_NE(CONFORMANCE_TEST_ERROR, SpotExpDirExec());
420 }
421
TEST_P(GLES1ConformanceTest,TexDecal)422 TEST_P(GLES1ConformanceTest, TexDecal)
423 {
424 ASSERT_NE(CONFORMANCE_TEST_ERROR, TexDecalExec());
425 }
426
TEST_P(GLES1ConformanceTest,TexPalet)427 TEST_P(GLES1ConformanceTest, TexPalet)
428 {
429 ANGLE_SKIP_TEST_IF(true);
430 ASSERT_NE(CONFORMANCE_TEST_ERROR, TexPaletExec());
431 }
432
TEST_P(GLES1ConformanceTest,TextureEdgeClamp)433 TEST_P(GLES1ConformanceTest, TextureEdgeClamp)
434 {
435 ASSERT_NE(CONFORMANCE_TEST_ERROR, TextureEdgeClampExec());
436 }
437
TEST_P(GLES1ConformanceTest,TriRaster)438 TEST_P(GLES1ConformanceTest, TriRaster)
439 {
440 ASSERT_NE(CONFORMANCE_TEST_ERROR, TriRasterExec());
441 }
442
TEST_P(GLES1ConformanceTest,TriTile)443 TEST_P(GLES1ConformanceTest, TriTile)
444 {
445 ASSERT_NE(CONFORMANCE_TEST_ERROR, TriTileExec());
446 }
447
TEST_P(GLES1ConformanceTest,VertexOrder)448 TEST_P(GLES1ConformanceTest, VertexOrder)
449 {
450 ASSERT_NE(CONFORMANCE_TEST_ERROR, VertexOrderExec());
451 }
452
TEST_P(GLES1ConformanceTest,ViewportClamp)453 TEST_P(GLES1ConformanceTest, ViewportClamp)
454 {
455 ASSERT_NE(CONFORMANCE_TEST_ERROR, ViewportClampExec());
456 }
457
TEST_P(GLES1ConformanceTest,XForm)458 TEST_P(GLES1ConformanceTest, XForm)
459 {
460 ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormExec());
461 }
462
TEST_P(GLES1ConformanceTest,XFormMix)463 TEST_P(GLES1ConformanceTest, XFormMix)
464 {
465 ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormMixExec());
466 }
467
TEST_P(GLES1ConformanceTest,XFormNormal)468 TEST_P(GLES1ConformanceTest, XFormNormal)
469 {
470 ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormNormalExec());
471 }
472
TEST_P(GLES1ConformanceTest,XFormViewport)473 TEST_P(GLES1ConformanceTest, XFormViewport)
474 {
475 ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormViewportExec());
476 }
477
TEST_P(GLES1ConformanceTest,XFormHomogenous)478 TEST_P(GLES1ConformanceTest, XFormHomogenous)
479 {
480 ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormHomogenousExec());
481 }
482
TEST_P(GLES1ConformanceTest,ZBClear)483 TEST_P(GLES1ConformanceTest, ZBClear)
484 {
485 // http://g.co/anglebug/3864
486 ANGLE_SKIP_TEST_IF(IsVulkan());
487 ASSERT_NE(CONFORMANCE_TEST_ERROR, ZBClearExec());
488 }
489
TEST_P(GLES1ConformanceTest,ZBFunc)490 TEST_P(GLES1ConformanceTest, ZBFunc)
491 {
492 ASSERT_NE(CONFORMANCE_TEST_ERROR, ZBFuncExec());
493 }
494
TEST_P(GLES1ConformanceTest,DrawTex)495 TEST_P(GLES1ConformanceTest, DrawTex)
496 {
497 ASSERT_TRUE(IsGLExtensionEnabled("GL_OES_draw_texture"));
498 ASSERT_NE(CONFORMANCE_TEST_ERROR, DrawTexExec());
499 }
500
TEST_P(GLES1ConformanceTest,MatrixQuery)501 TEST_P(GLES1ConformanceTest, MatrixQuery)
502 {
503 ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixQueryExec());
504 }
505
TEST_P(GLES1ConformanceTest,BufferObject)506 TEST_P(GLES1ConformanceTest, BufferObject)
507 {
508 ASSERT_NE(CONFORMANCE_TEST_ERROR, BufferObjectExec());
509 }
510
TEST_P(GLES1ConformanceTest,PointSizeArray)511 TEST_P(GLES1ConformanceTest, PointSizeArray)
512 {
513 ASSERT_NE(CONFORMANCE_TEST_ERROR, PointSizeArrayExec());
514 }
515
TEST_P(GLES1ConformanceTest,PointSprite)516 TEST_P(GLES1ConformanceTest, PointSprite)
517 {
518 ASSERT_NE(CONFORMANCE_TEST_ERROR, PointSpriteExec());
519 }
520
TEST_P(GLES1ConformanceTest,UserClip)521 TEST_P(GLES1ConformanceTest, UserClip)
522 {
523 // "2.11 Clipping" describes the complementarity criterion, where a
524 // primitive drawn once with a particular clip plane and again with the
525 // negated version of the clip plane must not overdraw for pixels where the
526 // plane equation evaluates exactly to zero; that is, we would need to
527 // detect previously drawn fragments from one clip plane that lie exactly
528 // on the half space boundary, and avoid drawing them if the same primitive
529 // is issued next draw with a negated version of the clip plane.
530 //
531 // TODO(lfy@google.com)
532 // We can skip the test for now, or seed the test with a sufficiently nice
533 // random number so that it still test clip planes, but doesn't have any
534 // pixels exactly on half space boundaries.
535 //
536 // Proper fix would either involve a more complex scheme to track fragments
537 // on the half space boundary and discard or not next draw based on whether
538 // they are hit again, or to pass through to a hardware clip plane
539 // implementation (available in desktop GL or Vulkan)
540
541 ANGLE_SKIP_TEST_IF(true);
542 ASSERT_NE(CONFORMANCE_TEST_ERROR, UserClipExec());
543 }
544
TEST_P(GLES1ConformanceTest,MatrixGetTest)545 TEST_P(GLES1ConformanceTest, MatrixGetTest)
546 {
547 ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixGetTestExec());
548 }
549
TEST_P(GLES1ConformanceTest,Gets)550 TEST_P(GLES1ConformanceTest, Gets)
551 {
552 ASSERT_NE(CONFORMANCE_TEST_ERROR, GetsExec());
553 }
554
TEST_P(GLES1ConformanceTest,TexCombine)555 TEST_P(GLES1ConformanceTest, TexCombine)
556 {
557 ASSERT_NE(CONFORMANCE_TEST_ERROR, TexCombineExec());
558 }
559
TEST_P(GLES1ConformanceTest,MatrixPalette)560 TEST_P(GLES1ConformanceTest, MatrixPalette)
561 {
562 ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixPaletteExec());
563 }
564
565 ANGLE_INSTANTIATE_TEST(GLES1ConformanceTest, ES1_OPENGL(), ES1_VULKAN());
566 } // namespace angle
567
568 // Included here to fix a compile error due to white box tests using angle_end2end_tests_main.
RegisterContextCompatibilityTests()569 void RegisterContextCompatibilityTests() {}