Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/tests/gl_tests/CompressedTextureFormatsTest.cpp
1693 views
1
//
2
// Copyright 2021 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
// CompressedTextureFormatsTest:
7
// Tests that only the appropriate entry points are affected after
8
// enabling compressed texture extensions.
9
//
10
11
#include "libANGLE/capture/gl_enum_utils.h"
12
#include "test_utils/ANGLETest.h"
13
#include "test_utils/gl_raii.h"
14
15
using namespace angle;
16
17
namespace
18
{
19
20
using FormatDesc = std::pair<GLenum, GLsizei>;
21
using CompressedTextureTestParams = std::tuple<angle::PlatformParameters, FormatDesc>;
22
23
class CompressedTextureFormatsTest : public ANGLETestWithParam<CompressedTextureTestParams>
24
{
25
public:
26
CompressedTextureFormatsTest(const std::string ext1,
27
const std::string ext2,
28
const bool supportsUpdates,
29
const bool supports2DArray,
30
const bool supports3D,
31
const bool alwaysOnES3)
32
: mExtNames({ext1, ext2}),
33
mSupportsUpdates(supportsUpdates),
34
mSupports2DArray(supports2DArray),
35
mSupports3D(supports3D),
36
mAlwaysOnES3(alwaysOnES3)
37
{
38
setExtensionsEnabled(false);
39
}
40
41
void testSetUp() override
42
{
43
// Older Metal versions do not support compressed TEXTURE_3D.
44
mDisableTexture3D = IsMetal() && !IsMetalCompressedTexture3DAvailable();
45
}
46
47
void checkSubImage2D(GLenum format, GLsizei size)
48
{
49
GLubyte data[32];
50
51
// The semantic of this call is to take uncompressed data, compress it on-the-fly,
52
// and perform a partial update of an existing GPU-compressed texture. This
53
// operation is not supported in OpenGL ES.
54
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
55
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
56
57
// Compressed texture extensions never extend TexSubImage2D.
58
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, format, GL_UNSIGNED_BYTE, nullptr);
59
EXPECT_GL_ERROR(GL_INVALID_ENUM);
60
61
// The semantic of this call is to take pixel data from the current framebuffer, compress it
62
// on-the-fly, and perform a partial update of an existing GPU-compressed texture. This
63
// operation is not supported in OpenGL ES.
64
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 4, 4);
65
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
66
67
glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 4, 4, format, size, data);
68
EXPECT_GL_ERROR(mSupportsUpdates ? GL_NO_ERROR : GL_INVALID_OPERATION);
69
}
70
71
void checkSubImage3D(GLenum target, GLenum format, GLsizei size)
72
{
73
GLubyte data[32];
74
75
// The semantic of this call is to take uncompressed data, compress it on-the-fly,
76
// and perform a partial update of an existing GPU-compressed texture. This
77
// operation is not supported in OpenGL ES.
78
glTexSubImage3D(target, 0, 0, 0, 0, 4, 4, 1, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
79
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
80
81
// Compressed texture extensions never extend TexSubImage3D.
82
glTexSubImage3D(target, 0, 0, 0, 0, 4, 4, 1, format, GL_UNSIGNED_BYTE, nullptr);
83
EXPECT_GL_ERROR(GL_INVALID_ENUM);
84
85
// The semantic of this call is to take pixel data from the current framebuffer, compress it
86
// on-the-fly, and perform a partial update of an existing GPU-compressed texture. This
87
// operation is not supported in OpenGL ES.
88
glCopyTexSubImage3D(target, 0, 0, 0, 0, 0, 0, 4, 4);
89
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
90
91
glCompressedTexSubImage3D(target, 0, 0, 0, 0, 4, 4, 1, format, size, data);
92
EXPECT_GL_NO_ERROR();
93
}
94
95
void check2D(const bool compressedFormatEnabled)
96
{
97
const GLenum format = ::testing::get<1>(GetParam()).first;
98
const GLsizei size = ::testing::get<1>(GetParam()).second;
99
100
{
101
GLTexture texture;
102
glBindTexture(GL_TEXTURE_2D, texture);
103
104
// The semantic of this call is to take uncompressed data and compress it on-the-fly.
105
// This operation is not supported in OpenGL ES.
106
glTexImage2D(GL_TEXTURE_2D, 0, format, 4, 4, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
107
EXPECT_GL_ERROR(getClientMajorVersion() >= 3 ? GL_INVALID_OPERATION : GL_INVALID_VALUE);
108
109
// Try compressed enum as format. Compressed texture extensions never allow this.
110
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 4, 4, 0, format, GL_UNSIGNED_BYTE, nullptr);
111
EXPECT_GL_ERROR(GL_INVALID_ENUM);
112
113
// The semantic of this call is to take pixel data from the current framebuffer
114
// and create a compressed texture from it on-the-fly. This operation is not supported
115
// in OpenGL ES.
116
glCopyTexImage2D(GL_TEXTURE_2D, 0, format, 0, 0, 4, 4, 0);
117
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
118
119
glCompressedTexImage2D(GL_TEXTURE_2D, 0, format, 4, 4, 0, size, nullptr);
120
if (compressedFormatEnabled)
121
{
122
EXPECT_GL_NO_ERROR();
123
124
checkSubImage2D(format, size);
125
}
126
else
127
{
128
EXPECT_GL_ERROR(GL_INVALID_ENUM);
129
}
130
}
131
132
if (getClientMajorVersion() >= 3)
133
{
134
GLTexture texture;
135
glBindTexture(GL_TEXTURE_2D, texture);
136
137
glTexStorage2D(GL_TEXTURE_2D, 1, format, 4, 4);
138
if (compressedFormatEnabled)
139
{
140
EXPECT_GL_NO_ERROR();
141
142
checkSubImage2D(format, size);
143
}
144
else
145
{
146
EXPECT_GL_ERROR(GL_INVALID_ENUM);
147
}
148
}
149
150
if (EnsureGLExtensionEnabled("GL_EXT_texture_storage"))
151
{
152
GLTexture texture;
153
glBindTexture(GL_TEXTURE_2D, texture);
154
155
glTexStorage2DEXT(GL_TEXTURE_2D, 1, format, 4, 4);
156
if (compressedFormatEnabled)
157
{
158
EXPECT_GL_NO_ERROR();
159
160
checkSubImage2D(format, size);
161
}
162
else
163
{
164
EXPECT_GL_ERROR(GL_INVALID_ENUM);
165
}
166
}
167
}
168
169
void check3D(GLenum target, const bool compressedFormatEnabled, const bool supportsTarget)
170
{
171
const GLenum format = ::testing::get<1>(GetParam()).first;
172
const GLsizei size = ::testing::get<1>(GetParam()).second;
173
174
{
175
GLTexture texture;
176
glBindTexture(target, texture);
177
178
// Try compressed enum as internalformat. The semantic of this call is to take
179
// uncompressed data and compress it on-the-fly. This operation is not supported in
180
// OpenGL ES.
181
glTexImage3D(target, 0, format, 4, 4, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
182
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
183
184
// Try compressed enum as format. Compressed texture extensions never allow this.
185
glTexImage3D(target, 0, GL_RGB, 4, 4, 1, 0, format, GL_UNSIGNED_BYTE, nullptr);
186
EXPECT_GL_ERROR(GL_INVALID_ENUM);
187
188
glCompressedTexImage3D(target, 0, format, 4, 4, 1, 0, size, nullptr);
189
if (compressedFormatEnabled)
190
{
191
if (supportsTarget)
192
{
193
EXPECT_GL_NO_ERROR();
194
195
checkSubImage3D(target, format, size);
196
}
197
else
198
{
199
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
200
}
201
}
202
else
203
{
204
EXPECT_GL_ERROR(GL_INVALID_ENUM);
205
}
206
}
207
208
{
209
GLTexture texture;
210
glBindTexture(target, texture);
211
212
glTexStorage3D(target, 1, format, 4, 4, 1);
213
if (compressedFormatEnabled)
214
{
215
if (supportsTarget)
216
{
217
EXPECT_GL_NO_ERROR();
218
219
checkSubImage3D(target, format, size);
220
}
221
else
222
{
223
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
224
}
225
}
226
else
227
{
228
EXPECT_GL_ERROR(GL_INVALID_ENUM);
229
}
230
}
231
}
232
233
void test()
234
{
235
// ETC2/EAC formats always pass validation on ES3 contexts but in some cases fail in drivers
236
// because their emulation is not implemented for OpenGL renderer.
237
// https://crbug.com/angleproject/6300
238
if (mAlwaysOnES3)
239
{
240
ANGLE_SKIP_TEST_IF(getClientMajorVersion() >= 3 &&
241
!IsGLExtensionRequestable(mExtNames[0]));
242
}
243
244
// It's not possible to disable ETC2/EAC support on ES 3.0.
245
const bool compressedFormatEnabled = mAlwaysOnES3 && getClientMajorVersion() >= 3;
246
check2D(compressedFormatEnabled);
247
if (getClientMajorVersion() >= 3)
248
{
249
check3D(GL_TEXTURE_2D_ARRAY, compressedFormatEnabled, mSupports2DArray);
250
check3D(GL_TEXTURE_3D, compressedFormatEnabled, mSupports3D && !mDisableTexture3D);
251
}
252
253
for (const std::string &extName : mExtNames)
254
{
255
if (!extName.empty())
256
{
257
if (IsGLExtensionRequestable(extName))
258
{
259
glRequestExtensionANGLE(extName.c_str());
260
}
261
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled(extName));
262
}
263
}
264
265
// Repeat all checks after enabling the extensions.
266
check2D(true);
267
if (getClientMajorVersion() >= 3)
268
{
269
check3D(GL_TEXTURE_2D_ARRAY, true, mSupports2DArray);
270
check3D(GL_TEXTURE_3D, true, mSupports3D && !mDisableTexture3D);
271
}
272
}
273
274
private:
275
bool mDisableTexture3D = false;
276
const std::vector<std::string> mExtNames;
277
const bool mSupportsUpdates;
278
const bool mSupports2DArray;
279
const bool mSupports3D;
280
const bool mAlwaysOnES3;
281
};
282
283
template <char const *ext1,
284
char const *ext2,
285
bool supports_updates,
286
bool supports_2d_array,
287
bool supports_3d,
288
bool always_on_es3>
289
class _Test : public CompressedTextureFormatsTest
290
{
291
public:
292
_Test()
293
: CompressedTextureFormatsTest(ext1,
294
ext2,
295
supports_updates,
296
supports_2d_array,
297
supports_3d,
298
always_on_es3)
299
{}
300
};
301
302
const char kDXT1[] = "GL_EXT_texture_compression_dxt1";
303
const char kDXT3[] = "GL_ANGLE_texture_compression_dxt3";
304
const char kDXT5[] = "GL_ANGLE_texture_compression_dxt5";
305
const char kS3TCSRGB[] = "GL_EXT_texture_compression_s3tc_srgb";
306
const char kRGTC[] = "GL_EXT_texture_compression_rgtc";
307
const char kBPTC[] = "GL_EXT_texture_compression_bptc";
308
309
const char kETC1[] = "GL_OES_compressed_ETC1_RGB8_texture";
310
const char kETC1Sub[] = "GL_EXT_compressed_ETC1_RGB8_sub_texture";
311
312
const char kEACR11U[] = "GL_OES_compressed_EAC_R11_unsigned_texture";
313
const char kEACR11S[] = "GL_OES_compressed_EAC_R11_signed_texture";
314
const char kEACRG11U[] = "GL_OES_compressed_EAC_RG11_unsigned_texture";
315
const char kEACRG11S[] = "GL_OES_compressed_EAC_RG11_signed_texture";
316
317
const char kETC2RGB8[] = "GL_OES_compressed_ETC2_RGB8_texture";
318
const char kETC2RGB8SRGB[] = "GL_OES_compressed_ETC2_sRGB8_texture";
319
const char kETC2RGB8A1[] = "GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture";
320
const char kETC2RGB8A1SRGB[] = "GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture";
321
const char kETC2RGBA8[] = "GL_OES_compressed_ETC2_RGBA8_texture";
322
const char kETC2RGBA8SRGB[] = "GL_OES_compressed_ETC2_sRGB8_alpha8_texture";
323
324
const char kASTC[] = "GL_KHR_texture_compression_astc_ldr";
325
const char kASTCSliced3D[] = "GL_KHR_texture_compression_astc_sliced_3d";
326
327
const char kPVRTC1[] = "GL_IMG_texture_compression_pvrtc";
328
const char kPVRTCSRGB[] = "GL_EXT_pvrtc_sRGB";
329
330
const char kEmpty[] = "";
331
332
// clang-format off
333
using CompressedTextureDXT1Test = _Test<kDXT1, kEmpty, true, true, false, false>;
334
using CompressedTextureDXT3Test = _Test<kDXT3, kEmpty, true, true, false, false>;
335
using CompressedTextureDXT5Test = _Test<kDXT5, kEmpty, true, true, false, false>;
336
using CompressedTextureS3TCSRGBTest = _Test<kS3TCSRGB, kEmpty, true, true, false, false>;
337
using CompressedTextureRGTCTest = _Test<kRGTC, kEmpty, true, true, false, false>;
338
using CompressedTextureBPTCTest = _Test<kBPTC, kEmpty, true, true, true, false>;
339
340
using CompressedTextureETC1Test = _Test<kETC1, kEmpty, false, false, false, false>;
341
using CompressedTextureETC1SubTest = _Test<kETC1, kETC1Sub, true, false, false, false>;
342
343
using CompressedTextureEACR11UTest = _Test<kEACR11U, kEmpty, true, true, false, true>;
344
using CompressedTextureEACR11STest = _Test<kEACR11S, kEmpty, true, true, false, true>;
345
using CompressedTextureEACRG11UTest = _Test<kEACRG11U, kEmpty, true, true, false, true>;
346
using CompressedTextureEACRG11STest = _Test<kEACRG11S, kEmpty, true, true, false, true>;
347
348
using CompressedTextureETC2RGB8Test = _Test<kETC2RGB8, kEmpty, true, true, false, true>;
349
using CompressedTextureETC2RGB8SRGBTest = _Test<kETC2RGB8SRGB, kEmpty, true, true, false, true>;
350
using CompressedTextureETC2RGB8A1Test = _Test<kETC2RGB8A1, kEmpty, true, true, false, true>;
351
using CompressedTextureETC2RGB8A1SRGBTest = _Test<kETC2RGB8A1SRGB, kEmpty, true, true, false, true>;
352
using CompressedTextureETC2RGBA8Test = _Test<kETC2RGBA8, kEmpty, true, true, false, true>;
353
using CompressedTextureETC2RGBA8SRGBTest = _Test<kETC2RGBA8SRGB, kEmpty, true, true, false, true>;
354
355
using CompressedTextureASTCTest = _Test<kASTC, kEmpty, true, true, false, false>;
356
using CompressedTextureASTCSliced3DTest = _Test<kASTC, kASTCSliced3D, true, true, true, false>;
357
358
using CompressedTexturePVRTC1Test = _Test<kPVRTC1, kEmpty, true, false, false, false>;
359
using CompressedTexturePVRTC1SRGBTest = _Test<kPVRTC1, kPVRTCSRGB, true, false, false, false>;
360
// clang-format on
361
362
std::string PrintToStringParamName(
363
const ::testing::TestParamInfo<CompressedTextureTestParams> &info)
364
{
365
std::string name = gl::GLinternalFormatToString(std::get<1>(info.param).first);
366
name.erase(0, 3); // Remove GL_
367
if (name.find("COMPRESSED_") == 0)
368
{
369
name.erase(0, 11);
370
}
371
for (std::string str : {"_EXT", "_IMG", "_KHR", "_OES"})
372
{
373
if (name.find(str) != std::string::npos)
374
{
375
name.erase(name.length() - 4, 4);
376
break;
377
}
378
}
379
std::stringstream nameStr;
380
nameStr << name << "__" << std::get<0>(info.param);
381
return nameStr.str();
382
}
383
384
static const FormatDesc kDXT1Formats[] = {{GL_COMPRESSED_RGB_S3TC_DXT1_EXT, 8},
385
{GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, 8}};
386
387
static const FormatDesc kDXT3Formats[] = {{GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, 16}};
388
389
static const FormatDesc kDXT5Formats[] = {{GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 16}};
390
391
static const FormatDesc kS3TCSRGBFormats[] = {{GL_COMPRESSED_SRGB_S3TC_DXT1_EXT, 8},
392
{GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, 8},
393
{GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, 16},
394
{GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, 16}};
395
396
static const FormatDesc kRGTCFormats[] = {{GL_COMPRESSED_RED_RGTC1_EXT, 8},
397
{GL_COMPRESSED_SIGNED_RED_RGTC1_EXT, 8},
398
{GL_COMPRESSED_RED_GREEN_RGTC2_EXT, 16},
399
{GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, 16}};
400
401
static const FormatDesc kBPTCFormats[] = {{GL_COMPRESSED_RGBA_BPTC_UNORM_EXT, 16},
402
{GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, 16},
403
{GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, 16},
404
{GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, 16}};
405
406
static const FormatDesc kETC1Formats[] = {{GL_ETC1_RGB8_OES, 8}};
407
408
// clang-format off
409
static const FormatDesc kEACR11UFormats[] = {{GL_COMPRESSED_R11_EAC, 8}};
410
static const FormatDesc kEACR11SFormats[] = {{GL_COMPRESSED_SIGNED_R11_EAC, 8}};
411
static const FormatDesc kEACRG11UFormats[] = {{GL_COMPRESSED_RG11_EAC, 16}};
412
static const FormatDesc kEACRG11SFormats[] = {{GL_COMPRESSED_SIGNED_RG11_EAC, 16}};
413
static const FormatDesc kETC2RGB8Formats[] = {{GL_COMPRESSED_RGB8_ETC2, 8}};
414
static const FormatDesc kETC2RGB8SRGBFormats[] = {{GL_COMPRESSED_SRGB8_ETC2, 8}};
415
static const FormatDesc kETC2RGB8A1Formats[] = {{GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, 8}};
416
static const FormatDesc kETC2RGB8A1SRGBFormats[] = {{GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, 8}};
417
static const FormatDesc kETC2RGBA8Formats[] = {{GL_COMPRESSED_RGBA8_ETC2_EAC, 16}};
418
static const FormatDesc kETC2RGBA8SRGBFormats[] = {{GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, 16}};
419
// clang-format on
420
421
static const FormatDesc kASTCFormats[] = {{GL_COMPRESSED_RGBA_ASTC_4x4_KHR, 16},
422
{GL_COMPRESSED_RGBA_ASTC_5x4_KHR, 16},
423
{GL_COMPRESSED_RGBA_ASTC_5x5_KHR, 16},
424
{GL_COMPRESSED_RGBA_ASTC_6x5_KHR, 16},
425
{GL_COMPRESSED_RGBA_ASTC_6x6_KHR, 16},
426
{GL_COMPRESSED_RGBA_ASTC_8x5_KHR, 16},
427
{GL_COMPRESSED_RGBA_ASTC_8x6_KHR, 16},
428
{GL_COMPRESSED_RGBA_ASTC_8x8_KHR, 16},
429
{GL_COMPRESSED_RGBA_ASTC_10x5_KHR, 16},
430
{GL_COMPRESSED_RGBA_ASTC_10x6_KHR, 16},
431
{GL_COMPRESSED_RGBA_ASTC_10x8_KHR, 16},
432
{GL_COMPRESSED_RGBA_ASTC_10x10_KHR, 16},
433
{GL_COMPRESSED_RGBA_ASTC_12x10_KHR, 16},
434
{GL_COMPRESSED_RGBA_ASTC_12x12_KHR, 16},
435
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, 16},
436
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, 16},
437
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, 16},
438
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, 16},
439
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, 16},
440
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, 16},
441
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, 16},
442
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, 16},
443
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR, 16},
444
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, 16},
445
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, 16},
446
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, 16},
447
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, 16},
448
{GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, 16}};
449
450
static const FormatDesc kPVRTC1Formats[] = {{GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, 32},
451
{GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG, 32},
452
{GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, 32},
453
{GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, 32}};
454
455
static const FormatDesc kPVRTC1SRGBFormats[] = {{GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT, 32},
456
{GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT, 32},
457
{GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT, 32},
458
{GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT, 32}};
459
460
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureDXT1Test,
461
PrintToStringParamName,
462
testing::ValuesIn(kDXT1Formats),
463
ANGLE_ALL_TEST_PLATFORMS_ES2,
464
ANGLE_ALL_TEST_PLATFORMS_ES3);
465
466
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureDXT3Test,
467
PrintToStringParamName,
468
testing::ValuesIn(kDXT3Formats),
469
ANGLE_ALL_TEST_PLATFORMS_ES2,
470
ANGLE_ALL_TEST_PLATFORMS_ES3);
471
472
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureDXT5Test,
473
PrintToStringParamName,
474
testing::ValuesIn(kDXT5Formats),
475
ANGLE_ALL_TEST_PLATFORMS_ES2,
476
ANGLE_ALL_TEST_PLATFORMS_ES3);
477
478
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureS3TCSRGBTest,
479
PrintToStringParamName,
480
testing::ValuesIn(kS3TCSRGBFormats),
481
ANGLE_ALL_TEST_PLATFORMS_ES2,
482
ANGLE_ALL_TEST_PLATFORMS_ES3);
483
484
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureRGTCTest,
485
PrintToStringParamName,
486
testing::ValuesIn(kRGTCFormats),
487
ANGLE_ALL_TEST_PLATFORMS_ES2,
488
ANGLE_ALL_TEST_PLATFORMS_ES3);
489
490
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureBPTCTest,
491
PrintToStringParamName,
492
testing::ValuesIn(kBPTCFormats),
493
ANGLE_ALL_TEST_PLATFORMS_ES2,
494
ANGLE_ALL_TEST_PLATFORMS_ES3);
495
496
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureETC1Test,
497
PrintToStringParamName,
498
testing::ValuesIn(kETC1Formats),
499
ANGLE_ALL_TEST_PLATFORMS_ES2,
500
ANGLE_ALL_TEST_PLATFORMS_ES3);
501
502
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureETC1SubTest,
503
PrintToStringParamName,
504
testing::ValuesIn(kETC1Formats),
505
ANGLE_ALL_TEST_PLATFORMS_ES2,
506
ANGLE_ALL_TEST_PLATFORMS_ES3);
507
508
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureEACR11UTest,
509
PrintToStringParamName,
510
testing::ValuesIn(kEACR11UFormats),
511
ANGLE_ALL_TEST_PLATFORMS_ES2,
512
ANGLE_ALL_TEST_PLATFORMS_ES3);
513
514
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureEACR11STest,
515
PrintToStringParamName,
516
testing::ValuesIn(kEACR11SFormats),
517
ANGLE_ALL_TEST_PLATFORMS_ES2,
518
ANGLE_ALL_TEST_PLATFORMS_ES3);
519
520
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureEACRG11UTest,
521
PrintToStringParamName,
522
testing::ValuesIn(kEACRG11UFormats),
523
ANGLE_ALL_TEST_PLATFORMS_ES2,
524
ANGLE_ALL_TEST_PLATFORMS_ES3);
525
526
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureEACRG11STest,
527
PrintToStringParamName,
528
testing::ValuesIn(kEACRG11SFormats),
529
ANGLE_ALL_TEST_PLATFORMS_ES2,
530
ANGLE_ALL_TEST_PLATFORMS_ES3);
531
532
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureETC2RGB8Test,
533
PrintToStringParamName,
534
testing::ValuesIn(kETC2RGB8Formats),
535
ANGLE_ALL_TEST_PLATFORMS_ES2,
536
ANGLE_ALL_TEST_PLATFORMS_ES3);
537
538
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureETC2RGB8SRGBTest,
539
PrintToStringParamName,
540
testing::ValuesIn(kETC2RGB8SRGBFormats),
541
ANGLE_ALL_TEST_PLATFORMS_ES2,
542
ANGLE_ALL_TEST_PLATFORMS_ES3);
543
544
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureETC2RGB8A1Test,
545
PrintToStringParamName,
546
testing::ValuesIn(kETC2RGB8A1Formats),
547
ANGLE_ALL_TEST_PLATFORMS_ES2,
548
ANGLE_ALL_TEST_PLATFORMS_ES3);
549
550
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureETC2RGB8A1SRGBTest,
551
PrintToStringParamName,
552
testing::ValuesIn(kETC2RGB8A1SRGBFormats),
553
ANGLE_ALL_TEST_PLATFORMS_ES2,
554
ANGLE_ALL_TEST_PLATFORMS_ES3);
555
556
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureETC2RGBA8Test,
557
PrintToStringParamName,
558
testing::ValuesIn(kETC2RGBA8Formats),
559
ANGLE_ALL_TEST_PLATFORMS_ES2,
560
ANGLE_ALL_TEST_PLATFORMS_ES3);
561
562
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureETC2RGBA8SRGBTest,
563
PrintToStringParamName,
564
testing::ValuesIn(kETC2RGBA8SRGBFormats),
565
ANGLE_ALL_TEST_PLATFORMS_ES2,
566
ANGLE_ALL_TEST_PLATFORMS_ES3);
567
568
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureASTCTest,
569
PrintToStringParamName,
570
testing::ValuesIn(kASTCFormats),
571
ANGLE_ALL_TEST_PLATFORMS_ES2,
572
ANGLE_ALL_TEST_PLATFORMS_ES3);
573
574
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTextureASTCSliced3DTest,
575
PrintToStringParamName,
576
testing::ValuesIn(kASTCFormats),
577
ANGLE_ALL_TEST_PLATFORMS_ES2,
578
ANGLE_ALL_TEST_PLATFORMS_ES3);
579
580
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTexturePVRTC1Test,
581
PrintToStringParamName,
582
testing::ValuesIn(kPVRTC1Formats),
583
ANGLE_ALL_TEST_PLATFORMS_ES2,
584
ANGLE_ALL_TEST_PLATFORMS_ES3);
585
586
ANGLE_INSTANTIATE_TEST_COMBINE_1(CompressedTexturePVRTC1SRGBTest,
587
PrintToStringParamName,
588
testing::ValuesIn(kPVRTC1SRGBFormats),
589
ANGLE_ALL_TEST_PLATFORMS_ES2,
590
ANGLE_ALL_TEST_PLATFORMS_ES3);
591
592
// clang-format off
593
TEST_P(CompressedTextureDXT1Test, Test) { test(); }
594
TEST_P(CompressedTextureDXT3Test, Test) { test(); }
595
TEST_P(CompressedTextureDXT5Test, Test) { test(); }
596
TEST_P(CompressedTextureS3TCSRGBTest, Test) { test(); }
597
TEST_P(CompressedTextureRGTCTest, Test) { test(); }
598
TEST_P(CompressedTextureBPTCTest, Test) { test(); }
599
600
TEST_P(CompressedTextureETC1Test, Test) { test(); }
601
TEST_P(CompressedTextureETC1SubTest, Test) { test(); }
602
603
TEST_P(CompressedTextureEACR11UTest, Test) { test(); }
604
TEST_P(CompressedTextureEACR11STest, Test) { test(); }
605
TEST_P(CompressedTextureEACRG11UTest, Test) { test(); }
606
TEST_P(CompressedTextureEACRG11STest, Test) { test(); }
607
608
TEST_P(CompressedTextureETC2RGB8Test, Test) { test(); }
609
TEST_P(CompressedTextureETC2RGB8SRGBTest, Test) { test(); }
610
TEST_P(CompressedTextureETC2RGB8A1Test, Test) { test(); }
611
TEST_P(CompressedTextureETC2RGB8A1SRGBTest, Test) { test(); }
612
TEST_P(CompressedTextureETC2RGBA8Test, Test) { test(); }
613
TEST_P(CompressedTextureETC2RGBA8SRGBTest, Test) { test(); }
614
615
TEST_P(CompressedTextureASTCTest, Test) { test(); }
616
TEST_P(CompressedTextureASTCSliced3DTest, Test) { test(); }
617
618
TEST_P(CompressedTexturePVRTC1Test, Test) { test(); }
619
TEST_P(CompressedTexturePVRTC1SRGBTest, Test) { test(); }
620
// clang-format on
621
} // namespace
622
623