Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/tests/gles1_conformance_tests/ConformanceTests.cpp
1693 views
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:
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
133
void testSetUp() override
134
{
135
BufferSetup();
136
EpsilonSetup();
137
StateSetup();
138
}
139
};
140
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
148
TEST_P(GLES1ConformanceTest, AmbMat)
149
{
150
ASSERT_NE(CONFORMANCE_TEST_ERROR, AmbMatExec());
151
}
152
153
TEST_P(GLES1ConformanceTest, AmbScene)
154
{
155
ASSERT_NE(CONFORMANCE_TEST_ERROR, AmbSceneExec());
156
}
157
158
TEST_P(GLES1ConformanceTest, APFunc)
159
{
160
ASSERT_NE(CONFORMANCE_TEST_ERROR, APFuncExec());
161
}
162
163
TEST_P(GLES1ConformanceTest, AtnConst)
164
{
165
ASSERT_NE(CONFORMANCE_TEST_ERROR, AtnConstExec());
166
}
167
168
TEST_P(GLES1ConformanceTest, AtnPos)
169
{
170
ASSERT_NE(CONFORMANCE_TEST_ERROR, AtnPosExec());
171
}
172
173
TEST_P(GLES1ConformanceTest, BClear)
174
{
175
ASSERT_NE(CONFORMANCE_TEST_ERROR, BClearExec());
176
}
177
178
TEST_P(GLES1ConformanceTest, BColor)
179
{
180
ASSERT_NE(CONFORMANCE_TEST_ERROR, BColorExec());
181
}
182
183
TEST_P(GLES1ConformanceTest, BCorner)
184
{
185
ASSERT_NE(CONFORMANCE_TEST_ERROR, BCornerExec());
186
}
187
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
195
TEST_P(GLES1ConformanceTest, Clip)
196
{
197
ASSERT_NE(CONFORMANCE_TEST_ERROR, ClipExec());
198
}
199
200
TEST_P(GLES1ConformanceTest, ColRamp)
201
{
202
ASSERT_NE(CONFORMANCE_TEST_ERROR, ColRampExec());
203
}
204
205
TEST_P(GLES1ConformanceTest, CopyTex)
206
{
207
ASSERT_NE(CONFORMANCE_TEST_ERROR, CopyTexExec());
208
}
209
210
TEST_P(GLES1ConformanceTest, DifLight)
211
{
212
ASSERT_NE(CONFORMANCE_TEST_ERROR, DifLightExec());
213
}
214
215
TEST_P(GLES1ConformanceTest, DifMat)
216
{
217
ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatExec());
218
}
219
220
TEST_P(GLES1ConformanceTest, DifMatNorm)
221
{
222
ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatNormExec());
223
}
224
225
TEST_P(GLES1ConformanceTest, DifMatPos)
226
{
227
ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatPosExec());
228
}
229
230
TEST_P(GLES1ConformanceTest, Dither)
231
{
232
ASSERT_NE(CONFORMANCE_TEST_ERROR, DitherExec());
233
}
234
235
TEST_P(GLES1ConformanceTest, DivZero)
236
{
237
ASSERT_NE(CONFORMANCE_TEST_ERROR, DivZeroExec());
238
}
239
240
TEST_P(GLES1ConformanceTest, EmitMat)
241
{
242
ASSERT_NE(CONFORMANCE_TEST_ERROR, EmitMatExec());
243
}
244
245
TEST_P(GLES1ConformanceTest, FogExp)
246
{
247
ASSERT_NE(CONFORMANCE_TEST_ERROR, FogExpExec());
248
}
249
250
TEST_P(GLES1ConformanceTest, FogLin)
251
{
252
ASSERT_NE(CONFORMANCE_TEST_ERROR, FogLinExec());
253
}
254
255
TEST_P(GLES1ConformanceTest, LineAntiAlias)
256
{
257
ANGLE_SKIP_TEST_IF(true);
258
ASSERT_NE(CONFORMANCE_TEST_ERROR, LineAntiAliasExec());
259
}
260
261
TEST_P(GLES1ConformanceTest, LineHV)
262
{
263
ASSERT_NE(CONFORMANCE_TEST_ERROR, LineHVExec());
264
}
265
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
273
TEST_P(GLES1ConformanceTest, LogicOp)
274
{
275
ANGLE_SKIP_TEST_IF(true);
276
ASSERT_NE(CONFORMANCE_TEST_ERROR, LogicOpExec());
277
}
278
279
TEST_P(GLES1ConformanceTest, Mip)
280
{
281
ASSERT_NE(CONFORMANCE_TEST_ERROR, MipExec());
282
}
283
284
TEST_P(GLES1ConformanceTest, MipLevels)
285
{
286
ANGLE_SKIP_TEST_IF(true);
287
ASSERT_NE(CONFORMANCE_TEST_ERROR, MipLevelsExec());
288
}
289
290
TEST_P(GLES1ConformanceTest, MipLin)
291
{
292
ASSERT_NE(CONFORMANCE_TEST_ERROR, MipLinExec());
293
}
294
295
TEST_P(GLES1ConformanceTest, MipSelect)
296
{
297
ASSERT_NE(CONFORMANCE_TEST_ERROR, MipSelectExec());
298
}
299
300
TEST_P(GLES1ConformanceTest, Mask)
301
{
302
ASSERT_NE(CONFORMANCE_TEST_ERROR, MaskExec());
303
}
304
305
TEST_P(GLES1ConformanceTest, MatrixStack)
306
{
307
ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixStackExec());
308
}
309
310
TEST_P(GLES1ConformanceTest, MultiTex)
311
{
312
ASSERT_NE(CONFORMANCE_TEST_ERROR, MultiTexExec());
313
}
314
315
TEST_P(GLES1ConformanceTest, MustPass)
316
{
317
ANGLE_SKIP_TEST_IF(true);
318
ASSERT_NE(CONFORMANCE_TEST_ERROR, MustPassExec());
319
}
320
321
TEST_P(GLES1ConformanceTest, PackedPixels)
322
{
323
ASSERT_NE(CONFORMANCE_TEST_ERROR, PackedPixelsExec());
324
}
325
326
TEST_P(GLES1ConformanceTest, PointAntiAlias)
327
{
328
ANGLE_SKIP_TEST_IF(true);
329
ASSERT_NE(CONFORMANCE_TEST_ERROR, PointAntiAliasExec());
330
}
331
332
TEST_P(GLES1ConformanceTest, PointRaster)
333
{
334
ASSERT_NE(CONFORMANCE_TEST_ERROR, PointRasterExec());
335
}
336
337
TEST_P(GLES1ConformanceTest, PolyCull)
338
{
339
ASSERT_NE(CONFORMANCE_TEST_ERROR, PolyCullExec());
340
}
341
342
TEST_P(GLES1ConformanceTest, ReadFormat)
343
{
344
ASSERT_NE(CONFORMANCE_TEST_ERROR, ReadFormatExec());
345
}
346
347
TEST_P(GLES1ConformanceTest, RescaleNormal)
348
{
349
ANGLE_SKIP_TEST_IF(true);
350
ASSERT_NE(CONFORMANCE_TEST_ERROR, RescaleNormalExec());
351
}
352
353
TEST_P(GLES1ConformanceTest, Scissor)
354
{
355
ASSERT_NE(CONFORMANCE_TEST_ERROR, ScissorExec());
356
}
357
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
365
TEST_P(GLES1ConformanceTest, SPCorner)
366
{
367
ASSERT_NE(CONFORMANCE_TEST_ERROR, SPCornerExec());
368
}
369
370
TEST_P(GLES1ConformanceTest, SpecExp)
371
{
372
ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecExpExec());
373
}
374
375
TEST_P(GLES1ConformanceTest, SpecExpNorm)
376
{
377
ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecExpNormExec());
378
}
379
380
TEST_P(GLES1ConformanceTest, SpecLight)
381
{
382
ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecLightExec());
383
}
384
385
TEST_P(GLES1ConformanceTest, SpecMat)
386
{
387
ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecMatExec());
388
}
389
390
TEST_P(GLES1ConformanceTest, SpecNorm)
391
{
392
ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecNormExec());
393
}
394
395
TEST_P(GLES1ConformanceTest, SPFunc)
396
{
397
ASSERT_NE(CONFORMANCE_TEST_ERROR, SPFuncExec());
398
}
399
400
TEST_P(GLES1ConformanceTest, SPOp)
401
{
402
ASSERT_NE(CONFORMANCE_TEST_ERROR, SPOpExec());
403
}
404
405
TEST_P(GLES1ConformanceTest, SpotPos)
406
{
407
ASSERT_NE(CONFORMANCE_TEST_ERROR, SpotPosExec());
408
}
409
410
TEST_P(GLES1ConformanceTest, SpotExpPos)
411
{
412
ASSERT_NE(CONFORMANCE_TEST_ERROR, SpotExpPosExec());
413
}
414
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
422
TEST_P(GLES1ConformanceTest, TexDecal)
423
{
424
ASSERT_NE(CONFORMANCE_TEST_ERROR, TexDecalExec());
425
}
426
427
TEST_P(GLES1ConformanceTest, TexPalet)
428
{
429
ANGLE_SKIP_TEST_IF(true);
430
ASSERT_NE(CONFORMANCE_TEST_ERROR, TexPaletExec());
431
}
432
433
TEST_P(GLES1ConformanceTest, TextureEdgeClamp)
434
{
435
ASSERT_NE(CONFORMANCE_TEST_ERROR, TextureEdgeClampExec());
436
}
437
438
TEST_P(GLES1ConformanceTest, TriRaster)
439
{
440
ASSERT_NE(CONFORMANCE_TEST_ERROR, TriRasterExec());
441
}
442
443
TEST_P(GLES1ConformanceTest, TriTile)
444
{
445
ASSERT_NE(CONFORMANCE_TEST_ERROR, TriTileExec());
446
}
447
448
TEST_P(GLES1ConformanceTest, VertexOrder)
449
{
450
ASSERT_NE(CONFORMANCE_TEST_ERROR, VertexOrderExec());
451
}
452
453
TEST_P(GLES1ConformanceTest, ViewportClamp)
454
{
455
ASSERT_NE(CONFORMANCE_TEST_ERROR, ViewportClampExec());
456
}
457
458
TEST_P(GLES1ConformanceTest, XForm)
459
{
460
ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormExec());
461
}
462
463
TEST_P(GLES1ConformanceTest, XFormMix)
464
{
465
ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormMixExec());
466
}
467
468
TEST_P(GLES1ConformanceTest, XFormNormal)
469
{
470
ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormNormalExec());
471
}
472
473
TEST_P(GLES1ConformanceTest, XFormViewport)
474
{
475
ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormViewportExec());
476
}
477
478
TEST_P(GLES1ConformanceTest, XFormHomogenous)
479
{
480
ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormHomogenousExec());
481
}
482
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
490
TEST_P(GLES1ConformanceTest, ZBFunc)
491
{
492
ASSERT_NE(CONFORMANCE_TEST_ERROR, ZBFuncExec());
493
}
494
495
TEST_P(GLES1ConformanceTest, DrawTex)
496
{
497
ASSERT_TRUE(IsGLExtensionEnabled("GL_OES_draw_texture"));
498
ASSERT_NE(CONFORMANCE_TEST_ERROR, DrawTexExec());
499
}
500
501
TEST_P(GLES1ConformanceTest, MatrixQuery)
502
{
503
ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixQueryExec());
504
}
505
506
TEST_P(GLES1ConformanceTest, BufferObject)
507
{
508
ASSERT_NE(CONFORMANCE_TEST_ERROR, BufferObjectExec());
509
}
510
511
TEST_P(GLES1ConformanceTest, PointSizeArray)
512
{
513
ASSERT_NE(CONFORMANCE_TEST_ERROR, PointSizeArrayExec());
514
}
515
516
TEST_P(GLES1ConformanceTest, PointSprite)
517
{
518
ASSERT_NE(CONFORMANCE_TEST_ERROR, PointSpriteExec());
519
}
520
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([email protected])
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
545
TEST_P(GLES1ConformanceTest, MatrixGetTest)
546
{
547
ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixGetTestExec());
548
}
549
550
TEST_P(GLES1ConformanceTest, Gets)
551
{
552
ASSERT_NE(CONFORMANCE_TEST_ERROR, GetsExec());
553
}
554
555
TEST_P(GLES1ConformanceTest, TexCombine)
556
{
557
ASSERT_NE(CONFORMANCE_TEST_ERROR, TexCombineExec());
558
}
559
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.
569
void RegisterContextCompatibilityTests() {}
570