xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_texture_format_table.py using data from texture_format_data.json
3 //
4 // Copyright 2015 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // texture_format_table:
9 //   Queries for full textureFormat information based in internalFormat
10 //
11 
12 #include "libANGLE/renderer/d3d/d3d11/texture_format_table.h"
13 
14 #include "image_util/copyimage.h"
15 #include "image_util/generatemip.h"
16 #include "image_util/loadimage.h"
17 
18 #include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
19 #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
20 #include "libANGLE/renderer/d3d/d3d11/texture_format_table_utils.h"
21 
22 using namespace angle;
23 
24 namespace rx
25 {
26 
27 namespace d3d11
28 {
29 
30 // static
Get(GLenum internalFormat,const Renderer11DeviceCaps & deviceCaps)31 const Format &Format::Get(GLenum internalFormat, const Renderer11DeviceCaps &deviceCaps)
32 {
33     // clang-format off
34     switch (internalFormat)
35     {
36         case GL_ALPHA16F_EXT:
37         {
38             static constexpr Format info(GL_ALPHA16F_EXT,
39                                          angle::FormatID::R16G16B16A16_FLOAT,
40                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
41                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
42                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
43                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
44                                          DXGI_FORMAT_UNKNOWN,
45                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
46                                          DXGI_FORMAT_UNKNOWN,
47                                          DXGI_FORMAT_UNKNOWN,
48                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
49                                          GL_RGBA16F,
50                                          nullptr);
51             return info;
52         }
53         case GL_ALPHA32F_EXT:
54         {
55             static constexpr Format info(GL_ALPHA32F_EXT,
56                                          angle::FormatID::R32G32B32A32_FLOAT,
57                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
58                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
59                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
60                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
61                                          DXGI_FORMAT_UNKNOWN,
62                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
63                                          DXGI_FORMAT_UNKNOWN,
64                                          DXGI_FORMAT_UNKNOWN,
65                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
66                                          GL_RGBA32F,
67                                          nullptr);
68             return info;
69         }
70         case GL_ALPHA8_EXT:
71         {
72             if (OnlyFL10Plus(deviceCaps))
73             {
74                 static constexpr Format info(GL_ALPHA8_EXT,
75                                              angle::FormatID::A8_UNORM,
76                                              DXGI_FORMAT_A8_UNORM,
77                                              DXGI_FORMAT_A8_UNORM,
78                                              DXGI_FORMAT_UNKNOWN,
79                                              DXGI_FORMAT_A8_UNORM,
80                                              DXGI_FORMAT_UNKNOWN,
81                                              DXGI_FORMAT_A8_UNORM,
82                                              DXGI_FORMAT_UNKNOWN,
83                                              DXGI_FORMAT_UNKNOWN,
84                                              DXGI_FORMAT_UNKNOWN,
85                                              GL_RGBA8,
86                                              nullptr);
87                 return info;
88             }
89             else
90             {
91                 static constexpr Format info(GL_ALPHA8_EXT,
92                                              angle::FormatID::R8G8B8A8_UNORM,
93                                              DXGI_FORMAT_R8G8B8A8_UNORM,
94                                              DXGI_FORMAT_R8G8B8A8_UNORM,
95                                              DXGI_FORMAT_R8G8B8A8_UNORM,
96                                              DXGI_FORMAT_R8G8B8A8_UNORM,
97                                              DXGI_FORMAT_UNKNOWN,
98                                              DXGI_FORMAT_R8G8B8A8_UNORM,
99                                              DXGI_FORMAT_UNKNOWN,
100                                              DXGI_FORMAT_UNKNOWN,
101                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
102                                              GL_RGBA8,
103                                              nullptr);
104                 return info;
105             }
106         }
107         case GL_BGR10_A2_ANGLEX:
108         {
109             static constexpr Format info(GL_BGR10_A2_ANGLEX,
110                                          angle::FormatID::B10G10R10A2_UNORM,
111                                          DXGI_FORMAT_R10G10B10A2_UNORM,
112                                          DXGI_FORMAT_R10G10B10A2_UNORM,
113                                          DXGI_FORMAT_UNKNOWN,
114                                          DXGI_FORMAT_R10G10B10A2_UNORM,
115                                          DXGI_FORMAT_UNKNOWN,
116                                          DXGI_FORMAT_R10G10B10A2_UNORM,
117                                          DXGI_FORMAT_UNKNOWN,
118                                          DXGI_FORMAT_UNKNOWN,
119                                          DXGI_FORMAT_R10G10B10A2_TYPELESS,
120                                          GL_RGBA16_EXT,
121                                          nullptr);
122             return info;
123         }
124         case GL_BGR565_ANGLEX:
125         {
126             if (SupportsFormat(DXGI_FORMAT_B5G6R5_UNORM, deviceCaps))
127             {
128                 static constexpr Format info(GL_BGR565_ANGLEX,
129                                              angle::FormatID::B5G6R5_UNORM,
130                                              DXGI_FORMAT_B5G6R5_UNORM,
131                                              DXGI_FORMAT_B5G6R5_UNORM,
132                                              DXGI_FORMAT_UNKNOWN,
133                                              DXGI_FORMAT_B5G6R5_UNORM,
134                                              DXGI_FORMAT_UNKNOWN,
135                                              DXGI_FORMAT_B5G6R5_UNORM,
136                                              DXGI_FORMAT_UNKNOWN,
137                                              DXGI_FORMAT_UNKNOWN,
138                                              DXGI_FORMAT_UNKNOWN,
139                                              GL_RGBA8,
140                                              nullptr);
141                 return info;
142             }
143             else
144             {
145                 static constexpr Format info(GL_BGR565_ANGLEX,
146                                              angle::FormatID::R8G8B8A8_UNORM,
147                                              DXGI_FORMAT_R8G8B8A8_UNORM,
148                                              DXGI_FORMAT_R8G8B8A8_UNORM,
149                                              DXGI_FORMAT_R8G8B8A8_UNORM,
150                                              DXGI_FORMAT_R8G8B8A8_UNORM,
151                                              DXGI_FORMAT_UNKNOWN,
152                                              DXGI_FORMAT_R8G8B8A8_UNORM,
153                                              DXGI_FORMAT_UNKNOWN,
154                                              DXGI_FORMAT_UNKNOWN,
155                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
156                                              GL_RGBA8,
157                                              nullptr);
158                 return info;
159             }
160         }
161         case GL_BGR5_A1_ANGLEX:
162         {
163             static constexpr Format info(GL_BGR5_A1_ANGLEX,
164                                          angle::FormatID::B8G8R8A8_UNORM,
165                                          DXGI_FORMAT_B8G8R8A8_UNORM,
166                                          DXGI_FORMAT_B8G8R8A8_UNORM,
167                                          DXGI_FORMAT_UNKNOWN,
168                                          DXGI_FORMAT_B8G8R8A8_UNORM,
169                                          DXGI_FORMAT_UNKNOWN,
170                                          DXGI_FORMAT_B8G8R8A8_UNORM,
171                                          DXGI_FORMAT_UNKNOWN,
172                                          DXGI_FORMAT_UNKNOWN,
173                                          DXGI_FORMAT_B8G8R8A8_TYPELESS,
174                                          GL_BGRA8_EXT,
175                                          nullptr);
176             return info;
177         }
178         case GL_BGRA4_ANGLEX:
179         {
180             static constexpr Format info(GL_BGRA4_ANGLEX,
181                                          angle::FormatID::B8G8R8A8_UNORM,
182                                          DXGI_FORMAT_B8G8R8A8_UNORM,
183                                          DXGI_FORMAT_B8G8R8A8_UNORM,
184                                          DXGI_FORMAT_UNKNOWN,
185                                          DXGI_FORMAT_B8G8R8A8_UNORM,
186                                          DXGI_FORMAT_UNKNOWN,
187                                          DXGI_FORMAT_B8G8R8A8_UNORM,
188                                          DXGI_FORMAT_UNKNOWN,
189                                          DXGI_FORMAT_UNKNOWN,
190                                          DXGI_FORMAT_B8G8R8A8_TYPELESS,
191                                          GL_BGRA8_EXT,
192                                          nullptr);
193             return info;
194         }
195         case GL_BGRA8_EXT:
196         {
197             static constexpr Format info(GL_BGRA8_EXT,
198                                          angle::FormatID::B8G8R8A8_UNORM,
199                                          DXGI_FORMAT_B8G8R8A8_UNORM,
200                                          DXGI_FORMAT_B8G8R8A8_UNORM,
201                                          DXGI_FORMAT_UNKNOWN,
202                                          DXGI_FORMAT_B8G8R8A8_UNORM,
203                                          DXGI_FORMAT_UNKNOWN,
204                                          DXGI_FORMAT_B8G8R8A8_UNORM,
205                                          DXGI_FORMAT_UNKNOWN,
206                                          DXGI_FORMAT_UNKNOWN,
207                                          DXGI_FORMAT_B8G8R8A8_TYPELESS,
208                                          GL_BGRA8_EXT,
209                                          nullptr);
210             return info;
211         }
212         case GL_BGRA8_SRGB_ANGLEX:
213         {
214             static constexpr Format info(GL_BGRA8_SRGB_ANGLEX,
215                                          angle::FormatID::B8G8R8A8_UNORM_SRGB,
216                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
217                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
218                                          DXGI_FORMAT_UNKNOWN,
219                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
220                                          DXGI_FORMAT_UNKNOWN,
221                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
222                                          DXGI_FORMAT_UNKNOWN,
223                                          DXGI_FORMAT_B8G8R8A8_UNORM,
224                                          DXGI_FORMAT_B8G8R8A8_TYPELESS,
225                                          GL_BGRA8_SRGB_ANGLEX,
226                                          nullptr);
227             return info;
228         }
229         case GL_BGRX8_ANGLEX:
230         {
231             if (OnlyFL11_1Plus(deviceCaps))
232             {
233                 static constexpr Format info(GL_BGRX8_ANGLEX,
234                                              angle::FormatID::B8G8R8X8_UNORM,
235                                              DXGI_FORMAT_B8G8R8X8_UNORM,
236                                              DXGI_FORMAT_B8G8R8X8_UNORM,
237                                              DXGI_FORMAT_UNKNOWN,
238                                              DXGI_FORMAT_B8G8R8X8_UNORM,
239                                              DXGI_FORMAT_UNKNOWN,
240                                              DXGI_FORMAT_B8G8R8X8_UNORM,
241                                              DXGI_FORMAT_UNKNOWN,
242                                              DXGI_FORMAT_UNKNOWN,
243                                              DXGI_FORMAT_B8G8R8X8_TYPELESS,
244                                              GL_BGRX8_ANGLEX,
245                                              nullptr);
246                 return info;
247             }
248             else
249             {
250                 static constexpr Format info(GL_BGRX8_ANGLEX,
251                                              angle::FormatID::R8G8B8A8_UNORM,
252                                              DXGI_FORMAT_R8G8B8A8_UNORM,
253                                              DXGI_FORMAT_R8G8B8A8_UNORM,
254                                              DXGI_FORMAT_R8G8B8A8_UNORM,
255                                              DXGI_FORMAT_R8G8B8A8_UNORM,
256                                              DXGI_FORMAT_UNKNOWN,
257                                              DXGI_FORMAT_R8G8B8A8_UNORM,
258                                              DXGI_FORMAT_UNKNOWN,
259                                              DXGI_FORMAT_UNKNOWN,
260                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
261                                              GL_RGBA8,
262                                              nullptr);
263                 return info;
264             }
265         }
266         case GL_BGRX8_SRGB_ANGLEX:
267         {
268             if (OnlyFL11_1Plus(deviceCaps))
269             {
270                 static constexpr Format info(GL_BGRX8_SRGB_ANGLEX,
271                                              angle::FormatID::B8G8R8X8_UNORM_SRGB,
272                                              DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
273                                              DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
274                                              DXGI_FORMAT_UNKNOWN,
275                                              DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
276                                              DXGI_FORMAT_UNKNOWN,
277                                              DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
278                                              DXGI_FORMAT_UNKNOWN,
279                                              DXGI_FORMAT_B8G8R8X8_UNORM,
280                                              DXGI_FORMAT_B8G8R8X8_TYPELESS,
281                                              GL_BGRX8_SRGB_ANGLEX,
282                                              nullptr);
283                 return info;
284             }
285             else
286             {
287                 static constexpr Format info(GL_BGRX8_SRGB_ANGLEX,
288                                              angle::FormatID::R8G8B8A8_UNORM,
289                                              DXGI_FORMAT_R8G8B8A8_UNORM,
290                                              DXGI_FORMAT_R8G8B8A8_UNORM,
291                                              DXGI_FORMAT_R8G8B8A8_UNORM,
292                                              DXGI_FORMAT_R8G8B8A8_UNORM,
293                                              DXGI_FORMAT_UNKNOWN,
294                                              DXGI_FORMAT_R8G8B8A8_UNORM,
295                                              DXGI_FORMAT_UNKNOWN,
296                                              DXGI_FORMAT_UNKNOWN,
297                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
298                                              GL_RGBA8,
299                                              nullptr);
300                 return info;
301             }
302         }
303         case GL_COMPRESSED_R11_EAC:
304         {
305             static constexpr Format info(GL_COMPRESSED_R11_EAC,
306                                          angle::FormatID::R16_UNORM,
307                                          DXGI_FORMAT_R16_UNORM,
308                                          DXGI_FORMAT_R16_UNORM,
309                                          DXGI_FORMAT_UNKNOWN,
310                                          DXGI_FORMAT_R16_UNORM,
311                                          DXGI_FORMAT_UNKNOWN,
312                                          DXGI_FORMAT_R16_UNORM,
313                                          DXGI_FORMAT_UNKNOWN,
314                                          DXGI_FORMAT_UNKNOWN,
315                                          DXGI_FORMAT_R16_TYPELESS,
316                                          GL_RGBA16_EXT,
317                                          nullptr);
318             return info;
319         }
320         case GL_COMPRESSED_RED_GREEN_RGTC2_EXT:
321         {
322             static constexpr Format info(GL_COMPRESSED_RED_GREEN_RGTC2_EXT,
323                                          angle::FormatID::BC5_RG_UNORM_BLOCK,
324                                          DXGI_FORMAT_BC5_UNORM,
325                                          DXGI_FORMAT_BC5_UNORM,
326                                          DXGI_FORMAT_UNKNOWN,
327                                          DXGI_FORMAT_UNKNOWN,
328                                          DXGI_FORMAT_UNKNOWN,
329                                          DXGI_FORMAT_BC5_UNORM,
330                                          DXGI_FORMAT_UNKNOWN,
331                                          DXGI_FORMAT_UNKNOWN,
332                                          DXGI_FORMAT_UNKNOWN,
333                                          GL_RGBA8,
334                                          nullptr);
335             return info;
336         }
337         case GL_COMPRESSED_RED_RGTC1_EXT:
338         {
339             static constexpr Format info(GL_COMPRESSED_RED_RGTC1_EXT,
340                                          angle::FormatID::BC4_RED_UNORM_BLOCK,
341                                          DXGI_FORMAT_BC4_UNORM,
342                                          DXGI_FORMAT_BC4_UNORM,
343                                          DXGI_FORMAT_UNKNOWN,
344                                          DXGI_FORMAT_UNKNOWN,
345                                          DXGI_FORMAT_UNKNOWN,
346                                          DXGI_FORMAT_BC4_UNORM,
347                                          DXGI_FORMAT_UNKNOWN,
348                                          DXGI_FORMAT_UNKNOWN,
349                                          DXGI_FORMAT_UNKNOWN,
350                                          GL_RGBA8,
351                                          nullptr);
352             return info;
353         }
354         case GL_COMPRESSED_RG11_EAC:
355         {
356             static constexpr Format info(GL_COMPRESSED_RG11_EAC,
357                                          angle::FormatID::R16G16_UNORM,
358                                          DXGI_FORMAT_R16G16_UNORM,
359                                          DXGI_FORMAT_R16G16_UNORM,
360                                          DXGI_FORMAT_UNKNOWN,
361                                          DXGI_FORMAT_R16G16_UNORM,
362                                          DXGI_FORMAT_UNKNOWN,
363                                          DXGI_FORMAT_R16G16_UNORM,
364                                          DXGI_FORMAT_UNKNOWN,
365                                          DXGI_FORMAT_UNKNOWN,
366                                          DXGI_FORMAT_R16G16_TYPELESS,
367                                          GL_RGBA16_EXT,
368                                          nullptr);
369             return info;
370         }
371         case GL_COMPRESSED_RGB8_ETC2:
372         {
373             static constexpr Format info(GL_COMPRESSED_RGB8_ETC2,
374                                          angle::FormatID::R8G8B8A8_UNORM,
375                                          DXGI_FORMAT_R8G8B8A8_UNORM,
376                                          DXGI_FORMAT_R8G8B8A8_UNORM,
377                                          DXGI_FORMAT_R8G8B8A8_UNORM,
378                                          DXGI_FORMAT_R8G8B8A8_UNORM,
379                                          DXGI_FORMAT_UNKNOWN,
380                                          DXGI_FORMAT_R8G8B8A8_UNORM,
381                                          DXGI_FORMAT_UNKNOWN,
382                                          DXGI_FORMAT_UNKNOWN,
383                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
384                                          GL_RGBA8,
385                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
386             return info;
387         }
388         case GL_COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE:
389         {
390             static constexpr Format info(GL_COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE,
391                                          angle::FormatID::BC1_RGB_UNORM_BLOCK,
392                                          DXGI_FORMAT_BC1_UNORM,
393                                          DXGI_FORMAT_BC1_UNORM,
394                                          DXGI_FORMAT_UNKNOWN,
395                                          DXGI_FORMAT_UNKNOWN,
396                                          DXGI_FORMAT_UNKNOWN,
397                                          DXGI_FORMAT_BC1_UNORM,
398                                          DXGI_FORMAT_UNKNOWN,
399                                          DXGI_FORMAT_UNKNOWN,
400                                          DXGI_FORMAT_UNKNOWN,
401                                          GL_RGBA8,
402                                          nullptr);
403             return info;
404         }
405         case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
406         {
407             static constexpr Format info(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
408                                          angle::FormatID::R8G8B8A8_UNORM,
409                                          DXGI_FORMAT_R8G8B8A8_UNORM,
410                                          DXGI_FORMAT_R8G8B8A8_UNORM,
411                                          DXGI_FORMAT_R8G8B8A8_UNORM,
412                                          DXGI_FORMAT_R8G8B8A8_UNORM,
413                                          DXGI_FORMAT_UNKNOWN,
414                                          DXGI_FORMAT_R8G8B8A8_UNORM,
415                                          DXGI_FORMAT_UNKNOWN,
416                                          DXGI_FORMAT_UNKNOWN,
417                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
418                                          GL_RGBA8,
419                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
420             return info;
421         }
422         case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
423         {
424             static constexpr Format info(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE,
425                                          angle::FormatID::BC1_RGBA_UNORM_BLOCK,
426                                          DXGI_FORMAT_BC1_UNORM,
427                                          DXGI_FORMAT_BC1_UNORM,
428                                          DXGI_FORMAT_UNKNOWN,
429                                          DXGI_FORMAT_UNKNOWN,
430                                          DXGI_FORMAT_UNKNOWN,
431                                          DXGI_FORMAT_BC1_UNORM,
432                                          DXGI_FORMAT_UNKNOWN,
433                                          DXGI_FORMAT_UNKNOWN,
434                                          DXGI_FORMAT_UNKNOWN,
435                                          GL_RGBA8,
436                                          nullptr);
437             return info;
438         }
439         case GL_COMPRESSED_RGBA8_ETC2_EAC:
440         {
441             static constexpr Format info(GL_COMPRESSED_RGBA8_ETC2_EAC,
442                                          angle::FormatID::R8G8B8A8_UNORM,
443                                          DXGI_FORMAT_R8G8B8A8_UNORM,
444                                          DXGI_FORMAT_R8G8B8A8_UNORM,
445                                          DXGI_FORMAT_R8G8B8A8_UNORM,
446                                          DXGI_FORMAT_R8G8B8A8_UNORM,
447                                          DXGI_FORMAT_UNKNOWN,
448                                          DXGI_FORMAT_R8G8B8A8_UNORM,
449                                          DXGI_FORMAT_UNKNOWN,
450                                          DXGI_FORMAT_UNKNOWN,
451                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
452                                          GL_RGBA8,
453                                          nullptr);
454             return info;
455         }
456         case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
457         {
458             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x10_KHR,
459                                          angle::FormatID::NONE,
460                                          DXGI_FORMAT_UNKNOWN,
461                                          DXGI_FORMAT_UNKNOWN,
462                                          DXGI_FORMAT_UNKNOWN,
463                                          DXGI_FORMAT_UNKNOWN,
464                                          DXGI_FORMAT_UNKNOWN,
465                                          DXGI_FORMAT_UNKNOWN,
466                                          DXGI_FORMAT_UNKNOWN,
467                                          DXGI_FORMAT_UNKNOWN,
468                                          DXGI_FORMAT_UNKNOWN,
469                                          GL_NONE,
470                                          nullptr);
471             return info;
472         }
473         case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
474         {
475             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x5_KHR,
476                                          angle::FormatID::NONE,
477                                          DXGI_FORMAT_UNKNOWN,
478                                          DXGI_FORMAT_UNKNOWN,
479                                          DXGI_FORMAT_UNKNOWN,
480                                          DXGI_FORMAT_UNKNOWN,
481                                          DXGI_FORMAT_UNKNOWN,
482                                          DXGI_FORMAT_UNKNOWN,
483                                          DXGI_FORMAT_UNKNOWN,
484                                          DXGI_FORMAT_UNKNOWN,
485                                          DXGI_FORMAT_UNKNOWN,
486                                          GL_NONE,
487                                          nullptr);
488             return info;
489         }
490         case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
491         {
492             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x6_KHR,
493                                          angle::FormatID::NONE,
494                                          DXGI_FORMAT_UNKNOWN,
495                                          DXGI_FORMAT_UNKNOWN,
496                                          DXGI_FORMAT_UNKNOWN,
497                                          DXGI_FORMAT_UNKNOWN,
498                                          DXGI_FORMAT_UNKNOWN,
499                                          DXGI_FORMAT_UNKNOWN,
500                                          DXGI_FORMAT_UNKNOWN,
501                                          DXGI_FORMAT_UNKNOWN,
502                                          DXGI_FORMAT_UNKNOWN,
503                                          GL_NONE,
504                                          nullptr);
505             return info;
506         }
507         case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
508         {
509             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x8_KHR,
510                                          angle::FormatID::NONE,
511                                          DXGI_FORMAT_UNKNOWN,
512                                          DXGI_FORMAT_UNKNOWN,
513                                          DXGI_FORMAT_UNKNOWN,
514                                          DXGI_FORMAT_UNKNOWN,
515                                          DXGI_FORMAT_UNKNOWN,
516                                          DXGI_FORMAT_UNKNOWN,
517                                          DXGI_FORMAT_UNKNOWN,
518                                          DXGI_FORMAT_UNKNOWN,
519                                          DXGI_FORMAT_UNKNOWN,
520                                          GL_NONE,
521                                          nullptr);
522             return info;
523         }
524         case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
525         {
526             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x10_KHR,
527                                          angle::FormatID::NONE,
528                                          DXGI_FORMAT_UNKNOWN,
529                                          DXGI_FORMAT_UNKNOWN,
530                                          DXGI_FORMAT_UNKNOWN,
531                                          DXGI_FORMAT_UNKNOWN,
532                                          DXGI_FORMAT_UNKNOWN,
533                                          DXGI_FORMAT_UNKNOWN,
534                                          DXGI_FORMAT_UNKNOWN,
535                                          DXGI_FORMAT_UNKNOWN,
536                                          DXGI_FORMAT_UNKNOWN,
537                                          GL_NONE,
538                                          nullptr);
539             return info;
540         }
541         case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
542         {
543             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x12_KHR,
544                                          angle::FormatID::NONE,
545                                          DXGI_FORMAT_UNKNOWN,
546                                          DXGI_FORMAT_UNKNOWN,
547                                          DXGI_FORMAT_UNKNOWN,
548                                          DXGI_FORMAT_UNKNOWN,
549                                          DXGI_FORMAT_UNKNOWN,
550                                          DXGI_FORMAT_UNKNOWN,
551                                          DXGI_FORMAT_UNKNOWN,
552                                          DXGI_FORMAT_UNKNOWN,
553                                          DXGI_FORMAT_UNKNOWN,
554                                          GL_NONE,
555                                          nullptr);
556             return info;
557         }
558         case GL_COMPRESSED_RGBA_ASTC_3x3x3_OES:
559         {
560             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_3x3x3_OES,
561                                          angle::FormatID::NONE,
562                                          DXGI_FORMAT_UNKNOWN,
563                                          DXGI_FORMAT_UNKNOWN,
564                                          DXGI_FORMAT_UNKNOWN,
565                                          DXGI_FORMAT_UNKNOWN,
566                                          DXGI_FORMAT_UNKNOWN,
567                                          DXGI_FORMAT_UNKNOWN,
568                                          DXGI_FORMAT_UNKNOWN,
569                                          DXGI_FORMAT_UNKNOWN,
570                                          DXGI_FORMAT_UNKNOWN,
571                                          GL_NONE,
572                                          nullptr);
573             return info;
574         }
575         case GL_COMPRESSED_RGBA_ASTC_4x3x3_OES:
576         {
577             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x3x3_OES,
578                                          angle::FormatID::NONE,
579                                          DXGI_FORMAT_UNKNOWN,
580                                          DXGI_FORMAT_UNKNOWN,
581                                          DXGI_FORMAT_UNKNOWN,
582                                          DXGI_FORMAT_UNKNOWN,
583                                          DXGI_FORMAT_UNKNOWN,
584                                          DXGI_FORMAT_UNKNOWN,
585                                          DXGI_FORMAT_UNKNOWN,
586                                          DXGI_FORMAT_UNKNOWN,
587                                          DXGI_FORMAT_UNKNOWN,
588                                          GL_NONE,
589                                          nullptr);
590             return info;
591         }
592         case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
593         {
594             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
595                                          angle::FormatID::NONE,
596                                          DXGI_FORMAT_UNKNOWN,
597                                          DXGI_FORMAT_UNKNOWN,
598                                          DXGI_FORMAT_UNKNOWN,
599                                          DXGI_FORMAT_UNKNOWN,
600                                          DXGI_FORMAT_UNKNOWN,
601                                          DXGI_FORMAT_UNKNOWN,
602                                          DXGI_FORMAT_UNKNOWN,
603                                          DXGI_FORMAT_UNKNOWN,
604                                          DXGI_FORMAT_UNKNOWN,
605                                          GL_NONE,
606                                          nullptr);
607             return info;
608         }
609         case GL_COMPRESSED_RGBA_ASTC_4x4x3_OES:
610         {
611             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4x3_OES,
612                                          angle::FormatID::NONE,
613                                          DXGI_FORMAT_UNKNOWN,
614                                          DXGI_FORMAT_UNKNOWN,
615                                          DXGI_FORMAT_UNKNOWN,
616                                          DXGI_FORMAT_UNKNOWN,
617                                          DXGI_FORMAT_UNKNOWN,
618                                          DXGI_FORMAT_UNKNOWN,
619                                          DXGI_FORMAT_UNKNOWN,
620                                          DXGI_FORMAT_UNKNOWN,
621                                          DXGI_FORMAT_UNKNOWN,
622                                          GL_NONE,
623                                          nullptr);
624             return info;
625         }
626         case GL_COMPRESSED_RGBA_ASTC_4x4x4_OES:
627         {
628             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4x4_OES,
629                                          angle::FormatID::NONE,
630                                          DXGI_FORMAT_UNKNOWN,
631                                          DXGI_FORMAT_UNKNOWN,
632                                          DXGI_FORMAT_UNKNOWN,
633                                          DXGI_FORMAT_UNKNOWN,
634                                          DXGI_FORMAT_UNKNOWN,
635                                          DXGI_FORMAT_UNKNOWN,
636                                          DXGI_FORMAT_UNKNOWN,
637                                          DXGI_FORMAT_UNKNOWN,
638                                          DXGI_FORMAT_UNKNOWN,
639                                          GL_NONE,
640                                          nullptr);
641             return info;
642         }
643         case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
644         {
645             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x4_KHR,
646                                          angle::FormatID::NONE,
647                                          DXGI_FORMAT_UNKNOWN,
648                                          DXGI_FORMAT_UNKNOWN,
649                                          DXGI_FORMAT_UNKNOWN,
650                                          DXGI_FORMAT_UNKNOWN,
651                                          DXGI_FORMAT_UNKNOWN,
652                                          DXGI_FORMAT_UNKNOWN,
653                                          DXGI_FORMAT_UNKNOWN,
654                                          DXGI_FORMAT_UNKNOWN,
655                                          DXGI_FORMAT_UNKNOWN,
656                                          GL_NONE,
657                                          nullptr);
658             return info;
659         }
660         case GL_COMPRESSED_RGBA_ASTC_5x4x4_OES:
661         {
662             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x4x4_OES,
663                                          angle::FormatID::NONE,
664                                          DXGI_FORMAT_UNKNOWN,
665                                          DXGI_FORMAT_UNKNOWN,
666                                          DXGI_FORMAT_UNKNOWN,
667                                          DXGI_FORMAT_UNKNOWN,
668                                          DXGI_FORMAT_UNKNOWN,
669                                          DXGI_FORMAT_UNKNOWN,
670                                          DXGI_FORMAT_UNKNOWN,
671                                          DXGI_FORMAT_UNKNOWN,
672                                          DXGI_FORMAT_UNKNOWN,
673                                          GL_NONE,
674                                          nullptr);
675             return info;
676         }
677         case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
678         {
679             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5_KHR,
680                                          angle::FormatID::NONE,
681                                          DXGI_FORMAT_UNKNOWN,
682                                          DXGI_FORMAT_UNKNOWN,
683                                          DXGI_FORMAT_UNKNOWN,
684                                          DXGI_FORMAT_UNKNOWN,
685                                          DXGI_FORMAT_UNKNOWN,
686                                          DXGI_FORMAT_UNKNOWN,
687                                          DXGI_FORMAT_UNKNOWN,
688                                          DXGI_FORMAT_UNKNOWN,
689                                          DXGI_FORMAT_UNKNOWN,
690                                          GL_NONE,
691                                          nullptr);
692             return info;
693         }
694         case GL_COMPRESSED_RGBA_ASTC_5x5x4_OES:
695         {
696             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5x4_OES,
697                                          angle::FormatID::NONE,
698                                          DXGI_FORMAT_UNKNOWN,
699                                          DXGI_FORMAT_UNKNOWN,
700                                          DXGI_FORMAT_UNKNOWN,
701                                          DXGI_FORMAT_UNKNOWN,
702                                          DXGI_FORMAT_UNKNOWN,
703                                          DXGI_FORMAT_UNKNOWN,
704                                          DXGI_FORMAT_UNKNOWN,
705                                          DXGI_FORMAT_UNKNOWN,
706                                          DXGI_FORMAT_UNKNOWN,
707                                          GL_NONE,
708                                          nullptr);
709             return info;
710         }
711         case GL_COMPRESSED_RGBA_ASTC_5x5x5_OES:
712         {
713             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5x5_OES,
714                                          angle::FormatID::NONE,
715                                          DXGI_FORMAT_UNKNOWN,
716                                          DXGI_FORMAT_UNKNOWN,
717                                          DXGI_FORMAT_UNKNOWN,
718                                          DXGI_FORMAT_UNKNOWN,
719                                          DXGI_FORMAT_UNKNOWN,
720                                          DXGI_FORMAT_UNKNOWN,
721                                          DXGI_FORMAT_UNKNOWN,
722                                          DXGI_FORMAT_UNKNOWN,
723                                          DXGI_FORMAT_UNKNOWN,
724                                          GL_NONE,
725                                          nullptr);
726             return info;
727         }
728         case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
729         {
730             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x5_KHR,
731                                          angle::FormatID::NONE,
732                                          DXGI_FORMAT_UNKNOWN,
733                                          DXGI_FORMAT_UNKNOWN,
734                                          DXGI_FORMAT_UNKNOWN,
735                                          DXGI_FORMAT_UNKNOWN,
736                                          DXGI_FORMAT_UNKNOWN,
737                                          DXGI_FORMAT_UNKNOWN,
738                                          DXGI_FORMAT_UNKNOWN,
739                                          DXGI_FORMAT_UNKNOWN,
740                                          DXGI_FORMAT_UNKNOWN,
741                                          GL_NONE,
742                                          nullptr);
743             return info;
744         }
745         case GL_COMPRESSED_RGBA_ASTC_6x5x5_OES:
746         {
747             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x5x5_OES,
748                                          angle::FormatID::NONE,
749                                          DXGI_FORMAT_UNKNOWN,
750                                          DXGI_FORMAT_UNKNOWN,
751                                          DXGI_FORMAT_UNKNOWN,
752                                          DXGI_FORMAT_UNKNOWN,
753                                          DXGI_FORMAT_UNKNOWN,
754                                          DXGI_FORMAT_UNKNOWN,
755                                          DXGI_FORMAT_UNKNOWN,
756                                          DXGI_FORMAT_UNKNOWN,
757                                          DXGI_FORMAT_UNKNOWN,
758                                          GL_NONE,
759                                          nullptr);
760             return info;
761         }
762         case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
763         {
764             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6_KHR,
765                                          angle::FormatID::NONE,
766                                          DXGI_FORMAT_UNKNOWN,
767                                          DXGI_FORMAT_UNKNOWN,
768                                          DXGI_FORMAT_UNKNOWN,
769                                          DXGI_FORMAT_UNKNOWN,
770                                          DXGI_FORMAT_UNKNOWN,
771                                          DXGI_FORMAT_UNKNOWN,
772                                          DXGI_FORMAT_UNKNOWN,
773                                          DXGI_FORMAT_UNKNOWN,
774                                          DXGI_FORMAT_UNKNOWN,
775                                          GL_NONE,
776                                          nullptr);
777             return info;
778         }
779         case GL_COMPRESSED_RGBA_ASTC_6x6x5_OES:
780         {
781             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6x5_OES,
782                                          angle::FormatID::NONE,
783                                          DXGI_FORMAT_UNKNOWN,
784                                          DXGI_FORMAT_UNKNOWN,
785                                          DXGI_FORMAT_UNKNOWN,
786                                          DXGI_FORMAT_UNKNOWN,
787                                          DXGI_FORMAT_UNKNOWN,
788                                          DXGI_FORMAT_UNKNOWN,
789                                          DXGI_FORMAT_UNKNOWN,
790                                          DXGI_FORMAT_UNKNOWN,
791                                          DXGI_FORMAT_UNKNOWN,
792                                          GL_NONE,
793                                          nullptr);
794             return info;
795         }
796         case GL_COMPRESSED_RGBA_ASTC_6x6x6_OES:
797         {
798             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6x6_OES,
799                                          angle::FormatID::NONE,
800                                          DXGI_FORMAT_UNKNOWN,
801                                          DXGI_FORMAT_UNKNOWN,
802                                          DXGI_FORMAT_UNKNOWN,
803                                          DXGI_FORMAT_UNKNOWN,
804                                          DXGI_FORMAT_UNKNOWN,
805                                          DXGI_FORMAT_UNKNOWN,
806                                          DXGI_FORMAT_UNKNOWN,
807                                          DXGI_FORMAT_UNKNOWN,
808                                          DXGI_FORMAT_UNKNOWN,
809                                          GL_NONE,
810                                          nullptr);
811             return info;
812         }
813         case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
814         {
815             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x5_KHR,
816                                          angle::FormatID::NONE,
817                                          DXGI_FORMAT_UNKNOWN,
818                                          DXGI_FORMAT_UNKNOWN,
819                                          DXGI_FORMAT_UNKNOWN,
820                                          DXGI_FORMAT_UNKNOWN,
821                                          DXGI_FORMAT_UNKNOWN,
822                                          DXGI_FORMAT_UNKNOWN,
823                                          DXGI_FORMAT_UNKNOWN,
824                                          DXGI_FORMAT_UNKNOWN,
825                                          DXGI_FORMAT_UNKNOWN,
826                                          GL_NONE,
827                                          nullptr);
828             return info;
829         }
830         case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
831         {
832             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x6_KHR,
833                                          angle::FormatID::NONE,
834                                          DXGI_FORMAT_UNKNOWN,
835                                          DXGI_FORMAT_UNKNOWN,
836                                          DXGI_FORMAT_UNKNOWN,
837                                          DXGI_FORMAT_UNKNOWN,
838                                          DXGI_FORMAT_UNKNOWN,
839                                          DXGI_FORMAT_UNKNOWN,
840                                          DXGI_FORMAT_UNKNOWN,
841                                          DXGI_FORMAT_UNKNOWN,
842                                          DXGI_FORMAT_UNKNOWN,
843                                          GL_NONE,
844                                          nullptr);
845             return info;
846         }
847         case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
848         {
849             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x8_KHR,
850                                          angle::FormatID::NONE,
851                                          DXGI_FORMAT_UNKNOWN,
852                                          DXGI_FORMAT_UNKNOWN,
853                                          DXGI_FORMAT_UNKNOWN,
854                                          DXGI_FORMAT_UNKNOWN,
855                                          DXGI_FORMAT_UNKNOWN,
856                                          DXGI_FORMAT_UNKNOWN,
857                                          DXGI_FORMAT_UNKNOWN,
858                                          DXGI_FORMAT_UNKNOWN,
859                                          DXGI_FORMAT_UNKNOWN,
860                                          GL_NONE,
861                                          nullptr);
862             return info;
863         }
864         case GL_COMPRESSED_RGBA_BPTC_UNORM_EXT:
865         {
866             static constexpr Format info(GL_COMPRESSED_RGBA_BPTC_UNORM_EXT,
867                                          angle::FormatID::BC7_RGBA_UNORM_BLOCK,
868                                          DXGI_FORMAT_BC7_UNORM,
869                                          DXGI_FORMAT_BC7_UNORM,
870                                          DXGI_FORMAT_UNKNOWN,
871                                          DXGI_FORMAT_UNKNOWN,
872                                          DXGI_FORMAT_UNKNOWN,
873                                          DXGI_FORMAT_BC7_UNORM,
874                                          DXGI_FORMAT_UNKNOWN,
875                                          DXGI_FORMAT_UNKNOWN,
876                                          DXGI_FORMAT_UNKNOWN,
877                                          GL_RGBA8,
878                                          nullptr);
879             return info;
880         }
881         case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:
882         {
883             static constexpr Format info(GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
884                                          angle::FormatID::NONE,
885                                          DXGI_FORMAT_UNKNOWN,
886                                          DXGI_FORMAT_UNKNOWN,
887                                          DXGI_FORMAT_UNKNOWN,
888                                          DXGI_FORMAT_UNKNOWN,
889                                          DXGI_FORMAT_UNKNOWN,
890                                          DXGI_FORMAT_UNKNOWN,
891                                          DXGI_FORMAT_UNKNOWN,
892                                          DXGI_FORMAT_UNKNOWN,
893                                          DXGI_FORMAT_UNKNOWN,
894                                          GL_NONE,
895                                          nullptr);
896             return info;
897         }
898         case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:
899         {
900             static constexpr Format info(GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
901                                          angle::FormatID::NONE,
902                                          DXGI_FORMAT_UNKNOWN,
903                                          DXGI_FORMAT_UNKNOWN,
904                                          DXGI_FORMAT_UNKNOWN,
905                                          DXGI_FORMAT_UNKNOWN,
906                                          DXGI_FORMAT_UNKNOWN,
907                                          DXGI_FORMAT_UNKNOWN,
908                                          DXGI_FORMAT_UNKNOWN,
909                                          DXGI_FORMAT_UNKNOWN,
910                                          DXGI_FORMAT_UNKNOWN,
911                                          GL_NONE,
912                                          nullptr);
913             return info;
914         }
915         case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
916         {
917             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
918                                          angle::FormatID::BC1_RGBA_UNORM_BLOCK,
919                                          DXGI_FORMAT_BC1_UNORM,
920                                          DXGI_FORMAT_BC1_UNORM,
921                                          DXGI_FORMAT_UNKNOWN,
922                                          DXGI_FORMAT_UNKNOWN,
923                                          DXGI_FORMAT_UNKNOWN,
924                                          DXGI_FORMAT_BC1_UNORM,
925                                          DXGI_FORMAT_UNKNOWN,
926                                          DXGI_FORMAT_UNKNOWN,
927                                          DXGI_FORMAT_UNKNOWN,
928                                          GL_RGBA8,
929                                          nullptr);
930             return info;
931         }
932         case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
933         {
934             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE,
935                                          angle::FormatID::BC2_RGBA_UNORM_BLOCK,
936                                          DXGI_FORMAT_BC2_UNORM,
937                                          DXGI_FORMAT_BC2_UNORM,
938                                          DXGI_FORMAT_UNKNOWN,
939                                          DXGI_FORMAT_UNKNOWN,
940                                          DXGI_FORMAT_UNKNOWN,
941                                          DXGI_FORMAT_BC2_UNORM,
942                                          DXGI_FORMAT_UNKNOWN,
943                                          DXGI_FORMAT_UNKNOWN,
944                                          DXGI_FORMAT_UNKNOWN,
945                                          GL_RGBA8,
946                                          nullptr);
947             return info;
948         }
949         case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
950         {
951             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE,
952                                          angle::FormatID::BC3_RGBA_UNORM_BLOCK,
953                                          DXGI_FORMAT_BC3_UNORM,
954                                          DXGI_FORMAT_BC3_UNORM,
955                                          DXGI_FORMAT_UNKNOWN,
956                                          DXGI_FORMAT_UNKNOWN,
957                                          DXGI_FORMAT_UNKNOWN,
958                                          DXGI_FORMAT_BC3_UNORM,
959                                          DXGI_FORMAT_UNKNOWN,
960                                          DXGI_FORMAT_UNKNOWN,
961                                          DXGI_FORMAT_UNKNOWN,
962                                          GL_RGBA8,
963                                          nullptr);
964             return info;
965         }
966         case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT:
967         {
968             static constexpr Format info(GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,
969                                          angle::FormatID::BC6H_RGB_SFLOAT_BLOCK,
970                                          DXGI_FORMAT_BC6H_SF16,
971                                          DXGI_FORMAT_BC6H_SF16,
972                                          DXGI_FORMAT_UNKNOWN,
973                                          DXGI_FORMAT_UNKNOWN,
974                                          DXGI_FORMAT_UNKNOWN,
975                                          DXGI_FORMAT_BC6H_SF16,
976                                          DXGI_FORMAT_UNKNOWN,
977                                          DXGI_FORMAT_UNKNOWN,
978                                          DXGI_FORMAT_UNKNOWN,
979                                          GL_RGBA32F,
980                                          nullptr);
981             return info;
982         }
983         case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT:
984         {
985             static constexpr Format info(GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,
986                                          angle::FormatID::BC6H_RGB_UFLOAT_BLOCK,
987                                          DXGI_FORMAT_BC6H_UF16,
988                                          DXGI_FORMAT_BC6H_UF16,
989                                          DXGI_FORMAT_UNKNOWN,
990                                          DXGI_FORMAT_UNKNOWN,
991                                          DXGI_FORMAT_UNKNOWN,
992                                          DXGI_FORMAT_BC6H_UF16,
993                                          DXGI_FORMAT_UNKNOWN,
994                                          DXGI_FORMAT_UNKNOWN,
995                                          DXGI_FORMAT_UNKNOWN,
996                                          GL_RGBA32F,
997                                          nullptr);
998             return info;
999         }
1000         case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG:
1001         {
1002             static constexpr Format info(GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG,
1003                                          angle::FormatID::NONE,
1004                                          DXGI_FORMAT_UNKNOWN,
1005                                          DXGI_FORMAT_UNKNOWN,
1006                                          DXGI_FORMAT_UNKNOWN,
1007                                          DXGI_FORMAT_UNKNOWN,
1008                                          DXGI_FORMAT_UNKNOWN,
1009                                          DXGI_FORMAT_UNKNOWN,
1010                                          DXGI_FORMAT_UNKNOWN,
1011                                          DXGI_FORMAT_UNKNOWN,
1012                                          DXGI_FORMAT_UNKNOWN,
1013                                          GL_NONE,
1014                                          nullptr);
1015             return info;
1016         }
1017         case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG:
1018         {
1019             static constexpr Format info(GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
1020                                          angle::FormatID::NONE,
1021                                          DXGI_FORMAT_UNKNOWN,
1022                                          DXGI_FORMAT_UNKNOWN,
1023                                          DXGI_FORMAT_UNKNOWN,
1024                                          DXGI_FORMAT_UNKNOWN,
1025                                          DXGI_FORMAT_UNKNOWN,
1026                                          DXGI_FORMAT_UNKNOWN,
1027                                          DXGI_FORMAT_UNKNOWN,
1028                                          DXGI_FORMAT_UNKNOWN,
1029                                          DXGI_FORMAT_UNKNOWN,
1030                                          GL_NONE,
1031                                          nullptr);
1032             return info;
1033         }
1034         case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
1035         {
1036             static constexpr Format info(GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
1037                                          angle::FormatID::BC1_RGB_UNORM_BLOCK,
1038                                          DXGI_FORMAT_BC1_UNORM,
1039                                          DXGI_FORMAT_BC1_UNORM,
1040                                          DXGI_FORMAT_UNKNOWN,
1041                                          DXGI_FORMAT_UNKNOWN,
1042                                          DXGI_FORMAT_UNKNOWN,
1043                                          DXGI_FORMAT_BC1_UNORM,
1044                                          DXGI_FORMAT_UNKNOWN,
1045                                          DXGI_FORMAT_UNKNOWN,
1046                                          DXGI_FORMAT_UNKNOWN,
1047                                          GL_RGBA8,
1048                                          nullptr);
1049             return info;
1050         }
1051         case GL_COMPRESSED_SIGNED_R11_EAC:
1052         {
1053             static constexpr Format info(GL_COMPRESSED_SIGNED_R11_EAC,
1054                                          angle::FormatID::R16_SNORM,
1055                                          DXGI_FORMAT_R16_SNORM,
1056                                          DXGI_FORMAT_R16_SNORM,
1057                                          DXGI_FORMAT_UNKNOWN,
1058                                          DXGI_FORMAT_R16_SNORM,
1059                                          DXGI_FORMAT_UNKNOWN,
1060                                          DXGI_FORMAT_R16_SNORM,
1061                                          DXGI_FORMAT_UNKNOWN,
1062                                          DXGI_FORMAT_UNKNOWN,
1063                                          DXGI_FORMAT_R16_TYPELESS,
1064                                          GL_RGBA16_SNORM_EXT,
1065                                          nullptr);
1066             return info;
1067         }
1068         case GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:
1069         {
1070             static constexpr Format info(GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,
1071                                          angle::FormatID::BC5_RG_SNORM_BLOCK,
1072                                          DXGI_FORMAT_BC5_SNORM,
1073                                          DXGI_FORMAT_BC5_SNORM,
1074                                          DXGI_FORMAT_UNKNOWN,
1075                                          DXGI_FORMAT_UNKNOWN,
1076                                          DXGI_FORMAT_UNKNOWN,
1077                                          DXGI_FORMAT_BC5_SNORM,
1078                                          DXGI_FORMAT_UNKNOWN,
1079                                          DXGI_FORMAT_UNKNOWN,
1080                                          DXGI_FORMAT_UNKNOWN,
1081                                          GL_RGBA8_SNORM,
1082                                          nullptr);
1083             return info;
1084         }
1085         case GL_COMPRESSED_SIGNED_RED_RGTC1_EXT:
1086         {
1087             static constexpr Format info(GL_COMPRESSED_SIGNED_RED_RGTC1_EXT,
1088                                          angle::FormatID::BC4_RED_SNORM_BLOCK,
1089                                          DXGI_FORMAT_BC4_SNORM,
1090                                          DXGI_FORMAT_BC4_SNORM,
1091                                          DXGI_FORMAT_UNKNOWN,
1092                                          DXGI_FORMAT_UNKNOWN,
1093                                          DXGI_FORMAT_UNKNOWN,
1094                                          DXGI_FORMAT_BC4_SNORM,
1095                                          DXGI_FORMAT_UNKNOWN,
1096                                          DXGI_FORMAT_UNKNOWN,
1097                                          DXGI_FORMAT_UNKNOWN,
1098                                          GL_RGBA8_SNORM,
1099                                          nullptr);
1100             return info;
1101         }
1102         case GL_COMPRESSED_SIGNED_RG11_EAC:
1103         {
1104             static constexpr Format info(GL_COMPRESSED_SIGNED_RG11_EAC,
1105                                          angle::FormatID::R16G16_SNORM,
1106                                          DXGI_FORMAT_R16G16_SNORM,
1107                                          DXGI_FORMAT_R16G16_SNORM,
1108                                          DXGI_FORMAT_UNKNOWN,
1109                                          DXGI_FORMAT_R16G16_SNORM,
1110                                          DXGI_FORMAT_UNKNOWN,
1111                                          DXGI_FORMAT_R16G16_SNORM,
1112                                          DXGI_FORMAT_UNKNOWN,
1113                                          DXGI_FORMAT_UNKNOWN,
1114                                          DXGI_FORMAT_R16G16_TYPELESS,
1115                                          GL_RGBA16_SNORM_EXT,
1116                                          nullptr);
1117             return info;
1118         }
1119         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
1120         {
1121             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
1122                                          angle::FormatID::NONE,
1123                                          DXGI_FORMAT_UNKNOWN,
1124                                          DXGI_FORMAT_UNKNOWN,
1125                                          DXGI_FORMAT_UNKNOWN,
1126                                          DXGI_FORMAT_UNKNOWN,
1127                                          DXGI_FORMAT_UNKNOWN,
1128                                          DXGI_FORMAT_UNKNOWN,
1129                                          DXGI_FORMAT_UNKNOWN,
1130                                          DXGI_FORMAT_UNKNOWN,
1131                                          DXGI_FORMAT_UNKNOWN,
1132                                          GL_NONE,
1133                                          nullptr);
1134             return info;
1135         }
1136         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
1137         {
1138             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
1139                                          angle::FormatID::NONE,
1140                                          DXGI_FORMAT_UNKNOWN,
1141                                          DXGI_FORMAT_UNKNOWN,
1142                                          DXGI_FORMAT_UNKNOWN,
1143                                          DXGI_FORMAT_UNKNOWN,
1144                                          DXGI_FORMAT_UNKNOWN,
1145                                          DXGI_FORMAT_UNKNOWN,
1146                                          DXGI_FORMAT_UNKNOWN,
1147                                          DXGI_FORMAT_UNKNOWN,
1148                                          DXGI_FORMAT_UNKNOWN,
1149                                          GL_NONE,
1150                                          nullptr);
1151             return info;
1152         }
1153         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
1154         {
1155             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
1156                                          angle::FormatID::NONE,
1157                                          DXGI_FORMAT_UNKNOWN,
1158                                          DXGI_FORMAT_UNKNOWN,
1159                                          DXGI_FORMAT_UNKNOWN,
1160                                          DXGI_FORMAT_UNKNOWN,
1161                                          DXGI_FORMAT_UNKNOWN,
1162                                          DXGI_FORMAT_UNKNOWN,
1163                                          DXGI_FORMAT_UNKNOWN,
1164                                          DXGI_FORMAT_UNKNOWN,
1165                                          DXGI_FORMAT_UNKNOWN,
1166                                          GL_NONE,
1167                                          nullptr);
1168             return info;
1169         }
1170         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
1171         {
1172             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
1173                                          angle::FormatID::NONE,
1174                                          DXGI_FORMAT_UNKNOWN,
1175                                          DXGI_FORMAT_UNKNOWN,
1176                                          DXGI_FORMAT_UNKNOWN,
1177                                          DXGI_FORMAT_UNKNOWN,
1178                                          DXGI_FORMAT_UNKNOWN,
1179                                          DXGI_FORMAT_UNKNOWN,
1180                                          DXGI_FORMAT_UNKNOWN,
1181                                          DXGI_FORMAT_UNKNOWN,
1182                                          DXGI_FORMAT_UNKNOWN,
1183                                          GL_NONE,
1184                                          nullptr);
1185             return info;
1186         }
1187         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
1188         {
1189             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
1190                                          angle::FormatID::NONE,
1191                                          DXGI_FORMAT_UNKNOWN,
1192                                          DXGI_FORMAT_UNKNOWN,
1193                                          DXGI_FORMAT_UNKNOWN,
1194                                          DXGI_FORMAT_UNKNOWN,
1195                                          DXGI_FORMAT_UNKNOWN,
1196                                          DXGI_FORMAT_UNKNOWN,
1197                                          DXGI_FORMAT_UNKNOWN,
1198                                          DXGI_FORMAT_UNKNOWN,
1199                                          DXGI_FORMAT_UNKNOWN,
1200                                          GL_NONE,
1201                                          nullptr);
1202             return info;
1203         }
1204         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
1205         {
1206             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
1207                                          angle::FormatID::NONE,
1208                                          DXGI_FORMAT_UNKNOWN,
1209                                          DXGI_FORMAT_UNKNOWN,
1210                                          DXGI_FORMAT_UNKNOWN,
1211                                          DXGI_FORMAT_UNKNOWN,
1212                                          DXGI_FORMAT_UNKNOWN,
1213                                          DXGI_FORMAT_UNKNOWN,
1214                                          DXGI_FORMAT_UNKNOWN,
1215                                          DXGI_FORMAT_UNKNOWN,
1216                                          DXGI_FORMAT_UNKNOWN,
1217                                          GL_NONE,
1218                                          nullptr);
1219             return info;
1220         }
1221         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES:
1222         {
1223             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES,
1224                                          angle::FormatID::NONE,
1225                                          DXGI_FORMAT_UNKNOWN,
1226                                          DXGI_FORMAT_UNKNOWN,
1227                                          DXGI_FORMAT_UNKNOWN,
1228                                          DXGI_FORMAT_UNKNOWN,
1229                                          DXGI_FORMAT_UNKNOWN,
1230                                          DXGI_FORMAT_UNKNOWN,
1231                                          DXGI_FORMAT_UNKNOWN,
1232                                          DXGI_FORMAT_UNKNOWN,
1233                                          DXGI_FORMAT_UNKNOWN,
1234                                          GL_NONE,
1235                                          nullptr);
1236             return info;
1237         }
1238         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES:
1239         {
1240             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES,
1241                                          angle::FormatID::NONE,
1242                                          DXGI_FORMAT_UNKNOWN,
1243                                          DXGI_FORMAT_UNKNOWN,
1244                                          DXGI_FORMAT_UNKNOWN,
1245                                          DXGI_FORMAT_UNKNOWN,
1246                                          DXGI_FORMAT_UNKNOWN,
1247                                          DXGI_FORMAT_UNKNOWN,
1248                                          DXGI_FORMAT_UNKNOWN,
1249                                          DXGI_FORMAT_UNKNOWN,
1250                                          DXGI_FORMAT_UNKNOWN,
1251                                          GL_NONE,
1252                                          nullptr);
1253             return info;
1254         }
1255         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
1256         {
1257             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
1258                                          angle::FormatID::NONE,
1259                                          DXGI_FORMAT_UNKNOWN,
1260                                          DXGI_FORMAT_UNKNOWN,
1261                                          DXGI_FORMAT_UNKNOWN,
1262                                          DXGI_FORMAT_UNKNOWN,
1263                                          DXGI_FORMAT_UNKNOWN,
1264                                          DXGI_FORMAT_UNKNOWN,
1265                                          DXGI_FORMAT_UNKNOWN,
1266                                          DXGI_FORMAT_UNKNOWN,
1267                                          DXGI_FORMAT_UNKNOWN,
1268                                          GL_NONE,
1269                                          nullptr);
1270             return info;
1271         }
1272         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES:
1273         {
1274             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES,
1275                                          angle::FormatID::NONE,
1276                                          DXGI_FORMAT_UNKNOWN,
1277                                          DXGI_FORMAT_UNKNOWN,
1278                                          DXGI_FORMAT_UNKNOWN,
1279                                          DXGI_FORMAT_UNKNOWN,
1280                                          DXGI_FORMAT_UNKNOWN,
1281                                          DXGI_FORMAT_UNKNOWN,
1282                                          DXGI_FORMAT_UNKNOWN,
1283                                          DXGI_FORMAT_UNKNOWN,
1284                                          DXGI_FORMAT_UNKNOWN,
1285                                          GL_NONE,
1286                                          nullptr);
1287             return info;
1288         }
1289         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES:
1290         {
1291             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES,
1292                                          angle::FormatID::NONE,
1293                                          DXGI_FORMAT_UNKNOWN,
1294                                          DXGI_FORMAT_UNKNOWN,
1295                                          DXGI_FORMAT_UNKNOWN,
1296                                          DXGI_FORMAT_UNKNOWN,
1297                                          DXGI_FORMAT_UNKNOWN,
1298                                          DXGI_FORMAT_UNKNOWN,
1299                                          DXGI_FORMAT_UNKNOWN,
1300                                          DXGI_FORMAT_UNKNOWN,
1301                                          DXGI_FORMAT_UNKNOWN,
1302                                          GL_NONE,
1303                                          nullptr);
1304             return info;
1305         }
1306         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
1307         {
1308             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
1309                                          angle::FormatID::NONE,
1310                                          DXGI_FORMAT_UNKNOWN,
1311                                          DXGI_FORMAT_UNKNOWN,
1312                                          DXGI_FORMAT_UNKNOWN,
1313                                          DXGI_FORMAT_UNKNOWN,
1314                                          DXGI_FORMAT_UNKNOWN,
1315                                          DXGI_FORMAT_UNKNOWN,
1316                                          DXGI_FORMAT_UNKNOWN,
1317                                          DXGI_FORMAT_UNKNOWN,
1318                                          DXGI_FORMAT_UNKNOWN,
1319                                          GL_NONE,
1320                                          nullptr);
1321             return info;
1322         }
1323         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES:
1324         {
1325             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES,
1326                                          angle::FormatID::NONE,
1327                                          DXGI_FORMAT_UNKNOWN,
1328                                          DXGI_FORMAT_UNKNOWN,
1329                                          DXGI_FORMAT_UNKNOWN,
1330                                          DXGI_FORMAT_UNKNOWN,
1331                                          DXGI_FORMAT_UNKNOWN,
1332                                          DXGI_FORMAT_UNKNOWN,
1333                                          DXGI_FORMAT_UNKNOWN,
1334                                          DXGI_FORMAT_UNKNOWN,
1335                                          DXGI_FORMAT_UNKNOWN,
1336                                          GL_NONE,
1337                                          nullptr);
1338             return info;
1339         }
1340         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
1341         {
1342             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
1343                                          angle::FormatID::NONE,
1344                                          DXGI_FORMAT_UNKNOWN,
1345                                          DXGI_FORMAT_UNKNOWN,
1346                                          DXGI_FORMAT_UNKNOWN,
1347                                          DXGI_FORMAT_UNKNOWN,
1348                                          DXGI_FORMAT_UNKNOWN,
1349                                          DXGI_FORMAT_UNKNOWN,
1350                                          DXGI_FORMAT_UNKNOWN,
1351                                          DXGI_FORMAT_UNKNOWN,
1352                                          DXGI_FORMAT_UNKNOWN,
1353                                          GL_NONE,
1354                                          nullptr);
1355             return info;
1356         }
1357         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES:
1358         {
1359             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES,
1360                                          angle::FormatID::NONE,
1361                                          DXGI_FORMAT_UNKNOWN,
1362                                          DXGI_FORMAT_UNKNOWN,
1363                                          DXGI_FORMAT_UNKNOWN,
1364                                          DXGI_FORMAT_UNKNOWN,
1365                                          DXGI_FORMAT_UNKNOWN,
1366                                          DXGI_FORMAT_UNKNOWN,
1367                                          DXGI_FORMAT_UNKNOWN,
1368                                          DXGI_FORMAT_UNKNOWN,
1369                                          DXGI_FORMAT_UNKNOWN,
1370                                          GL_NONE,
1371                                          nullptr);
1372             return info;
1373         }
1374         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES:
1375         {
1376             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES,
1377                                          angle::FormatID::NONE,
1378                                          DXGI_FORMAT_UNKNOWN,
1379                                          DXGI_FORMAT_UNKNOWN,
1380                                          DXGI_FORMAT_UNKNOWN,
1381                                          DXGI_FORMAT_UNKNOWN,
1382                                          DXGI_FORMAT_UNKNOWN,
1383                                          DXGI_FORMAT_UNKNOWN,
1384                                          DXGI_FORMAT_UNKNOWN,
1385                                          DXGI_FORMAT_UNKNOWN,
1386                                          DXGI_FORMAT_UNKNOWN,
1387                                          GL_NONE,
1388                                          nullptr);
1389             return info;
1390         }
1391         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
1392         {
1393             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
1394                                          angle::FormatID::NONE,
1395                                          DXGI_FORMAT_UNKNOWN,
1396                                          DXGI_FORMAT_UNKNOWN,
1397                                          DXGI_FORMAT_UNKNOWN,
1398                                          DXGI_FORMAT_UNKNOWN,
1399                                          DXGI_FORMAT_UNKNOWN,
1400                                          DXGI_FORMAT_UNKNOWN,
1401                                          DXGI_FORMAT_UNKNOWN,
1402                                          DXGI_FORMAT_UNKNOWN,
1403                                          DXGI_FORMAT_UNKNOWN,
1404                                          GL_NONE,
1405                                          nullptr);
1406             return info;
1407         }
1408         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES:
1409         {
1410             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES,
1411                                          angle::FormatID::NONE,
1412                                          DXGI_FORMAT_UNKNOWN,
1413                                          DXGI_FORMAT_UNKNOWN,
1414                                          DXGI_FORMAT_UNKNOWN,
1415                                          DXGI_FORMAT_UNKNOWN,
1416                                          DXGI_FORMAT_UNKNOWN,
1417                                          DXGI_FORMAT_UNKNOWN,
1418                                          DXGI_FORMAT_UNKNOWN,
1419                                          DXGI_FORMAT_UNKNOWN,
1420                                          DXGI_FORMAT_UNKNOWN,
1421                                          GL_NONE,
1422                                          nullptr);
1423             return info;
1424         }
1425         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
1426         {
1427             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
1428                                          angle::FormatID::NONE,
1429                                          DXGI_FORMAT_UNKNOWN,
1430                                          DXGI_FORMAT_UNKNOWN,
1431                                          DXGI_FORMAT_UNKNOWN,
1432                                          DXGI_FORMAT_UNKNOWN,
1433                                          DXGI_FORMAT_UNKNOWN,
1434                                          DXGI_FORMAT_UNKNOWN,
1435                                          DXGI_FORMAT_UNKNOWN,
1436                                          DXGI_FORMAT_UNKNOWN,
1437                                          DXGI_FORMAT_UNKNOWN,
1438                                          GL_NONE,
1439                                          nullptr);
1440             return info;
1441         }
1442         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES:
1443         {
1444             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES,
1445                                          angle::FormatID::NONE,
1446                                          DXGI_FORMAT_UNKNOWN,
1447                                          DXGI_FORMAT_UNKNOWN,
1448                                          DXGI_FORMAT_UNKNOWN,
1449                                          DXGI_FORMAT_UNKNOWN,
1450                                          DXGI_FORMAT_UNKNOWN,
1451                                          DXGI_FORMAT_UNKNOWN,
1452                                          DXGI_FORMAT_UNKNOWN,
1453                                          DXGI_FORMAT_UNKNOWN,
1454                                          DXGI_FORMAT_UNKNOWN,
1455                                          GL_NONE,
1456                                          nullptr);
1457             return info;
1458         }
1459         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES:
1460         {
1461             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES,
1462                                          angle::FormatID::NONE,
1463                                          DXGI_FORMAT_UNKNOWN,
1464                                          DXGI_FORMAT_UNKNOWN,
1465                                          DXGI_FORMAT_UNKNOWN,
1466                                          DXGI_FORMAT_UNKNOWN,
1467                                          DXGI_FORMAT_UNKNOWN,
1468                                          DXGI_FORMAT_UNKNOWN,
1469                                          DXGI_FORMAT_UNKNOWN,
1470                                          DXGI_FORMAT_UNKNOWN,
1471                                          DXGI_FORMAT_UNKNOWN,
1472                                          GL_NONE,
1473                                          nullptr);
1474             return info;
1475         }
1476         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
1477         {
1478             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
1479                                          angle::FormatID::NONE,
1480                                          DXGI_FORMAT_UNKNOWN,
1481                                          DXGI_FORMAT_UNKNOWN,
1482                                          DXGI_FORMAT_UNKNOWN,
1483                                          DXGI_FORMAT_UNKNOWN,
1484                                          DXGI_FORMAT_UNKNOWN,
1485                                          DXGI_FORMAT_UNKNOWN,
1486                                          DXGI_FORMAT_UNKNOWN,
1487                                          DXGI_FORMAT_UNKNOWN,
1488                                          DXGI_FORMAT_UNKNOWN,
1489                                          GL_NONE,
1490                                          nullptr);
1491             return info;
1492         }
1493         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
1494         {
1495             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
1496                                          angle::FormatID::NONE,
1497                                          DXGI_FORMAT_UNKNOWN,
1498                                          DXGI_FORMAT_UNKNOWN,
1499                                          DXGI_FORMAT_UNKNOWN,
1500                                          DXGI_FORMAT_UNKNOWN,
1501                                          DXGI_FORMAT_UNKNOWN,
1502                                          DXGI_FORMAT_UNKNOWN,
1503                                          DXGI_FORMAT_UNKNOWN,
1504                                          DXGI_FORMAT_UNKNOWN,
1505                                          DXGI_FORMAT_UNKNOWN,
1506                                          GL_NONE,
1507                                          nullptr);
1508             return info;
1509         }
1510         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
1511         {
1512             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
1513                                          angle::FormatID::NONE,
1514                                          DXGI_FORMAT_UNKNOWN,
1515                                          DXGI_FORMAT_UNKNOWN,
1516                                          DXGI_FORMAT_UNKNOWN,
1517                                          DXGI_FORMAT_UNKNOWN,
1518                                          DXGI_FORMAT_UNKNOWN,
1519                                          DXGI_FORMAT_UNKNOWN,
1520                                          DXGI_FORMAT_UNKNOWN,
1521                                          DXGI_FORMAT_UNKNOWN,
1522                                          DXGI_FORMAT_UNKNOWN,
1523                                          GL_NONE,
1524                                          nullptr);
1525             return info;
1526         }
1527         case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
1528         {
1529             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
1530                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
1531                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1532                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1533                                          DXGI_FORMAT_UNKNOWN,
1534                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1535                                          DXGI_FORMAT_UNKNOWN,
1536                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1537                                          DXGI_FORMAT_UNKNOWN,
1538                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1539                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
1540                                          GL_SRGB8_ALPHA8,
1541                                          nullptr);
1542             return info;
1543         }
1544         case GL_COMPRESSED_SRGB8_ETC2:
1545         {
1546             static constexpr Format info(GL_COMPRESSED_SRGB8_ETC2,
1547                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
1548                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1549                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1550                                          DXGI_FORMAT_UNKNOWN,
1551                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1552                                          DXGI_FORMAT_UNKNOWN,
1553                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1554                                          DXGI_FORMAT_UNKNOWN,
1555                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1556                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
1557                                          GL_SRGB8_ALPHA8,
1558                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1559             return info;
1560         }
1561         case GL_COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE:
1562         {
1563             static constexpr Format info(GL_COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE,
1564                                          angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK,
1565                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1566                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1567                                          DXGI_FORMAT_UNKNOWN,
1568                                          DXGI_FORMAT_UNKNOWN,
1569                                          DXGI_FORMAT_UNKNOWN,
1570                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1571                                          DXGI_FORMAT_UNKNOWN,
1572                                          DXGI_FORMAT_BC1_UNORM,
1573                                          DXGI_FORMAT_BC1_TYPELESS,
1574                                          GL_RGBA8,
1575                                          nullptr);
1576             return info;
1577         }
1578         case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
1579         {
1580             static constexpr Format info(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
1581                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
1582                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1583                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1584                                          DXGI_FORMAT_UNKNOWN,
1585                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1586                                          DXGI_FORMAT_UNKNOWN,
1587                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1588                                          DXGI_FORMAT_UNKNOWN,
1589                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1590                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
1591                                          GL_SRGB8_ALPHA8,
1592                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1593             return info;
1594         }
1595         case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
1596         {
1597             static constexpr Format info(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE,
1598                                          angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK,
1599                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1600                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1601                                          DXGI_FORMAT_UNKNOWN,
1602                                          DXGI_FORMAT_UNKNOWN,
1603                                          DXGI_FORMAT_UNKNOWN,
1604                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1605                                          DXGI_FORMAT_UNKNOWN,
1606                                          DXGI_FORMAT_BC1_UNORM,
1607                                          DXGI_FORMAT_BC1_TYPELESS,
1608                                          GL_RGBA8,
1609                                          nullptr);
1610             return info;
1611         }
1612         case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:
1613         {
1614             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,
1615                                          angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK,
1616                                          DXGI_FORMAT_BC7_UNORM_SRGB,
1617                                          DXGI_FORMAT_BC7_UNORM_SRGB,
1618                                          DXGI_FORMAT_UNKNOWN,
1619                                          DXGI_FORMAT_UNKNOWN,
1620                                          DXGI_FORMAT_UNKNOWN,
1621                                          DXGI_FORMAT_BC7_UNORM_SRGB,
1622                                          DXGI_FORMAT_UNKNOWN,
1623                                          DXGI_FORMAT_BC7_UNORM,
1624                                          DXGI_FORMAT_BC7_TYPELESS,
1625                                          GL_SRGB8_ALPHA8,
1626                                          nullptr);
1627             return info;
1628         }
1629         case GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT:
1630         {
1631             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT,
1632                                          angle::FormatID::NONE,
1633                                          DXGI_FORMAT_UNKNOWN,
1634                                          DXGI_FORMAT_UNKNOWN,
1635                                          DXGI_FORMAT_UNKNOWN,
1636                                          DXGI_FORMAT_UNKNOWN,
1637                                          DXGI_FORMAT_UNKNOWN,
1638                                          DXGI_FORMAT_UNKNOWN,
1639                                          DXGI_FORMAT_UNKNOWN,
1640                                          DXGI_FORMAT_UNKNOWN,
1641                                          DXGI_FORMAT_UNKNOWN,
1642                                          GL_NONE,
1643                                          nullptr);
1644             return info;
1645         }
1646         case GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT:
1647         {
1648             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT,
1649                                          angle::FormatID::NONE,
1650                                          DXGI_FORMAT_UNKNOWN,
1651                                          DXGI_FORMAT_UNKNOWN,
1652                                          DXGI_FORMAT_UNKNOWN,
1653                                          DXGI_FORMAT_UNKNOWN,
1654                                          DXGI_FORMAT_UNKNOWN,
1655                                          DXGI_FORMAT_UNKNOWN,
1656                                          DXGI_FORMAT_UNKNOWN,
1657                                          DXGI_FORMAT_UNKNOWN,
1658                                          DXGI_FORMAT_UNKNOWN,
1659                                          GL_NONE,
1660                                          nullptr);
1661             return info;
1662         }
1663         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
1664         {
1665             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
1666                                          angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK,
1667                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1668                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1669                                          DXGI_FORMAT_UNKNOWN,
1670                                          DXGI_FORMAT_UNKNOWN,
1671                                          DXGI_FORMAT_UNKNOWN,
1672                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1673                                          DXGI_FORMAT_UNKNOWN,
1674                                          DXGI_FORMAT_BC1_UNORM,
1675                                          DXGI_FORMAT_BC1_TYPELESS,
1676                                          GL_RGBA8,
1677                                          nullptr);
1678             return info;
1679         }
1680         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
1681         {
1682             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
1683                                          angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK,
1684                                          DXGI_FORMAT_BC2_UNORM_SRGB,
1685                                          DXGI_FORMAT_BC2_UNORM_SRGB,
1686                                          DXGI_FORMAT_UNKNOWN,
1687                                          DXGI_FORMAT_UNKNOWN,
1688                                          DXGI_FORMAT_UNKNOWN,
1689                                          DXGI_FORMAT_BC2_UNORM_SRGB,
1690                                          DXGI_FORMAT_UNKNOWN,
1691                                          DXGI_FORMAT_BC2_UNORM,
1692                                          DXGI_FORMAT_BC2_TYPELESS,
1693                                          GL_RGBA8,
1694                                          nullptr);
1695             return info;
1696         }
1697         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
1698         {
1699             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
1700                                          angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK,
1701                                          DXGI_FORMAT_BC3_UNORM_SRGB,
1702                                          DXGI_FORMAT_BC3_UNORM_SRGB,
1703                                          DXGI_FORMAT_UNKNOWN,
1704                                          DXGI_FORMAT_UNKNOWN,
1705                                          DXGI_FORMAT_UNKNOWN,
1706                                          DXGI_FORMAT_BC3_UNORM_SRGB,
1707                                          DXGI_FORMAT_UNKNOWN,
1708                                          DXGI_FORMAT_BC3_UNORM,
1709                                          DXGI_FORMAT_BC3_TYPELESS,
1710                                          GL_RGBA8,
1711                                          nullptr);
1712             return info;
1713         }
1714         case GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT:
1715         {
1716             static constexpr Format info(GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT,
1717                                          angle::FormatID::NONE,
1718                                          DXGI_FORMAT_UNKNOWN,
1719                                          DXGI_FORMAT_UNKNOWN,
1720                                          DXGI_FORMAT_UNKNOWN,
1721                                          DXGI_FORMAT_UNKNOWN,
1722                                          DXGI_FORMAT_UNKNOWN,
1723                                          DXGI_FORMAT_UNKNOWN,
1724                                          DXGI_FORMAT_UNKNOWN,
1725                                          DXGI_FORMAT_UNKNOWN,
1726                                          DXGI_FORMAT_UNKNOWN,
1727                                          GL_NONE,
1728                                          nullptr);
1729             return info;
1730         }
1731         case GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT:
1732         {
1733             static constexpr Format info(GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT,
1734                                          angle::FormatID::NONE,
1735                                          DXGI_FORMAT_UNKNOWN,
1736                                          DXGI_FORMAT_UNKNOWN,
1737                                          DXGI_FORMAT_UNKNOWN,
1738                                          DXGI_FORMAT_UNKNOWN,
1739                                          DXGI_FORMAT_UNKNOWN,
1740                                          DXGI_FORMAT_UNKNOWN,
1741                                          DXGI_FORMAT_UNKNOWN,
1742                                          DXGI_FORMAT_UNKNOWN,
1743                                          DXGI_FORMAT_UNKNOWN,
1744                                          GL_NONE,
1745                                          nullptr);
1746             return info;
1747         }
1748         case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
1749         {
1750             static constexpr Format info(GL_COMPRESSED_SRGB_S3TC_DXT1_EXT,
1751                                          angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK,
1752                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1753                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1754                                          DXGI_FORMAT_UNKNOWN,
1755                                          DXGI_FORMAT_UNKNOWN,
1756                                          DXGI_FORMAT_UNKNOWN,
1757                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1758                                          DXGI_FORMAT_UNKNOWN,
1759                                          DXGI_FORMAT_BC1_UNORM,
1760                                          DXGI_FORMAT_BC1_TYPELESS,
1761                                          GL_RGBA8,
1762                                          nullptr);
1763             return info;
1764         }
1765         case GL_DEPTH24_STENCIL8:
1766         {
1767             if (OnlyFL10Plus(deviceCaps))
1768             {
1769                 static constexpr Format info(GL_DEPTH24_STENCIL8,
1770                                              angle::FormatID::D24_UNORM_S8_UINT,
1771                                              DXGI_FORMAT_R24G8_TYPELESS,
1772                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1773                                              DXGI_FORMAT_UNKNOWN,
1774                                              DXGI_FORMAT_UNKNOWN,
1775                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1776                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1777                                              DXGI_FORMAT_X24_TYPELESS_G8_UINT,
1778                                              DXGI_FORMAT_UNKNOWN,
1779                                              DXGI_FORMAT_UNKNOWN,
1780                                              GL_RGBA32F,
1781                                              nullptr);
1782                 return info;
1783             }
1784             else
1785             {
1786                 static constexpr Format info(GL_DEPTH24_STENCIL8,
1787                                              angle::FormatID::D24_UNORM_S8_UINT,
1788                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1789                                              DXGI_FORMAT_UNKNOWN,
1790                                              DXGI_FORMAT_UNKNOWN,
1791                                              DXGI_FORMAT_UNKNOWN,
1792                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1793                                              DXGI_FORMAT_UNKNOWN,
1794                                              DXGI_FORMAT_UNKNOWN,
1795                                              DXGI_FORMAT_UNKNOWN,
1796                                              DXGI_FORMAT_UNKNOWN,
1797                                              GL_RGBA32F,
1798                                              nullptr);
1799                 return info;
1800             }
1801         }
1802         case GL_DEPTH32F_STENCIL8:
1803         {
1804             static constexpr Format info(GL_DEPTH32F_STENCIL8,
1805                                          angle::FormatID::D32_FLOAT_S8X24_UINT,
1806                                          DXGI_FORMAT_R32G8X24_TYPELESS,
1807                                          DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
1808                                          DXGI_FORMAT_UNKNOWN,
1809                                          DXGI_FORMAT_UNKNOWN,
1810                                          DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
1811                                          DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
1812                                          DXGI_FORMAT_X32_TYPELESS_G8X24_UINT,
1813                                          DXGI_FORMAT_UNKNOWN,
1814                                          DXGI_FORMAT_UNKNOWN,
1815                                          GL_RGBA32F,
1816                                          nullptr);
1817             return info;
1818         }
1819         case GL_DEPTH_COMPONENT16:
1820         {
1821             if (OnlyFL10Plus(deviceCaps))
1822             {
1823                 static constexpr Format info(GL_DEPTH_COMPONENT16,
1824                                              angle::FormatID::D16_UNORM,
1825                                              DXGI_FORMAT_R16_TYPELESS,
1826                                              DXGI_FORMAT_R16_UNORM,
1827                                              DXGI_FORMAT_UNKNOWN,
1828                                              DXGI_FORMAT_UNKNOWN,
1829                                              DXGI_FORMAT_D16_UNORM,
1830                                              DXGI_FORMAT_R16_UNORM,
1831                                              DXGI_FORMAT_UNKNOWN,
1832                                              DXGI_FORMAT_UNKNOWN,
1833                                              DXGI_FORMAT_UNKNOWN,
1834                                              GL_RGBA16_EXT,
1835                                              nullptr);
1836                 return info;
1837             }
1838             else
1839             {
1840                 static constexpr Format info(GL_DEPTH_COMPONENT16,
1841                                              angle::FormatID::D16_UNORM,
1842                                              DXGI_FORMAT_D16_UNORM,
1843                                              DXGI_FORMAT_UNKNOWN,
1844                                              DXGI_FORMAT_UNKNOWN,
1845                                              DXGI_FORMAT_UNKNOWN,
1846                                              DXGI_FORMAT_D16_UNORM,
1847                                              DXGI_FORMAT_UNKNOWN,
1848                                              DXGI_FORMAT_UNKNOWN,
1849                                              DXGI_FORMAT_UNKNOWN,
1850                                              DXGI_FORMAT_UNKNOWN,
1851                                              GL_RGBA16_EXT,
1852                                              nullptr);
1853                 return info;
1854             }
1855         }
1856         case GL_DEPTH_COMPONENT24:
1857         {
1858             if (OnlyFL10Plus(deviceCaps))
1859             {
1860                 static constexpr Format info(GL_DEPTH_COMPONENT24,
1861                                              angle::FormatID::D24_UNORM_S8_UINT,
1862                                              DXGI_FORMAT_R24G8_TYPELESS,
1863                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1864                                              DXGI_FORMAT_UNKNOWN,
1865                                              DXGI_FORMAT_UNKNOWN,
1866                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1867                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1868                                              DXGI_FORMAT_X24_TYPELESS_G8_UINT,
1869                                              DXGI_FORMAT_UNKNOWN,
1870                                              DXGI_FORMAT_UNKNOWN,
1871                                              GL_RGBA32F,
1872                                              nullptr);
1873                 return info;
1874             }
1875             else
1876             {
1877                 static constexpr Format info(GL_DEPTH_COMPONENT24,
1878                                              angle::FormatID::D24_UNORM_S8_UINT,
1879                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1880                                              DXGI_FORMAT_UNKNOWN,
1881                                              DXGI_FORMAT_UNKNOWN,
1882                                              DXGI_FORMAT_UNKNOWN,
1883                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1884                                              DXGI_FORMAT_UNKNOWN,
1885                                              DXGI_FORMAT_UNKNOWN,
1886                                              DXGI_FORMAT_UNKNOWN,
1887                                              DXGI_FORMAT_UNKNOWN,
1888                                              GL_RGBA32F,
1889                                              nullptr);
1890                 return info;
1891             }
1892         }
1893         case GL_DEPTH_COMPONENT32F:
1894         {
1895             static constexpr Format info(GL_DEPTH_COMPONENT32F,
1896                                          angle::FormatID::D32_FLOAT,
1897                                          DXGI_FORMAT_R32_TYPELESS,
1898                                          DXGI_FORMAT_R32_FLOAT,
1899                                          DXGI_FORMAT_UNKNOWN,
1900                                          DXGI_FORMAT_UNKNOWN,
1901                                          DXGI_FORMAT_D32_FLOAT,
1902                                          DXGI_FORMAT_R32_FLOAT,
1903                                          DXGI_FORMAT_UNKNOWN,
1904                                          DXGI_FORMAT_UNKNOWN,
1905                                          DXGI_FORMAT_UNKNOWN,
1906                                          GL_RGBA32F,
1907                                          nullptr);
1908             return info;
1909         }
1910         case GL_DEPTH_COMPONENT32_OES:
1911         {
1912             if (OnlyFL10Plus(deviceCaps))
1913             {
1914                 static constexpr Format info(GL_DEPTH_COMPONENT32_OES,
1915                                              angle::FormatID::D24_UNORM_S8_UINT,
1916                                              DXGI_FORMAT_R24G8_TYPELESS,
1917                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1918                                              DXGI_FORMAT_UNKNOWN,
1919                                              DXGI_FORMAT_UNKNOWN,
1920                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1921                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1922                                              DXGI_FORMAT_X24_TYPELESS_G8_UINT,
1923                                              DXGI_FORMAT_UNKNOWN,
1924                                              DXGI_FORMAT_UNKNOWN,
1925                                              GL_RGBA32F,
1926                                              nullptr);
1927                 return info;
1928             }
1929             else
1930             {
1931                 static constexpr Format info(GL_DEPTH_COMPONENT32_OES,
1932                                              angle::FormatID::D24_UNORM_S8_UINT,
1933                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1934                                              DXGI_FORMAT_UNKNOWN,
1935                                              DXGI_FORMAT_UNKNOWN,
1936                                              DXGI_FORMAT_UNKNOWN,
1937                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1938                                              DXGI_FORMAT_UNKNOWN,
1939                                              DXGI_FORMAT_UNKNOWN,
1940                                              DXGI_FORMAT_UNKNOWN,
1941                                              DXGI_FORMAT_UNKNOWN,
1942                                              GL_RGBA32F,
1943                                              nullptr);
1944                 return info;
1945             }
1946         }
1947         case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
1948         {
1949             static constexpr Format info(GL_ETC1_RGB8_LOSSY_DECODE_ANGLE,
1950                                          angle::FormatID::BC1_RGB_UNORM_BLOCK,
1951                                          DXGI_FORMAT_BC1_UNORM,
1952                                          DXGI_FORMAT_BC1_UNORM,
1953                                          DXGI_FORMAT_UNKNOWN,
1954                                          DXGI_FORMAT_UNKNOWN,
1955                                          DXGI_FORMAT_UNKNOWN,
1956                                          DXGI_FORMAT_BC1_UNORM,
1957                                          DXGI_FORMAT_UNKNOWN,
1958                                          DXGI_FORMAT_UNKNOWN,
1959                                          DXGI_FORMAT_UNKNOWN,
1960                                          GL_RGBA8,
1961                                          nullptr);
1962             return info;
1963         }
1964         case GL_ETC1_RGB8_OES:
1965         {
1966             static constexpr Format info(GL_ETC1_RGB8_OES,
1967                                          angle::FormatID::R8G8B8A8_UNORM,
1968                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1969                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1970                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1971                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1972                                          DXGI_FORMAT_UNKNOWN,
1973                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1974                                          DXGI_FORMAT_UNKNOWN,
1975                                          DXGI_FORMAT_UNKNOWN,
1976                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
1977                                          GL_RGBA8,
1978                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1979             return info;
1980         }
1981         case GL_G8_B8R8_2PLANE_420_UNORM_ANGLE:
1982         {
1983             static constexpr Format info(GL_G8_B8R8_2PLANE_420_UNORM_ANGLE,
1984                                          angle::FormatID::NONE,
1985                                          DXGI_FORMAT_UNKNOWN,
1986                                          DXGI_FORMAT_UNKNOWN,
1987                                          DXGI_FORMAT_UNKNOWN,
1988                                          DXGI_FORMAT_UNKNOWN,
1989                                          DXGI_FORMAT_UNKNOWN,
1990                                          DXGI_FORMAT_UNKNOWN,
1991                                          DXGI_FORMAT_UNKNOWN,
1992                                          DXGI_FORMAT_UNKNOWN,
1993                                          DXGI_FORMAT_UNKNOWN,
1994                                          GL_NONE,
1995                                          nullptr);
1996             return info;
1997         }
1998         case GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE:
1999         {
2000             static constexpr Format info(GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE,
2001                                          angle::FormatID::NONE,
2002                                          DXGI_FORMAT_UNKNOWN,
2003                                          DXGI_FORMAT_UNKNOWN,
2004                                          DXGI_FORMAT_UNKNOWN,
2005                                          DXGI_FORMAT_UNKNOWN,
2006                                          DXGI_FORMAT_UNKNOWN,
2007                                          DXGI_FORMAT_UNKNOWN,
2008                                          DXGI_FORMAT_UNKNOWN,
2009                                          DXGI_FORMAT_UNKNOWN,
2010                                          DXGI_FORMAT_UNKNOWN,
2011                                          GL_NONE,
2012                                          nullptr);
2013             return info;
2014         }
2015         case GL_LUMINANCE16F_EXT:
2016         {
2017             static constexpr Format info(GL_LUMINANCE16F_EXT,
2018                                          angle::FormatID::R16G16B16A16_FLOAT,
2019                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2020                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2021                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2022                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2023                                          DXGI_FORMAT_UNKNOWN,
2024                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2025                                          DXGI_FORMAT_UNKNOWN,
2026                                          DXGI_FORMAT_UNKNOWN,
2027                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
2028                                          GL_RGBA16F,
2029                                          Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
2030             return info;
2031         }
2032         case GL_LUMINANCE32F_EXT:
2033         {
2034             static constexpr Format info(GL_LUMINANCE32F_EXT,
2035                                          angle::FormatID::R32G32B32A32_FLOAT,
2036                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2037                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2038                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2039                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2040                                          DXGI_FORMAT_UNKNOWN,
2041                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2042                                          DXGI_FORMAT_UNKNOWN,
2043                                          DXGI_FORMAT_UNKNOWN,
2044                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
2045                                          GL_RGBA32F,
2046                                          Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
2047             return info;
2048         }
2049         case GL_LUMINANCE4_ALPHA4_OES:
2050         {
2051             if (SupportsFormat(DXGI_FORMAT_B4G4R4A4_UNORM, deviceCaps))
2052             {
2053                 static constexpr Format info(GL_LUMINANCE4_ALPHA4_OES,
2054                                              angle::FormatID::B4G4R4A4_UNORM,
2055                                              DXGI_FORMAT_B4G4R4A4_UNORM,
2056                                              DXGI_FORMAT_B4G4R4A4_UNORM,
2057                                              DXGI_FORMAT_UNKNOWN,
2058                                              DXGI_FORMAT_B4G4R4A4_UNORM,
2059                                              DXGI_FORMAT_UNKNOWN,
2060                                              DXGI_FORMAT_B4G4R4A4_UNORM,
2061                                              DXGI_FORMAT_UNKNOWN,
2062                                              DXGI_FORMAT_UNKNOWN,
2063                                              DXGI_FORMAT_UNKNOWN,
2064                                              GL_LUMINANCE4_ALPHA4_OES,
2065                                              nullptr);
2066                 return info;
2067             }
2068             else
2069             {
2070                 static constexpr Format info(GL_LUMINANCE4_ALPHA4_OES,
2071                                              angle::FormatID::R8G8B8A8_UNORM,
2072                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2073                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2074                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2075                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2076                                              DXGI_FORMAT_UNKNOWN,
2077                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2078                                              DXGI_FORMAT_UNKNOWN,
2079                                              DXGI_FORMAT_UNKNOWN,
2080                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
2081                                              GL_RGBA8,
2082                                              nullptr);
2083                 return info;
2084             }
2085         }
2086         case GL_LUMINANCE8_ALPHA8_EXT:
2087         {
2088             static constexpr Format info(GL_LUMINANCE8_ALPHA8_EXT,
2089                                          angle::FormatID::R8G8B8A8_UNORM,
2090                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2091                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2092                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2093                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2094                                          DXGI_FORMAT_UNKNOWN,
2095                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2096                                          DXGI_FORMAT_UNKNOWN,
2097                                          DXGI_FORMAT_UNKNOWN,
2098                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
2099                                          GL_RGBA8,
2100                                          nullptr);
2101             return info;
2102         }
2103         case GL_LUMINANCE8_EXT:
2104         {
2105             static constexpr Format info(GL_LUMINANCE8_EXT,
2106                                          angle::FormatID::R8G8B8A8_UNORM,
2107                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2108                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2109                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2110                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2111                                          DXGI_FORMAT_UNKNOWN,
2112                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2113                                          DXGI_FORMAT_UNKNOWN,
2114                                          DXGI_FORMAT_UNKNOWN,
2115                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
2116                                          GL_RGBA8,
2117                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
2118             return info;
2119         }
2120         case GL_LUMINANCE_ALPHA16F_EXT:
2121         {
2122             static constexpr Format info(GL_LUMINANCE_ALPHA16F_EXT,
2123                                          angle::FormatID::R16G16B16A16_FLOAT,
2124                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2125                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2126                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2127                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2128                                          DXGI_FORMAT_UNKNOWN,
2129                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2130                                          DXGI_FORMAT_UNKNOWN,
2131                                          DXGI_FORMAT_UNKNOWN,
2132                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
2133                                          GL_RGBA16F,
2134                                          nullptr);
2135             return info;
2136         }
2137         case GL_LUMINANCE_ALPHA32F_EXT:
2138         {
2139             static constexpr Format info(GL_LUMINANCE_ALPHA32F_EXT,
2140                                          angle::FormatID::R32G32B32A32_FLOAT,
2141                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2142                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2143                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2144                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2145                                          DXGI_FORMAT_UNKNOWN,
2146                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2147                                          DXGI_FORMAT_UNKNOWN,
2148                                          DXGI_FORMAT_UNKNOWN,
2149                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
2150                                          GL_RGBA32F,
2151                                          nullptr);
2152             return info;
2153         }
2154         case GL_NONE:
2155         {
2156             static constexpr Format info(GL_NONE,
2157                                          angle::FormatID::NONE,
2158                                          DXGI_FORMAT_UNKNOWN,
2159                                          DXGI_FORMAT_UNKNOWN,
2160                                          DXGI_FORMAT_UNKNOWN,
2161                                          DXGI_FORMAT_UNKNOWN,
2162                                          DXGI_FORMAT_UNKNOWN,
2163                                          DXGI_FORMAT_UNKNOWN,
2164                                          DXGI_FORMAT_UNKNOWN,
2165                                          DXGI_FORMAT_UNKNOWN,
2166                                          DXGI_FORMAT_UNKNOWN,
2167                                          GL_NONE,
2168                                          nullptr);
2169             return info;
2170         }
2171         case GL_PALETTE4_R5_G6_B5_OES:
2172         {
2173             static constexpr Format info(GL_PALETTE4_R5_G6_B5_OES,
2174                                          angle::FormatID::NONE,
2175                                          DXGI_FORMAT_UNKNOWN,
2176                                          DXGI_FORMAT_UNKNOWN,
2177                                          DXGI_FORMAT_UNKNOWN,
2178                                          DXGI_FORMAT_UNKNOWN,
2179                                          DXGI_FORMAT_UNKNOWN,
2180                                          DXGI_FORMAT_UNKNOWN,
2181                                          DXGI_FORMAT_UNKNOWN,
2182                                          DXGI_FORMAT_UNKNOWN,
2183                                          DXGI_FORMAT_UNKNOWN,
2184                                          GL_NONE,
2185                                          nullptr);
2186             return info;
2187         }
2188         case GL_PALETTE4_RGB5_A1_OES:
2189         {
2190             static constexpr Format info(GL_PALETTE4_RGB5_A1_OES,
2191                                          angle::FormatID::NONE,
2192                                          DXGI_FORMAT_UNKNOWN,
2193                                          DXGI_FORMAT_UNKNOWN,
2194                                          DXGI_FORMAT_UNKNOWN,
2195                                          DXGI_FORMAT_UNKNOWN,
2196                                          DXGI_FORMAT_UNKNOWN,
2197                                          DXGI_FORMAT_UNKNOWN,
2198                                          DXGI_FORMAT_UNKNOWN,
2199                                          DXGI_FORMAT_UNKNOWN,
2200                                          DXGI_FORMAT_UNKNOWN,
2201                                          GL_NONE,
2202                                          nullptr);
2203             return info;
2204         }
2205         case GL_PALETTE4_RGB8_OES:
2206         {
2207             static constexpr Format info(GL_PALETTE4_RGB8_OES,
2208                                          angle::FormatID::NONE,
2209                                          DXGI_FORMAT_UNKNOWN,
2210                                          DXGI_FORMAT_UNKNOWN,
2211                                          DXGI_FORMAT_UNKNOWN,
2212                                          DXGI_FORMAT_UNKNOWN,
2213                                          DXGI_FORMAT_UNKNOWN,
2214                                          DXGI_FORMAT_UNKNOWN,
2215                                          DXGI_FORMAT_UNKNOWN,
2216                                          DXGI_FORMAT_UNKNOWN,
2217                                          DXGI_FORMAT_UNKNOWN,
2218                                          GL_NONE,
2219                                          nullptr);
2220             return info;
2221         }
2222         case GL_PALETTE4_RGBA4_OES:
2223         {
2224             static constexpr Format info(GL_PALETTE4_RGBA4_OES,
2225                                          angle::FormatID::NONE,
2226                                          DXGI_FORMAT_UNKNOWN,
2227                                          DXGI_FORMAT_UNKNOWN,
2228                                          DXGI_FORMAT_UNKNOWN,
2229                                          DXGI_FORMAT_UNKNOWN,
2230                                          DXGI_FORMAT_UNKNOWN,
2231                                          DXGI_FORMAT_UNKNOWN,
2232                                          DXGI_FORMAT_UNKNOWN,
2233                                          DXGI_FORMAT_UNKNOWN,
2234                                          DXGI_FORMAT_UNKNOWN,
2235                                          GL_NONE,
2236                                          nullptr);
2237             return info;
2238         }
2239         case GL_PALETTE4_RGBA8_OES:
2240         {
2241             static constexpr Format info(GL_PALETTE4_RGBA8_OES,
2242                                          angle::FormatID::NONE,
2243                                          DXGI_FORMAT_UNKNOWN,
2244                                          DXGI_FORMAT_UNKNOWN,
2245                                          DXGI_FORMAT_UNKNOWN,
2246                                          DXGI_FORMAT_UNKNOWN,
2247                                          DXGI_FORMAT_UNKNOWN,
2248                                          DXGI_FORMAT_UNKNOWN,
2249                                          DXGI_FORMAT_UNKNOWN,
2250                                          DXGI_FORMAT_UNKNOWN,
2251                                          DXGI_FORMAT_UNKNOWN,
2252                                          GL_NONE,
2253                                          nullptr);
2254             return info;
2255         }
2256         case GL_PALETTE8_R5_G6_B5_OES:
2257         {
2258             static constexpr Format info(GL_PALETTE8_R5_G6_B5_OES,
2259                                          angle::FormatID::NONE,
2260                                          DXGI_FORMAT_UNKNOWN,
2261                                          DXGI_FORMAT_UNKNOWN,
2262                                          DXGI_FORMAT_UNKNOWN,
2263                                          DXGI_FORMAT_UNKNOWN,
2264                                          DXGI_FORMAT_UNKNOWN,
2265                                          DXGI_FORMAT_UNKNOWN,
2266                                          DXGI_FORMAT_UNKNOWN,
2267                                          DXGI_FORMAT_UNKNOWN,
2268                                          DXGI_FORMAT_UNKNOWN,
2269                                          GL_NONE,
2270                                          nullptr);
2271             return info;
2272         }
2273         case GL_PALETTE8_RGB5_A1_OES:
2274         {
2275             static constexpr Format info(GL_PALETTE8_RGB5_A1_OES,
2276                                          angle::FormatID::NONE,
2277                                          DXGI_FORMAT_UNKNOWN,
2278                                          DXGI_FORMAT_UNKNOWN,
2279                                          DXGI_FORMAT_UNKNOWN,
2280                                          DXGI_FORMAT_UNKNOWN,
2281                                          DXGI_FORMAT_UNKNOWN,
2282                                          DXGI_FORMAT_UNKNOWN,
2283                                          DXGI_FORMAT_UNKNOWN,
2284                                          DXGI_FORMAT_UNKNOWN,
2285                                          DXGI_FORMAT_UNKNOWN,
2286                                          GL_NONE,
2287                                          nullptr);
2288             return info;
2289         }
2290         case GL_PALETTE8_RGB8_OES:
2291         {
2292             static constexpr Format info(GL_PALETTE8_RGB8_OES,
2293                                          angle::FormatID::NONE,
2294                                          DXGI_FORMAT_UNKNOWN,
2295                                          DXGI_FORMAT_UNKNOWN,
2296                                          DXGI_FORMAT_UNKNOWN,
2297                                          DXGI_FORMAT_UNKNOWN,
2298                                          DXGI_FORMAT_UNKNOWN,
2299                                          DXGI_FORMAT_UNKNOWN,
2300                                          DXGI_FORMAT_UNKNOWN,
2301                                          DXGI_FORMAT_UNKNOWN,
2302                                          DXGI_FORMAT_UNKNOWN,
2303                                          GL_NONE,
2304                                          nullptr);
2305             return info;
2306         }
2307         case GL_PALETTE8_RGBA4_OES:
2308         {
2309             static constexpr Format info(GL_PALETTE8_RGBA4_OES,
2310                                          angle::FormatID::NONE,
2311                                          DXGI_FORMAT_UNKNOWN,
2312                                          DXGI_FORMAT_UNKNOWN,
2313                                          DXGI_FORMAT_UNKNOWN,
2314                                          DXGI_FORMAT_UNKNOWN,
2315                                          DXGI_FORMAT_UNKNOWN,
2316                                          DXGI_FORMAT_UNKNOWN,
2317                                          DXGI_FORMAT_UNKNOWN,
2318                                          DXGI_FORMAT_UNKNOWN,
2319                                          DXGI_FORMAT_UNKNOWN,
2320                                          GL_NONE,
2321                                          nullptr);
2322             return info;
2323         }
2324         case GL_PALETTE8_RGBA8_OES:
2325         {
2326             static constexpr Format info(GL_PALETTE8_RGBA8_OES,
2327                                          angle::FormatID::NONE,
2328                                          DXGI_FORMAT_UNKNOWN,
2329                                          DXGI_FORMAT_UNKNOWN,
2330                                          DXGI_FORMAT_UNKNOWN,
2331                                          DXGI_FORMAT_UNKNOWN,
2332                                          DXGI_FORMAT_UNKNOWN,
2333                                          DXGI_FORMAT_UNKNOWN,
2334                                          DXGI_FORMAT_UNKNOWN,
2335                                          DXGI_FORMAT_UNKNOWN,
2336                                          DXGI_FORMAT_UNKNOWN,
2337                                          GL_NONE,
2338                                          nullptr);
2339             return info;
2340         }
2341         case GL_R11F_G11F_B10F:
2342         {
2343             static constexpr Format info(GL_R11F_G11F_B10F,
2344                                          angle::FormatID::R11G11B10_FLOAT,
2345                                          DXGI_FORMAT_R11G11B10_FLOAT,
2346                                          DXGI_FORMAT_R11G11B10_FLOAT,
2347                                          DXGI_FORMAT_UNKNOWN,
2348                                          DXGI_FORMAT_R11G11B10_FLOAT,
2349                                          DXGI_FORMAT_UNKNOWN,
2350                                          DXGI_FORMAT_R11G11B10_FLOAT,
2351                                          DXGI_FORMAT_UNKNOWN,
2352                                          DXGI_FORMAT_UNKNOWN,
2353                                          DXGI_FORMAT_UNKNOWN,
2354                                          GL_RGBA16F_EXT,
2355                                          nullptr);
2356             return info;
2357         }
2358         case GL_R16F:
2359         {
2360             static constexpr Format info(GL_R16F,
2361                                          angle::FormatID::R16_FLOAT,
2362                                          DXGI_FORMAT_R16_FLOAT,
2363                                          DXGI_FORMAT_R16_FLOAT,
2364                                          DXGI_FORMAT_UNKNOWN,
2365                                          DXGI_FORMAT_R16_FLOAT,
2366                                          DXGI_FORMAT_UNKNOWN,
2367                                          DXGI_FORMAT_R16_FLOAT,
2368                                          DXGI_FORMAT_UNKNOWN,
2369                                          DXGI_FORMAT_UNKNOWN,
2370                                          DXGI_FORMAT_R16_TYPELESS,
2371                                          GL_RGBA16F_EXT,
2372                                          nullptr);
2373             return info;
2374         }
2375         case GL_R16I:
2376         {
2377             static constexpr Format info(GL_R16I,
2378                                          angle::FormatID::R16_SINT,
2379                                          DXGI_FORMAT_R16_SINT,
2380                                          DXGI_FORMAT_R16_SINT,
2381                                          DXGI_FORMAT_UNKNOWN,
2382                                          DXGI_FORMAT_R16_SINT,
2383                                          DXGI_FORMAT_UNKNOWN,
2384                                          DXGI_FORMAT_R16_SINT,
2385                                          DXGI_FORMAT_UNKNOWN,
2386                                          DXGI_FORMAT_UNKNOWN,
2387                                          DXGI_FORMAT_R16_TYPELESS,
2388                                          GL_RGBA16I,
2389                                          nullptr);
2390             return info;
2391         }
2392         case GL_R16UI:
2393         {
2394             static constexpr Format info(GL_R16UI,
2395                                          angle::FormatID::R16_UINT,
2396                                          DXGI_FORMAT_R16_UINT,
2397                                          DXGI_FORMAT_R16_UINT,
2398                                          DXGI_FORMAT_UNKNOWN,
2399                                          DXGI_FORMAT_R16_UINT,
2400                                          DXGI_FORMAT_UNKNOWN,
2401                                          DXGI_FORMAT_R16_UINT,
2402                                          DXGI_FORMAT_UNKNOWN,
2403                                          DXGI_FORMAT_UNKNOWN,
2404                                          DXGI_FORMAT_R16_TYPELESS,
2405                                          GL_RGBA16I,
2406                                          nullptr);
2407             return info;
2408         }
2409         case GL_R16_EXT:
2410         {
2411             static constexpr Format info(GL_R16_EXT,
2412                                          angle::FormatID::R16_UNORM,
2413                                          DXGI_FORMAT_R16_UNORM,
2414                                          DXGI_FORMAT_R16_UNORM,
2415                                          DXGI_FORMAT_UNKNOWN,
2416                                          DXGI_FORMAT_R16_UNORM,
2417                                          DXGI_FORMAT_UNKNOWN,
2418                                          DXGI_FORMAT_R16_UNORM,
2419                                          DXGI_FORMAT_UNKNOWN,
2420                                          DXGI_FORMAT_UNKNOWN,
2421                                          DXGI_FORMAT_R16_TYPELESS,
2422                                          GL_RGBA16_EXT,
2423                                          nullptr);
2424             return info;
2425         }
2426         case GL_R16_SNORM_EXT:
2427         {
2428             static constexpr Format info(GL_R16_SNORM_EXT,
2429                                          angle::FormatID::R16_SNORM,
2430                                          DXGI_FORMAT_R16_SNORM,
2431                                          DXGI_FORMAT_R16_SNORM,
2432                                          DXGI_FORMAT_UNKNOWN,
2433                                          DXGI_FORMAT_R16_SNORM,
2434                                          DXGI_FORMAT_UNKNOWN,
2435                                          DXGI_FORMAT_R16_SNORM,
2436                                          DXGI_FORMAT_UNKNOWN,
2437                                          DXGI_FORMAT_UNKNOWN,
2438                                          DXGI_FORMAT_R16_TYPELESS,
2439                                          GL_RGBA16_SNORM_EXT,
2440                                          nullptr);
2441             return info;
2442         }
2443         case GL_R32F:
2444         {
2445             static constexpr Format info(GL_R32F,
2446                                          angle::FormatID::R32_FLOAT,
2447                                          DXGI_FORMAT_R32_FLOAT,
2448                                          DXGI_FORMAT_R32_FLOAT,
2449                                          DXGI_FORMAT_R32_FLOAT,
2450                                          DXGI_FORMAT_R32_FLOAT,
2451                                          DXGI_FORMAT_UNKNOWN,
2452                                          DXGI_FORMAT_R32_FLOAT,
2453                                          DXGI_FORMAT_UNKNOWN,
2454                                          DXGI_FORMAT_UNKNOWN,
2455                                          DXGI_FORMAT_R32_TYPELESS,
2456                                          GL_RGBA32F,
2457                                          nullptr);
2458             return info;
2459         }
2460         case GL_R32I:
2461         {
2462             static constexpr Format info(GL_R32I,
2463                                          angle::FormatID::R32_SINT,
2464                                          DXGI_FORMAT_R32_SINT,
2465                                          DXGI_FORMAT_R32_SINT,
2466                                          DXGI_FORMAT_R32_SINT,
2467                                          DXGI_FORMAT_R32_SINT,
2468                                          DXGI_FORMAT_UNKNOWN,
2469                                          DXGI_FORMAT_R32_SINT,
2470                                          DXGI_FORMAT_UNKNOWN,
2471                                          DXGI_FORMAT_UNKNOWN,
2472                                          DXGI_FORMAT_R32_TYPELESS,
2473                                          GL_RGBA32I,
2474                                          nullptr);
2475             return info;
2476         }
2477         case GL_R32UI:
2478         {
2479             static constexpr Format info(GL_R32UI,
2480                                          angle::FormatID::R32_UINT,
2481                                          DXGI_FORMAT_R32_UINT,
2482                                          DXGI_FORMAT_R32_UINT,
2483                                          DXGI_FORMAT_R32_UINT,
2484                                          DXGI_FORMAT_R32_UINT,
2485                                          DXGI_FORMAT_UNKNOWN,
2486                                          DXGI_FORMAT_R32_UINT,
2487                                          DXGI_FORMAT_UNKNOWN,
2488                                          DXGI_FORMAT_UNKNOWN,
2489                                          DXGI_FORMAT_R32_TYPELESS,
2490                                          GL_RGBA32I,
2491                                          nullptr);
2492             return info;
2493         }
2494         case GL_R8:
2495         {
2496             static constexpr Format info(GL_R8,
2497                                          angle::FormatID::R8_UNORM,
2498                                          DXGI_FORMAT_R8_UNORM,
2499                                          DXGI_FORMAT_R8_UNORM,
2500                                          DXGI_FORMAT_UNKNOWN,
2501                                          DXGI_FORMAT_R8_UNORM,
2502                                          DXGI_FORMAT_UNKNOWN,
2503                                          DXGI_FORMAT_R8_UNORM,
2504                                          DXGI_FORMAT_UNKNOWN,
2505                                          DXGI_FORMAT_UNKNOWN,
2506                                          DXGI_FORMAT_R8_TYPELESS,
2507                                          GL_RGBA8,
2508                                          nullptr);
2509             return info;
2510         }
2511         case GL_R8I:
2512         {
2513             static constexpr Format info(GL_R8I,
2514                                          angle::FormatID::R8_SINT,
2515                                          DXGI_FORMAT_R8_SINT,
2516                                          DXGI_FORMAT_R8_SINT,
2517                                          DXGI_FORMAT_UNKNOWN,
2518                                          DXGI_FORMAT_R8_SINT,
2519                                          DXGI_FORMAT_UNKNOWN,
2520                                          DXGI_FORMAT_R8_SINT,
2521                                          DXGI_FORMAT_UNKNOWN,
2522                                          DXGI_FORMAT_UNKNOWN,
2523                                          DXGI_FORMAT_R8_TYPELESS,
2524                                          GL_RGBA8I,
2525                                          nullptr);
2526             return info;
2527         }
2528         case GL_R8UI:
2529         {
2530             static constexpr Format info(GL_R8UI,
2531                                          angle::FormatID::R8_UINT,
2532                                          DXGI_FORMAT_R8_UINT,
2533                                          DXGI_FORMAT_R8_UINT,
2534                                          DXGI_FORMAT_UNKNOWN,
2535                                          DXGI_FORMAT_R8_UINT,
2536                                          DXGI_FORMAT_UNKNOWN,
2537                                          DXGI_FORMAT_R8_UINT,
2538                                          DXGI_FORMAT_UNKNOWN,
2539                                          DXGI_FORMAT_UNKNOWN,
2540                                          DXGI_FORMAT_R8_TYPELESS,
2541                                          GL_RGBA8I,
2542                                          nullptr);
2543             return info;
2544         }
2545         case GL_R8_SNORM:
2546         {
2547             static constexpr Format info(GL_R8_SNORM,
2548                                          angle::FormatID::R8_SNORM,
2549                                          DXGI_FORMAT_R8_SNORM,
2550                                          DXGI_FORMAT_R8_SNORM,
2551                                          DXGI_FORMAT_UNKNOWN,
2552                                          DXGI_FORMAT_R8_SNORM,
2553                                          DXGI_FORMAT_UNKNOWN,
2554                                          DXGI_FORMAT_R8_SNORM,
2555                                          DXGI_FORMAT_UNKNOWN,
2556                                          DXGI_FORMAT_UNKNOWN,
2557                                          DXGI_FORMAT_R8_TYPELESS,
2558                                          GL_RGBA8_SNORM,
2559                                          nullptr);
2560             return info;
2561         }
2562         case GL_RG16F:
2563         {
2564             static constexpr Format info(GL_RG16F,
2565                                          angle::FormatID::R16G16_FLOAT,
2566                                          DXGI_FORMAT_R16G16_FLOAT,
2567                                          DXGI_FORMAT_R16G16_FLOAT,
2568                                          DXGI_FORMAT_UNKNOWN,
2569                                          DXGI_FORMAT_R16G16_FLOAT,
2570                                          DXGI_FORMAT_UNKNOWN,
2571                                          DXGI_FORMAT_R16G16_FLOAT,
2572                                          DXGI_FORMAT_UNKNOWN,
2573                                          DXGI_FORMAT_UNKNOWN,
2574                                          DXGI_FORMAT_R16G16_TYPELESS,
2575                                          GL_RGBA16F_EXT,
2576                                          nullptr);
2577             return info;
2578         }
2579         case GL_RG16I:
2580         {
2581             static constexpr Format info(GL_RG16I,
2582                                          angle::FormatID::R16G16_SINT,
2583                                          DXGI_FORMAT_R16G16_SINT,
2584                                          DXGI_FORMAT_R16G16_SINT,
2585                                          DXGI_FORMAT_UNKNOWN,
2586                                          DXGI_FORMAT_R16G16_SINT,
2587                                          DXGI_FORMAT_UNKNOWN,
2588                                          DXGI_FORMAT_R16G16_SINT,
2589                                          DXGI_FORMAT_UNKNOWN,
2590                                          DXGI_FORMAT_UNKNOWN,
2591                                          DXGI_FORMAT_R16G16_TYPELESS,
2592                                          GL_RGBA16I,
2593                                          nullptr);
2594             return info;
2595         }
2596         case GL_RG16UI:
2597         {
2598             static constexpr Format info(GL_RG16UI,
2599                                          angle::FormatID::R16G16_UINT,
2600                                          DXGI_FORMAT_R16G16_UINT,
2601                                          DXGI_FORMAT_R16G16_UINT,
2602                                          DXGI_FORMAT_UNKNOWN,
2603                                          DXGI_FORMAT_R16G16_UINT,
2604                                          DXGI_FORMAT_UNKNOWN,
2605                                          DXGI_FORMAT_R16G16_UINT,
2606                                          DXGI_FORMAT_UNKNOWN,
2607                                          DXGI_FORMAT_UNKNOWN,
2608                                          DXGI_FORMAT_R16G16_TYPELESS,
2609                                          GL_RGBA16I,
2610                                          nullptr);
2611             return info;
2612         }
2613         case GL_RG16_EXT:
2614         {
2615             static constexpr Format info(GL_RG16_EXT,
2616                                          angle::FormatID::R16G16_UNORM,
2617                                          DXGI_FORMAT_R16G16_UNORM,
2618                                          DXGI_FORMAT_R16G16_UNORM,
2619                                          DXGI_FORMAT_UNKNOWN,
2620                                          DXGI_FORMAT_R16G16_UNORM,
2621                                          DXGI_FORMAT_UNKNOWN,
2622                                          DXGI_FORMAT_R16G16_UNORM,
2623                                          DXGI_FORMAT_UNKNOWN,
2624                                          DXGI_FORMAT_UNKNOWN,
2625                                          DXGI_FORMAT_R16G16_TYPELESS,
2626                                          GL_RGBA16_EXT,
2627                                          nullptr);
2628             return info;
2629         }
2630         case GL_RG16_SNORM_EXT:
2631         {
2632             static constexpr Format info(GL_RG16_SNORM_EXT,
2633                                          angle::FormatID::R16G16_SNORM,
2634                                          DXGI_FORMAT_R16G16_SNORM,
2635                                          DXGI_FORMAT_R16G16_SNORM,
2636                                          DXGI_FORMAT_UNKNOWN,
2637                                          DXGI_FORMAT_R16G16_SNORM,
2638                                          DXGI_FORMAT_UNKNOWN,
2639                                          DXGI_FORMAT_R16G16_SNORM,
2640                                          DXGI_FORMAT_UNKNOWN,
2641                                          DXGI_FORMAT_UNKNOWN,
2642                                          DXGI_FORMAT_R16G16_TYPELESS,
2643                                          GL_RGBA16_SNORM_EXT,
2644                                          nullptr);
2645             return info;
2646         }
2647         case GL_RG32F:
2648         {
2649             static constexpr Format info(GL_RG32F,
2650                                          angle::FormatID::R32G32_FLOAT,
2651                                          DXGI_FORMAT_R32G32_FLOAT,
2652                                          DXGI_FORMAT_R32G32_FLOAT,
2653                                          DXGI_FORMAT_UNKNOWN,
2654                                          DXGI_FORMAT_R32G32_FLOAT,
2655                                          DXGI_FORMAT_UNKNOWN,
2656                                          DXGI_FORMAT_R32G32_FLOAT,
2657                                          DXGI_FORMAT_UNKNOWN,
2658                                          DXGI_FORMAT_UNKNOWN,
2659                                          DXGI_FORMAT_R32G32_TYPELESS,
2660                                          GL_RGBA32F,
2661                                          nullptr);
2662             return info;
2663         }
2664         case GL_RG32I:
2665         {
2666             static constexpr Format info(GL_RG32I,
2667                                          angle::FormatID::R32G32_SINT,
2668                                          DXGI_FORMAT_R32G32_SINT,
2669                                          DXGI_FORMAT_R32G32_SINT,
2670                                          DXGI_FORMAT_UNKNOWN,
2671                                          DXGI_FORMAT_R32G32_SINT,
2672                                          DXGI_FORMAT_UNKNOWN,
2673                                          DXGI_FORMAT_R32G32_SINT,
2674                                          DXGI_FORMAT_UNKNOWN,
2675                                          DXGI_FORMAT_UNKNOWN,
2676                                          DXGI_FORMAT_R32G32_TYPELESS,
2677                                          GL_RGBA32I,
2678                                          nullptr);
2679             return info;
2680         }
2681         case GL_RG32UI:
2682         {
2683             static constexpr Format info(GL_RG32UI,
2684                                          angle::FormatID::R32G32_UINT,
2685                                          DXGI_FORMAT_R32G32_UINT,
2686                                          DXGI_FORMAT_R32G32_UINT,
2687                                          DXGI_FORMAT_UNKNOWN,
2688                                          DXGI_FORMAT_R32G32_UINT,
2689                                          DXGI_FORMAT_UNKNOWN,
2690                                          DXGI_FORMAT_R32G32_UINT,
2691                                          DXGI_FORMAT_UNKNOWN,
2692                                          DXGI_FORMAT_UNKNOWN,
2693                                          DXGI_FORMAT_R32G32_TYPELESS,
2694                                          GL_RGBA32I,
2695                                          nullptr);
2696             return info;
2697         }
2698         case GL_RG8:
2699         {
2700             static constexpr Format info(GL_RG8,
2701                                          angle::FormatID::R8G8_UNORM,
2702                                          DXGI_FORMAT_R8G8_UNORM,
2703                                          DXGI_FORMAT_R8G8_UNORM,
2704                                          DXGI_FORMAT_UNKNOWN,
2705                                          DXGI_FORMAT_R8G8_UNORM,
2706                                          DXGI_FORMAT_UNKNOWN,
2707                                          DXGI_FORMAT_R8G8_UNORM,
2708                                          DXGI_FORMAT_UNKNOWN,
2709                                          DXGI_FORMAT_UNKNOWN,
2710                                          DXGI_FORMAT_R8G8_TYPELESS,
2711                                          GL_RGBA8,
2712                                          nullptr);
2713             return info;
2714         }
2715         case GL_RG8I:
2716         {
2717             static constexpr Format info(GL_RG8I,
2718                                          angle::FormatID::R8G8_SINT,
2719                                          DXGI_FORMAT_R8G8_SINT,
2720                                          DXGI_FORMAT_R8G8_SINT,
2721                                          DXGI_FORMAT_UNKNOWN,
2722                                          DXGI_FORMAT_R8G8_SINT,
2723                                          DXGI_FORMAT_UNKNOWN,
2724                                          DXGI_FORMAT_R8G8_SINT,
2725                                          DXGI_FORMAT_UNKNOWN,
2726                                          DXGI_FORMAT_UNKNOWN,
2727                                          DXGI_FORMAT_R8G8_TYPELESS,
2728                                          GL_RGBA8I,
2729                                          nullptr);
2730             return info;
2731         }
2732         case GL_RG8UI:
2733         {
2734             static constexpr Format info(GL_RG8UI,
2735                                          angle::FormatID::R8G8_UINT,
2736                                          DXGI_FORMAT_R8G8_UINT,
2737                                          DXGI_FORMAT_R8G8_UINT,
2738                                          DXGI_FORMAT_UNKNOWN,
2739                                          DXGI_FORMAT_R8G8_UINT,
2740                                          DXGI_FORMAT_UNKNOWN,
2741                                          DXGI_FORMAT_R8G8_UINT,
2742                                          DXGI_FORMAT_UNKNOWN,
2743                                          DXGI_FORMAT_UNKNOWN,
2744                                          DXGI_FORMAT_R8G8_TYPELESS,
2745                                          GL_RGBA8I,
2746                                          nullptr);
2747             return info;
2748         }
2749         case GL_RG8_SNORM:
2750         {
2751             static constexpr Format info(GL_RG8_SNORM,
2752                                          angle::FormatID::R8G8_SNORM,
2753                                          DXGI_FORMAT_R8G8_SNORM,
2754                                          DXGI_FORMAT_R8G8_SNORM,
2755                                          DXGI_FORMAT_UNKNOWN,
2756                                          DXGI_FORMAT_R8G8_SNORM,
2757                                          DXGI_FORMAT_UNKNOWN,
2758                                          DXGI_FORMAT_R8G8_SNORM,
2759                                          DXGI_FORMAT_UNKNOWN,
2760                                          DXGI_FORMAT_UNKNOWN,
2761                                          DXGI_FORMAT_R8G8_TYPELESS,
2762                                          GL_RGBA8_SNORM,
2763                                          nullptr);
2764             return info;
2765         }
2766         case GL_RGB:
2767         {
2768             static constexpr Format info(GL_RGB,
2769                                          angle::FormatID::R8G8B8A8_UNORM,
2770                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2771                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2772                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2773                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2774                                          DXGI_FORMAT_UNKNOWN,
2775                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2776                                          DXGI_FORMAT_UNKNOWN,
2777                                          DXGI_FORMAT_UNKNOWN,
2778                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
2779                                          GL_RGBA8,
2780                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
2781             return info;
2782         }
2783         case GL_RGB10_A2:
2784         {
2785             static constexpr Format info(GL_RGB10_A2,
2786                                          angle::FormatID::R10G10B10A2_UNORM,
2787                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2788                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2789                                          DXGI_FORMAT_UNKNOWN,
2790                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2791                                          DXGI_FORMAT_UNKNOWN,
2792                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2793                                          DXGI_FORMAT_UNKNOWN,
2794                                          DXGI_FORMAT_UNKNOWN,
2795                                          DXGI_FORMAT_R10G10B10A2_TYPELESS,
2796                                          GL_RGBA16_EXT,
2797                                          nullptr);
2798             return info;
2799         }
2800         case GL_RGB10_A2UI:
2801         {
2802             static constexpr Format info(GL_RGB10_A2UI,
2803                                          angle::FormatID::R10G10B10A2_UINT,
2804                                          DXGI_FORMAT_R10G10B10A2_UINT,
2805                                          DXGI_FORMAT_R10G10B10A2_UINT,
2806                                          DXGI_FORMAT_UNKNOWN,
2807                                          DXGI_FORMAT_R10G10B10A2_UINT,
2808                                          DXGI_FORMAT_UNKNOWN,
2809                                          DXGI_FORMAT_R10G10B10A2_UINT,
2810                                          DXGI_FORMAT_UNKNOWN,
2811                                          DXGI_FORMAT_UNKNOWN,
2812                                          DXGI_FORMAT_R10G10B10A2_TYPELESS,
2813                                          GL_RGBA16I,
2814                                          nullptr);
2815             return info;
2816         }
2817         case GL_RGB10_EXT:
2818         {
2819             static constexpr Format info(GL_RGB10_EXT,
2820                                          angle::FormatID::R10G10B10X2_UNORM,
2821                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2822                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2823                                          DXGI_FORMAT_UNKNOWN,
2824                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2825                                          DXGI_FORMAT_UNKNOWN,
2826                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2827                                          DXGI_FORMAT_UNKNOWN,
2828                                          DXGI_FORMAT_UNKNOWN,
2829                                          DXGI_FORMAT_R10G10B10A2_TYPELESS,
2830                                          GL_RGBA16_EXT,
2831                                          nullptr);
2832             return info;
2833         }
2834         case GL_RGB16F:
2835         {
2836             static constexpr Format info(GL_RGB16F,
2837                                          angle::FormatID::R16G16B16A16_FLOAT,
2838                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2839                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2840                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2841                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2842                                          DXGI_FORMAT_UNKNOWN,
2843                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2844                                          DXGI_FORMAT_UNKNOWN,
2845                                          DXGI_FORMAT_UNKNOWN,
2846                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
2847                                          GL_RGBA16F,
2848                                          Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
2849             return info;
2850         }
2851         case GL_RGB16I:
2852         {
2853             static constexpr Format info(GL_RGB16I,
2854                                          angle::FormatID::R16G16B16A16_SINT,
2855                                          DXGI_FORMAT_R16G16B16A16_SINT,
2856                                          DXGI_FORMAT_R16G16B16A16_SINT,
2857                                          DXGI_FORMAT_R16G16B16A16_SINT,
2858                                          DXGI_FORMAT_R16G16B16A16_SINT,
2859                                          DXGI_FORMAT_UNKNOWN,
2860                                          DXGI_FORMAT_R16G16B16A16_SINT,
2861                                          DXGI_FORMAT_UNKNOWN,
2862                                          DXGI_FORMAT_UNKNOWN,
2863                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
2864                                          GL_RGBA16I,
2865                                          Initialize4ComponentData<GLshort, 0x0000, 0x0000, 0x0000, 0x0001>);
2866             return info;
2867         }
2868         case GL_RGB16UI:
2869         {
2870             static constexpr Format info(GL_RGB16UI,
2871                                          angle::FormatID::R16G16B16A16_UINT,
2872                                          DXGI_FORMAT_R16G16B16A16_UINT,
2873                                          DXGI_FORMAT_R16G16B16A16_UINT,
2874                                          DXGI_FORMAT_R16G16B16A16_UINT,
2875                                          DXGI_FORMAT_R16G16B16A16_UINT,
2876                                          DXGI_FORMAT_UNKNOWN,
2877                                          DXGI_FORMAT_R16G16B16A16_UINT,
2878                                          DXGI_FORMAT_UNKNOWN,
2879                                          DXGI_FORMAT_UNKNOWN,
2880                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
2881                                          GL_RGBA16UI,
2882                                          Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x0001>);
2883             return info;
2884         }
2885         case GL_RGB16_EXT:
2886         {
2887             static constexpr Format info(GL_RGB16_EXT,
2888                                          angle::FormatID::R16G16B16A16_UNORM,
2889                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2890                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2891                                          DXGI_FORMAT_UNKNOWN,
2892                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2893                                          DXGI_FORMAT_UNKNOWN,
2894                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2895                                          DXGI_FORMAT_UNKNOWN,
2896                                          DXGI_FORMAT_UNKNOWN,
2897                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
2898                                          GL_RGBA16_EXT,
2899                                          Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0xFFFF>);
2900             return info;
2901         }
2902         case GL_RGB16_SNORM_EXT:
2903         {
2904             static constexpr Format info(GL_RGB16_SNORM_EXT,
2905                                          angle::FormatID::R16G16B16A16_SNORM,
2906                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2907                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2908                                          DXGI_FORMAT_UNKNOWN,
2909                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2910                                          DXGI_FORMAT_UNKNOWN,
2911                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2912                                          DXGI_FORMAT_UNKNOWN,
2913                                          DXGI_FORMAT_UNKNOWN,
2914                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
2915                                          GL_RGBA16_SNORM_EXT,
2916                                          Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x7FFF>);
2917             return info;
2918         }
2919         case GL_RGB32F:
2920         {
2921             static constexpr Format info(GL_RGB32F,
2922                                          angle::FormatID::R32G32B32A32_FLOAT,
2923                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2924                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2925                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2926                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2927                                          DXGI_FORMAT_UNKNOWN,
2928                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2929                                          DXGI_FORMAT_UNKNOWN,
2930                                          DXGI_FORMAT_UNKNOWN,
2931                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
2932                                          GL_RGBA32F,
2933                                          Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
2934             return info;
2935         }
2936         case GL_RGB32I:
2937         {
2938             static constexpr Format info(GL_RGB32I,
2939                                          angle::FormatID::R32G32B32A32_SINT,
2940                                          DXGI_FORMAT_R32G32B32A32_SINT,
2941                                          DXGI_FORMAT_R32G32B32A32_SINT,
2942                                          DXGI_FORMAT_R32G32B32A32_SINT,
2943                                          DXGI_FORMAT_R32G32B32A32_SINT,
2944                                          DXGI_FORMAT_UNKNOWN,
2945                                          DXGI_FORMAT_R32G32B32A32_SINT,
2946                                          DXGI_FORMAT_UNKNOWN,
2947                                          DXGI_FORMAT_UNKNOWN,
2948                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
2949                                          GL_RGBA32I,
2950                                          Initialize4ComponentData<GLint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
2951             return info;
2952         }
2953         case GL_RGB32UI:
2954         {
2955             static constexpr Format info(GL_RGB32UI,
2956                                          angle::FormatID::R32G32B32A32_UINT,
2957                                          DXGI_FORMAT_R32G32B32A32_UINT,
2958                                          DXGI_FORMAT_R32G32B32A32_UINT,
2959                                          DXGI_FORMAT_R32G32B32A32_UINT,
2960                                          DXGI_FORMAT_R32G32B32A32_UINT,
2961                                          DXGI_FORMAT_UNKNOWN,
2962                                          DXGI_FORMAT_R32G32B32A32_UINT,
2963                                          DXGI_FORMAT_UNKNOWN,
2964                                          DXGI_FORMAT_UNKNOWN,
2965                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
2966                                          GL_RGBA32UI,
2967                                          Initialize4ComponentData<GLuint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
2968             return info;
2969         }
2970         case GL_RGB565:
2971         {
2972             if (SupportsFormat(DXGI_FORMAT_B5G6R5_UNORM, deviceCaps))
2973             {
2974                 static constexpr Format info(GL_RGB565,
2975                                              angle::FormatID::B5G6R5_UNORM,
2976                                              DXGI_FORMAT_B5G6R5_UNORM,
2977                                              DXGI_FORMAT_B5G6R5_UNORM,
2978                                              DXGI_FORMAT_UNKNOWN,
2979                                              DXGI_FORMAT_B5G6R5_UNORM,
2980                                              DXGI_FORMAT_UNKNOWN,
2981                                              DXGI_FORMAT_B5G6R5_UNORM,
2982                                              DXGI_FORMAT_UNKNOWN,
2983                                              DXGI_FORMAT_UNKNOWN,
2984                                              DXGI_FORMAT_UNKNOWN,
2985                                              GL_RGBA8,
2986                                              nullptr);
2987                 return info;
2988             }
2989             else
2990             {
2991                 static constexpr Format info(GL_RGB565,
2992                                              angle::FormatID::R8G8B8A8_UNORM,
2993                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2994                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2995                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2996                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2997                                              DXGI_FORMAT_UNKNOWN,
2998                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2999                                              DXGI_FORMAT_UNKNOWN,
3000                                              DXGI_FORMAT_UNKNOWN,
3001                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
3002                                              GL_RGBA8,
3003                                              Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
3004                 return info;
3005             }
3006         }
3007         case GL_RGB5_A1:
3008         {
3009             if (SupportsFormat(DXGI_FORMAT_B5G5R5A1_UNORM, deviceCaps))
3010             {
3011                 static constexpr Format info(GL_RGB5_A1,
3012                                              angle::FormatID::B5G5R5A1_UNORM,
3013                                              DXGI_FORMAT_B5G5R5A1_UNORM,
3014                                              DXGI_FORMAT_B5G5R5A1_UNORM,
3015                                              DXGI_FORMAT_UNKNOWN,
3016                                              DXGI_FORMAT_B5G5R5A1_UNORM,
3017                                              DXGI_FORMAT_UNKNOWN,
3018                                              DXGI_FORMAT_B5G5R5A1_UNORM,
3019                                              DXGI_FORMAT_UNKNOWN,
3020                                              DXGI_FORMAT_UNKNOWN,
3021                                              DXGI_FORMAT_UNKNOWN,
3022                                              GL_RGBA8,
3023                                              nullptr);
3024                 return info;
3025             }
3026             else
3027             {
3028                 static constexpr Format info(GL_RGB5_A1,
3029                                              angle::FormatID::R8G8B8A8_UNORM,
3030                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3031                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3032                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3033                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3034                                              DXGI_FORMAT_UNKNOWN,
3035                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3036                                              DXGI_FORMAT_UNKNOWN,
3037                                              DXGI_FORMAT_UNKNOWN,
3038                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
3039                                              GL_RGBA8,
3040                                              nullptr);
3041                 return info;
3042             }
3043         }
3044         case GL_RGB8:
3045         {
3046             static constexpr Format info(GL_RGB8,
3047                                          angle::FormatID::R8G8B8A8_UNORM,
3048                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3049                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3050                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3051                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3052                                          DXGI_FORMAT_UNKNOWN,
3053                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3054                                          DXGI_FORMAT_UNKNOWN,
3055                                          DXGI_FORMAT_UNKNOWN,
3056                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3057                                          GL_RGBA8,
3058                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
3059             return info;
3060         }
3061         case GL_RGB8I:
3062         {
3063             static constexpr Format info(GL_RGB8I,
3064                                          angle::FormatID::R8G8B8A8_SINT,
3065                                          DXGI_FORMAT_R8G8B8A8_SINT,
3066                                          DXGI_FORMAT_R8G8B8A8_SINT,
3067                                          DXGI_FORMAT_R8G8B8A8_SINT,
3068                                          DXGI_FORMAT_R8G8B8A8_SINT,
3069                                          DXGI_FORMAT_UNKNOWN,
3070                                          DXGI_FORMAT_R8G8B8A8_SINT,
3071                                          DXGI_FORMAT_UNKNOWN,
3072                                          DXGI_FORMAT_UNKNOWN,
3073                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3074                                          GL_RGBA8I,
3075                                          Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x01>);
3076             return info;
3077         }
3078         case GL_RGB8UI:
3079         {
3080             static constexpr Format info(GL_RGB8UI,
3081                                          angle::FormatID::R8G8B8A8_UINT,
3082                                          DXGI_FORMAT_R8G8B8A8_UINT,
3083                                          DXGI_FORMAT_R8G8B8A8_UINT,
3084                                          DXGI_FORMAT_R8G8B8A8_UINT,
3085                                          DXGI_FORMAT_R8G8B8A8_UINT,
3086                                          DXGI_FORMAT_UNKNOWN,
3087                                          DXGI_FORMAT_R8G8B8A8_UINT,
3088                                          DXGI_FORMAT_UNKNOWN,
3089                                          DXGI_FORMAT_UNKNOWN,
3090                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3091                                          GL_RGBA8UI,
3092                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0x01>);
3093             return info;
3094         }
3095         case GL_RGB8_SNORM:
3096         {
3097             static constexpr Format info(GL_RGB8_SNORM,
3098                                          angle::FormatID::R8G8B8A8_SNORM,
3099                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3100                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3101                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3102                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3103                                          DXGI_FORMAT_UNKNOWN,
3104                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3105                                          DXGI_FORMAT_UNKNOWN,
3106                                          DXGI_FORMAT_UNKNOWN,
3107                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3108                                          GL_RGBA8_SNORM,
3109                                          Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x7F>);
3110             return info;
3111         }
3112         case GL_RGB9_E5:
3113         {
3114             static constexpr Format info(GL_RGB9_E5,
3115                                          angle::FormatID::R9G9B9E5_SHAREDEXP,
3116                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
3117                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
3118                                          DXGI_FORMAT_UNKNOWN,
3119                                          DXGI_FORMAT_UNKNOWN,
3120                                          DXGI_FORMAT_UNKNOWN,
3121                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
3122                                          DXGI_FORMAT_UNKNOWN,
3123                                          DXGI_FORMAT_UNKNOWN,
3124                                          DXGI_FORMAT_UNKNOWN,
3125                                          GL_RGBA16F_EXT,
3126                                          nullptr);
3127             return info;
3128         }
3129         case GL_RGBA:
3130         {
3131             static constexpr Format info(GL_RGBA,
3132                                          angle::FormatID::R8G8B8A8_UNORM,
3133                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3134                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3135                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3136                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3137                                          DXGI_FORMAT_UNKNOWN,
3138                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3139                                          DXGI_FORMAT_UNKNOWN,
3140                                          DXGI_FORMAT_UNKNOWN,
3141                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3142                                          GL_RGBA8,
3143                                          nullptr);
3144             return info;
3145         }
3146         case GL_RGBA16F:
3147         {
3148             static constexpr Format info(GL_RGBA16F,
3149                                          angle::FormatID::R16G16B16A16_FLOAT,
3150                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
3151                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
3152                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
3153                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
3154                                          DXGI_FORMAT_UNKNOWN,
3155                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
3156                                          DXGI_FORMAT_UNKNOWN,
3157                                          DXGI_FORMAT_UNKNOWN,
3158                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
3159                                          GL_RGBA16F,
3160                                          nullptr);
3161             return info;
3162         }
3163         case GL_RGBA16I:
3164         {
3165             static constexpr Format info(GL_RGBA16I,
3166                                          angle::FormatID::R16G16B16A16_SINT,
3167                                          DXGI_FORMAT_R16G16B16A16_SINT,
3168                                          DXGI_FORMAT_R16G16B16A16_SINT,
3169                                          DXGI_FORMAT_R16G16B16A16_SINT,
3170                                          DXGI_FORMAT_R16G16B16A16_SINT,
3171                                          DXGI_FORMAT_UNKNOWN,
3172                                          DXGI_FORMAT_R16G16B16A16_SINT,
3173                                          DXGI_FORMAT_UNKNOWN,
3174                                          DXGI_FORMAT_UNKNOWN,
3175                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
3176                                          GL_RGBA16I,
3177                                          nullptr);
3178             return info;
3179         }
3180         case GL_RGBA16UI:
3181         {
3182             static constexpr Format info(GL_RGBA16UI,
3183                                          angle::FormatID::R16G16B16A16_UINT,
3184                                          DXGI_FORMAT_R16G16B16A16_UINT,
3185                                          DXGI_FORMAT_R16G16B16A16_UINT,
3186                                          DXGI_FORMAT_R16G16B16A16_UINT,
3187                                          DXGI_FORMAT_R16G16B16A16_UINT,
3188                                          DXGI_FORMAT_UNKNOWN,
3189                                          DXGI_FORMAT_R16G16B16A16_UINT,
3190                                          DXGI_FORMAT_UNKNOWN,
3191                                          DXGI_FORMAT_UNKNOWN,
3192                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
3193                                          GL_RGBA16UI,
3194                                          nullptr);
3195             return info;
3196         }
3197         case GL_RGBA16_EXT:
3198         {
3199             static constexpr Format info(GL_RGBA16_EXT,
3200                                          angle::FormatID::R16G16B16A16_UNORM,
3201                                          DXGI_FORMAT_R16G16B16A16_UNORM,
3202                                          DXGI_FORMAT_R16G16B16A16_UNORM,
3203                                          DXGI_FORMAT_UNKNOWN,
3204                                          DXGI_FORMAT_R16G16B16A16_UNORM,
3205                                          DXGI_FORMAT_UNKNOWN,
3206                                          DXGI_FORMAT_R16G16B16A16_UNORM,
3207                                          DXGI_FORMAT_UNKNOWN,
3208                                          DXGI_FORMAT_UNKNOWN,
3209                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
3210                                          GL_RGBA16_EXT,
3211                                          nullptr);
3212             return info;
3213         }
3214         case GL_RGBA16_SNORM_EXT:
3215         {
3216             static constexpr Format info(GL_RGBA16_SNORM_EXT,
3217                                          angle::FormatID::R16G16B16A16_SNORM,
3218                                          DXGI_FORMAT_R16G16B16A16_SNORM,
3219                                          DXGI_FORMAT_R16G16B16A16_SNORM,
3220                                          DXGI_FORMAT_UNKNOWN,
3221                                          DXGI_FORMAT_R16G16B16A16_SNORM,
3222                                          DXGI_FORMAT_UNKNOWN,
3223                                          DXGI_FORMAT_R16G16B16A16_SNORM,
3224                                          DXGI_FORMAT_UNKNOWN,
3225                                          DXGI_FORMAT_UNKNOWN,
3226                                          DXGI_FORMAT_R16G16B16A16_TYPELESS,
3227                                          GL_RGBA16_SNORM_EXT,
3228                                          nullptr);
3229             return info;
3230         }
3231         case GL_RGBA32F:
3232         {
3233             static constexpr Format info(GL_RGBA32F,
3234                                          angle::FormatID::R32G32B32A32_FLOAT,
3235                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
3236                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
3237                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
3238                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
3239                                          DXGI_FORMAT_UNKNOWN,
3240                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
3241                                          DXGI_FORMAT_UNKNOWN,
3242                                          DXGI_FORMAT_UNKNOWN,
3243                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
3244                                          GL_RGBA32F,
3245                                          nullptr);
3246             return info;
3247         }
3248         case GL_RGBA32I:
3249         {
3250             static constexpr Format info(GL_RGBA32I,
3251                                          angle::FormatID::R32G32B32A32_SINT,
3252                                          DXGI_FORMAT_R32G32B32A32_SINT,
3253                                          DXGI_FORMAT_R32G32B32A32_SINT,
3254                                          DXGI_FORMAT_R32G32B32A32_SINT,
3255                                          DXGI_FORMAT_R32G32B32A32_SINT,
3256                                          DXGI_FORMAT_UNKNOWN,
3257                                          DXGI_FORMAT_R32G32B32A32_SINT,
3258                                          DXGI_FORMAT_UNKNOWN,
3259                                          DXGI_FORMAT_UNKNOWN,
3260                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
3261                                          GL_RGBA32I,
3262                                          nullptr);
3263             return info;
3264         }
3265         case GL_RGBA32UI:
3266         {
3267             static constexpr Format info(GL_RGBA32UI,
3268                                          angle::FormatID::R32G32B32A32_UINT,
3269                                          DXGI_FORMAT_R32G32B32A32_UINT,
3270                                          DXGI_FORMAT_R32G32B32A32_UINT,
3271                                          DXGI_FORMAT_R32G32B32A32_UINT,
3272                                          DXGI_FORMAT_R32G32B32A32_UINT,
3273                                          DXGI_FORMAT_UNKNOWN,
3274                                          DXGI_FORMAT_R32G32B32A32_UINT,
3275                                          DXGI_FORMAT_UNKNOWN,
3276                                          DXGI_FORMAT_UNKNOWN,
3277                                          DXGI_FORMAT_R32G32B32A32_TYPELESS,
3278                                          GL_RGBA32UI,
3279                                          nullptr);
3280             return info;
3281         }
3282         case GL_RGBA4:
3283         {
3284             if (SupportsFormat(DXGI_FORMAT_B4G4R4A4_UNORM, deviceCaps))
3285             {
3286                 static constexpr Format info(GL_RGBA4,
3287                                              angle::FormatID::B4G4R4A4_UNORM,
3288                                              DXGI_FORMAT_B4G4R4A4_UNORM,
3289                                              DXGI_FORMAT_B4G4R4A4_UNORM,
3290                                              DXGI_FORMAT_UNKNOWN,
3291                                              DXGI_FORMAT_B4G4R4A4_UNORM,
3292                                              DXGI_FORMAT_UNKNOWN,
3293                                              DXGI_FORMAT_B4G4R4A4_UNORM,
3294                                              DXGI_FORMAT_UNKNOWN,
3295                                              DXGI_FORMAT_UNKNOWN,
3296                                              DXGI_FORMAT_UNKNOWN,
3297                                              GL_RGBA4,
3298                                              nullptr);
3299                 return info;
3300             }
3301             else
3302             {
3303                 static constexpr Format info(GL_RGBA4,
3304                                              angle::FormatID::R8G8B8A8_UNORM,
3305                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3306                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3307                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3308                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3309                                              DXGI_FORMAT_UNKNOWN,
3310                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3311                                              DXGI_FORMAT_UNKNOWN,
3312                                              DXGI_FORMAT_UNKNOWN,
3313                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
3314                                              GL_RGBA8,
3315                                              nullptr);
3316                 return info;
3317             }
3318         }
3319         case GL_RGBA8:
3320         {
3321             static constexpr Format info(GL_RGBA8,
3322                                          angle::FormatID::R8G8B8A8_UNORM,
3323                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3324                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3325                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3326                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3327                                          DXGI_FORMAT_UNKNOWN,
3328                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3329                                          DXGI_FORMAT_UNKNOWN,
3330                                          DXGI_FORMAT_UNKNOWN,
3331                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3332                                          GL_RGBA8,
3333                                          nullptr);
3334             return info;
3335         }
3336         case GL_RGBA8I:
3337         {
3338             static constexpr Format info(GL_RGBA8I,
3339                                          angle::FormatID::R8G8B8A8_SINT,
3340                                          DXGI_FORMAT_R8G8B8A8_SINT,
3341                                          DXGI_FORMAT_R8G8B8A8_SINT,
3342                                          DXGI_FORMAT_R8G8B8A8_SINT,
3343                                          DXGI_FORMAT_R8G8B8A8_SINT,
3344                                          DXGI_FORMAT_UNKNOWN,
3345                                          DXGI_FORMAT_R8G8B8A8_SINT,
3346                                          DXGI_FORMAT_UNKNOWN,
3347                                          DXGI_FORMAT_UNKNOWN,
3348                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3349                                          GL_RGBA8I,
3350                                          nullptr);
3351             return info;
3352         }
3353         case GL_RGBA8UI:
3354         {
3355             static constexpr Format info(GL_RGBA8UI,
3356                                          angle::FormatID::R8G8B8A8_UINT,
3357                                          DXGI_FORMAT_R8G8B8A8_UINT,
3358                                          DXGI_FORMAT_R8G8B8A8_UINT,
3359                                          DXGI_FORMAT_R8G8B8A8_UINT,
3360                                          DXGI_FORMAT_R8G8B8A8_UINT,
3361                                          DXGI_FORMAT_UNKNOWN,
3362                                          DXGI_FORMAT_R8G8B8A8_UINT,
3363                                          DXGI_FORMAT_UNKNOWN,
3364                                          DXGI_FORMAT_UNKNOWN,
3365                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3366                                          GL_RGBA8UI,
3367                                          nullptr);
3368             return info;
3369         }
3370         case GL_RGBA8_SNORM:
3371         {
3372             static constexpr Format info(GL_RGBA8_SNORM,
3373                                          angle::FormatID::R8G8B8A8_SNORM,
3374                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3375                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3376                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3377                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3378                                          DXGI_FORMAT_UNKNOWN,
3379                                          DXGI_FORMAT_R8G8B8A8_SNORM,
3380                                          DXGI_FORMAT_UNKNOWN,
3381                                          DXGI_FORMAT_UNKNOWN,
3382                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3383                                          GL_RGBA8_SNORM,
3384                                          nullptr);
3385             return info;
3386         }
3387         case GL_RGBX8_ANGLE:
3388         {
3389             if (OnlyFL11_1Plus(deviceCaps))
3390             {
3391                 static constexpr Format info(GL_RGBX8_ANGLE,
3392                                              angle::FormatID::R8G8B8X8_UNORM,
3393                                              DXGI_FORMAT_B8G8R8X8_UNORM,
3394                                              DXGI_FORMAT_B8G8R8X8_UNORM,
3395                                              DXGI_FORMAT_UNKNOWN,
3396                                              DXGI_FORMAT_B8G8R8X8_UNORM,
3397                                              DXGI_FORMAT_UNKNOWN,
3398                                              DXGI_FORMAT_B8G8R8X8_UNORM,
3399                                              DXGI_FORMAT_UNKNOWN,
3400                                              DXGI_FORMAT_UNKNOWN,
3401                                              DXGI_FORMAT_UNKNOWN,
3402                                              GL_RGBX8_ANGLE,
3403                                              nullptr);
3404                 return info;
3405             }
3406             else
3407             {
3408                 static constexpr Format info(GL_RGBX8_ANGLE,
3409                                              angle::FormatID::R8G8B8A8_UNORM,
3410                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3411                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3412                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3413                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3414                                              DXGI_FORMAT_UNKNOWN,
3415                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3416                                              DXGI_FORMAT_UNKNOWN,
3417                                              DXGI_FORMAT_UNKNOWN,
3418                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
3419                                              GL_RGBA8,
3420                                              nullptr);
3421                 return info;
3422             }
3423         }
3424         case GL_RGBX8_SRGB_ANGLEX:
3425         {
3426             if (OnlyFL11_1Plus(deviceCaps))
3427             {
3428                 static constexpr Format info(GL_RGBX8_SRGB_ANGLEX,
3429                                              angle::FormatID::R8G8B8X8_UNORM_SRGB,
3430                                              DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
3431                                              DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
3432                                              DXGI_FORMAT_UNKNOWN,
3433                                              DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
3434                                              DXGI_FORMAT_UNKNOWN,
3435                                              DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
3436                                              DXGI_FORMAT_UNKNOWN,
3437                                              DXGI_FORMAT_B8G8R8X8_UNORM,
3438                                              DXGI_FORMAT_B8G8R8X8_TYPELESS,
3439                                              GL_RGBX8_SRGB_ANGLEX,
3440                                              nullptr);
3441                 return info;
3442             }
3443             else
3444             {
3445                 static constexpr Format info(GL_RGBX8_SRGB_ANGLEX,
3446                                              angle::FormatID::R8G8B8A8_UNORM_SRGB,
3447                                              DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3448                                              DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3449                                              DXGI_FORMAT_UNKNOWN,
3450                                              DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3451                                              DXGI_FORMAT_UNKNOWN,
3452                                              DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3453                                              DXGI_FORMAT_UNKNOWN,
3454                                              DXGI_FORMAT_R8G8B8A8_UNORM,
3455                                              DXGI_FORMAT_R8G8B8A8_TYPELESS,
3456                                              GL_SRGB8_ALPHA8,
3457                                              nullptr);
3458                 return info;
3459             }
3460         }
3461         case GL_SR8_EXT:
3462         {
3463             static constexpr Format info(GL_SR8_EXT,
3464                                          angle::FormatID::NONE,
3465                                          DXGI_FORMAT_UNKNOWN,
3466                                          DXGI_FORMAT_UNKNOWN,
3467                                          DXGI_FORMAT_UNKNOWN,
3468                                          DXGI_FORMAT_UNKNOWN,
3469                                          DXGI_FORMAT_UNKNOWN,
3470                                          DXGI_FORMAT_UNKNOWN,
3471                                          DXGI_FORMAT_UNKNOWN,
3472                                          DXGI_FORMAT_UNKNOWN,
3473                                          DXGI_FORMAT_UNKNOWN,
3474                                          GL_NONE,
3475                                          nullptr);
3476             return info;
3477         }
3478         case GL_SRG8_EXT:
3479         {
3480             static constexpr Format info(GL_SRG8_EXT,
3481                                          angle::FormatID::NONE,
3482                                          DXGI_FORMAT_UNKNOWN,
3483                                          DXGI_FORMAT_UNKNOWN,
3484                                          DXGI_FORMAT_UNKNOWN,
3485                                          DXGI_FORMAT_UNKNOWN,
3486                                          DXGI_FORMAT_UNKNOWN,
3487                                          DXGI_FORMAT_UNKNOWN,
3488                                          DXGI_FORMAT_UNKNOWN,
3489                                          DXGI_FORMAT_UNKNOWN,
3490                                          DXGI_FORMAT_UNKNOWN,
3491                                          GL_NONE,
3492                                          nullptr);
3493             return info;
3494         }
3495         case GL_SRGB8:
3496         {
3497             static constexpr Format info(GL_SRGB8,
3498                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
3499                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3500                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3501                                          DXGI_FORMAT_UNKNOWN,
3502                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3503                                          DXGI_FORMAT_UNKNOWN,
3504                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3505                                          DXGI_FORMAT_UNKNOWN,
3506                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3507                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3508                                          GL_SRGB8_ALPHA8,
3509                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
3510             return info;
3511         }
3512         case GL_SRGB8_ALPHA8:
3513         {
3514             static constexpr Format info(GL_SRGB8_ALPHA8,
3515                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
3516                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3517                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3518                                          DXGI_FORMAT_UNKNOWN,
3519                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3520                                          DXGI_FORMAT_UNKNOWN,
3521                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
3522                                          DXGI_FORMAT_UNKNOWN,
3523                                          DXGI_FORMAT_R8G8B8A8_UNORM,
3524                                          DXGI_FORMAT_R8G8B8A8_TYPELESS,
3525                                          GL_SRGB8_ALPHA8,
3526                                          nullptr);
3527             return info;
3528         }
3529         case GL_STENCIL_INDEX8:
3530         {
3531             if (OnlyFL10Plus(deviceCaps))
3532             {
3533                 static constexpr Format info(GL_STENCIL_INDEX8,
3534                                              angle::FormatID::D24_UNORM_S8_UINT,
3535                                              DXGI_FORMAT_R24G8_TYPELESS,
3536                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
3537                                              DXGI_FORMAT_UNKNOWN,
3538                                              DXGI_FORMAT_UNKNOWN,
3539                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
3540                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
3541                                              DXGI_FORMAT_X24_TYPELESS_G8_UINT,
3542                                              DXGI_FORMAT_UNKNOWN,
3543                                              DXGI_FORMAT_UNKNOWN,
3544                                              GL_RGBA32F,
3545                                              nullptr);
3546                 return info;
3547             }
3548             else
3549             {
3550                 static constexpr Format info(GL_STENCIL_INDEX8,
3551                                              angle::FormatID::D24_UNORM_S8_UINT,
3552                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
3553                                              DXGI_FORMAT_UNKNOWN,
3554                                              DXGI_FORMAT_UNKNOWN,
3555                                              DXGI_FORMAT_UNKNOWN,
3556                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
3557                                              DXGI_FORMAT_UNKNOWN,
3558                                              DXGI_FORMAT_UNKNOWN,
3559                                              DXGI_FORMAT_UNKNOWN,
3560                                              DXGI_FORMAT_UNKNOWN,
3561                                              GL_RGBA32F,
3562                                              nullptr);
3563                 return info;
3564             }
3565         }
3566 
3567         default:
3568             break;
3569     }
3570     // clang-format on
3571 
3572     UNREACHABLE();
3573     static constexpr Format defaultInfo;
3574     return defaultInfo;
3575 }
3576 
3577 }  // namespace d3d11
3578 
3579 }  // namespace rx
3580