• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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                                          GL_RGBA16F,
47                                          nullptr);
48             return info;
49         }
50         case GL_ALPHA32F_EXT:
51         {
52             static constexpr Format info(GL_ALPHA32F_EXT,
53                                          angle::FormatID::R32G32B32A32_FLOAT,
54                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
55                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
56                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
57                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
58                                          DXGI_FORMAT_UNKNOWN,
59                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
60                                          GL_RGBA32F,
61                                          nullptr);
62             return info;
63         }
64         case GL_ALPHA8_EXT:
65         {
66             if (OnlyFL10Plus(deviceCaps))
67             {
68                 static constexpr Format info(GL_ALPHA8_EXT,
69                                              angle::FormatID::A8_UNORM,
70                                              DXGI_FORMAT_A8_UNORM,
71                                              DXGI_FORMAT_A8_UNORM,
72                                              DXGI_FORMAT_UNKNOWN,
73                                              DXGI_FORMAT_A8_UNORM,
74                                              DXGI_FORMAT_UNKNOWN,
75                                              DXGI_FORMAT_A8_UNORM,
76                                              GL_RGBA8,
77                                              nullptr);
78                 return info;
79             }
80             else
81             {
82                 static constexpr Format info(GL_ALPHA8_EXT,
83                                              angle::FormatID::R8G8B8A8_UNORM,
84                                              DXGI_FORMAT_R8G8B8A8_UNORM,
85                                              DXGI_FORMAT_R8G8B8A8_UNORM,
86                                              DXGI_FORMAT_R8G8B8A8_UNORM,
87                                              DXGI_FORMAT_R8G8B8A8_UNORM,
88                                              DXGI_FORMAT_UNKNOWN,
89                                              DXGI_FORMAT_R8G8B8A8_UNORM,
90                                              GL_RGBA8,
91                                              nullptr);
92                 return info;
93             }
94         }
95         case GL_BGR10_A2_ANGLEX:
96         {
97             static constexpr Format info(GL_BGR10_A2_ANGLEX,
98                                          angle::FormatID::B10G10R10A2_UNORM,
99                                          DXGI_FORMAT_R10G10B10A2_UNORM,
100                                          DXGI_FORMAT_R10G10B10A2_UNORM,
101                                          DXGI_FORMAT_UNKNOWN,
102                                          DXGI_FORMAT_R10G10B10A2_UNORM,
103                                          DXGI_FORMAT_UNKNOWN,
104                                          DXGI_FORMAT_R10G10B10A2_UNORM,
105                                          GL_RGBA16_EXT,
106                                          nullptr);
107             return info;
108         }
109         case GL_BGR565_ANGLEX:
110         {
111             if (SupportsFormat(DXGI_FORMAT_B5G6R5_UNORM, deviceCaps))
112             {
113                 static constexpr Format info(GL_BGR565_ANGLEX,
114                                              angle::FormatID::B5G6R5_UNORM,
115                                              DXGI_FORMAT_B5G6R5_UNORM,
116                                              DXGI_FORMAT_B5G6R5_UNORM,
117                                              DXGI_FORMAT_UNKNOWN,
118                                              DXGI_FORMAT_B5G6R5_UNORM,
119                                              DXGI_FORMAT_UNKNOWN,
120                                              DXGI_FORMAT_B5G6R5_UNORM,
121                                              GL_RGBA8,
122                                              nullptr);
123                 return info;
124             }
125             else
126             {
127                 static constexpr Format info(GL_BGR565_ANGLEX,
128                                              angle::FormatID::R8G8B8A8_UNORM,
129                                              DXGI_FORMAT_R8G8B8A8_UNORM,
130                                              DXGI_FORMAT_R8G8B8A8_UNORM,
131                                              DXGI_FORMAT_R8G8B8A8_UNORM,
132                                              DXGI_FORMAT_R8G8B8A8_UNORM,
133                                              DXGI_FORMAT_UNKNOWN,
134                                              DXGI_FORMAT_R8G8B8A8_UNORM,
135                                              GL_RGBA8,
136                                              nullptr);
137                 return info;
138             }
139         }
140         case GL_BGR5_A1_ANGLEX:
141         {
142             static constexpr Format info(GL_BGR5_A1_ANGLEX,
143                                          angle::FormatID::B8G8R8A8_UNORM,
144                                          DXGI_FORMAT_B8G8R8A8_UNORM,
145                                          DXGI_FORMAT_B8G8R8A8_UNORM,
146                                          DXGI_FORMAT_UNKNOWN,
147                                          DXGI_FORMAT_B8G8R8A8_UNORM,
148                                          DXGI_FORMAT_UNKNOWN,
149                                          DXGI_FORMAT_B8G8R8A8_UNORM,
150                                          GL_BGRA8_EXT,
151                                          nullptr);
152             return info;
153         }
154         case GL_BGRA4_ANGLEX:
155         {
156             static constexpr Format info(GL_BGRA4_ANGLEX,
157                                          angle::FormatID::B8G8R8A8_UNORM,
158                                          DXGI_FORMAT_B8G8R8A8_UNORM,
159                                          DXGI_FORMAT_B8G8R8A8_UNORM,
160                                          DXGI_FORMAT_UNKNOWN,
161                                          DXGI_FORMAT_B8G8R8A8_UNORM,
162                                          DXGI_FORMAT_UNKNOWN,
163                                          DXGI_FORMAT_B8G8R8A8_UNORM,
164                                          GL_BGRA8_EXT,
165                                          nullptr);
166             return info;
167         }
168         case GL_BGRA8_EXT:
169         {
170             static constexpr Format info(GL_BGRA8_EXT,
171                                          angle::FormatID::B8G8R8A8_UNORM,
172                                          DXGI_FORMAT_B8G8R8A8_UNORM,
173                                          DXGI_FORMAT_B8G8R8A8_UNORM,
174                                          DXGI_FORMAT_UNKNOWN,
175                                          DXGI_FORMAT_B8G8R8A8_UNORM,
176                                          DXGI_FORMAT_UNKNOWN,
177                                          DXGI_FORMAT_B8G8R8A8_UNORM,
178                                          GL_BGRA8_EXT,
179                                          nullptr);
180             return info;
181         }
182         case GL_BGRA8_SRGB_ANGLEX:
183         {
184             static constexpr Format info(GL_BGRA8_SRGB_ANGLEX,
185                                          angle::FormatID::B8G8R8A8_UNORM_SRGB,
186                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
187                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
188                                          DXGI_FORMAT_UNKNOWN,
189                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
190                                          DXGI_FORMAT_UNKNOWN,
191                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
192                                          GL_BGRA8_SRGB_ANGLEX,
193                                          nullptr);
194             return info;
195         }
196         case GL_BGRX8_ANGLEX:
197         {
198             if (OnlyFL11_1Plus(deviceCaps))
199             {
200                 static constexpr Format info(GL_BGRX8_ANGLEX,
201                                              angle::FormatID::B8G8R8X8_UNORM,
202                                              DXGI_FORMAT_B8G8R8X8_UNORM,
203                                              DXGI_FORMAT_B8G8R8X8_UNORM,
204                                              DXGI_FORMAT_UNKNOWN,
205                                              DXGI_FORMAT_B8G8R8X8_UNORM,
206                                              DXGI_FORMAT_UNKNOWN,
207                                              DXGI_FORMAT_B8G8R8X8_UNORM,
208                                              GL_BGRX8_ANGLEX,
209                                              nullptr);
210                 return info;
211             }
212             else
213             {
214                 static constexpr Format info(GL_BGRX8_ANGLEX,
215                                              angle::FormatID::R8G8B8A8_UNORM,
216                                              DXGI_FORMAT_R8G8B8A8_UNORM,
217                                              DXGI_FORMAT_R8G8B8A8_UNORM,
218                                              DXGI_FORMAT_R8G8B8A8_UNORM,
219                                              DXGI_FORMAT_R8G8B8A8_UNORM,
220                                              DXGI_FORMAT_UNKNOWN,
221                                              DXGI_FORMAT_R8G8B8A8_UNORM,
222                                              GL_RGBA8,
223                                              nullptr);
224                 return info;
225             }
226         }
227         case GL_COMPRESSED_R11_EAC:
228         {
229             static constexpr Format info(GL_COMPRESSED_R11_EAC,
230                                          angle::FormatID::R16_UNORM,
231                                          DXGI_FORMAT_R16_UNORM,
232                                          DXGI_FORMAT_R16_UNORM,
233                                          DXGI_FORMAT_UNKNOWN,
234                                          DXGI_FORMAT_R16_UNORM,
235                                          DXGI_FORMAT_UNKNOWN,
236                                          DXGI_FORMAT_R16_UNORM,
237                                          GL_RGBA16_EXT,
238                                          nullptr);
239             return info;
240         }
241         case GL_COMPRESSED_RED_GREEN_RGTC2_EXT:
242         {
243             static constexpr Format info(GL_COMPRESSED_RED_GREEN_RGTC2_EXT,
244                                          angle::FormatID::BC5_RG_UNORM_BLOCK,
245                                          DXGI_FORMAT_BC5_UNORM,
246                                          DXGI_FORMAT_BC5_UNORM,
247                                          DXGI_FORMAT_UNKNOWN,
248                                          DXGI_FORMAT_UNKNOWN,
249                                          DXGI_FORMAT_UNKNOWN,
250                                          DXGI_FORMAT_BC5_UNORM,
251                                          GL_RGBA8,
252                                          nullptr);
253             return info;
254         }
255         case GL_COMPRESSED_RED_RGTC1_EXT:
256         {
257             static constexpr Format info(GL_COMPRESSED_RED_RGTC1_EXT,
258                                          angle::FormatID::BC4_RED_UNORM_BLOCK,
259                                          DXGI_FORMAT_BC4_UNORM,
260                                          DXGI_FORMAT_BC4_UNORM,
261                                          DXGI_FORMAT_UNKNOWN,
262                                          DXGI_FORMAT_UNKNOWN,
263                                          DXGI_FORMAT_UNKNOWN,
264                                          DXGI_FORMAT_BC4_UNORM,
265                                          GL_RGBA8,
266                                          nullptr);
267             return info;
268         }
269         case GL_COMPRESSED_RG11_EAC:
270         {
271             static constexpr Format info(GL_COMPRESSED_RG11_EAC,
272                                          angle::FormatID::R16G16_UNORM,
273                                          DXGI_FORMAT_R16G16_UNORM,
274                                          DXGI_FORMAT_R16G16_UNORM,
275                                          DXGI_FORMAT_UNKNOWN,
276                                          DXGI_FORMAT_R16G16_UNORM,
277                                          DXGI_FORMAT_UNKNOWN,
278                                          DXGI_FORMAT_R16G16_UNORM,
279                                          GL_RGBA16_EXT,
280                                          nullptr);
281             return info;
282         }
283         case GL_COMPRESSED_RGB8_ETC2:
284         {
285             static constexpr Format info(GL_COMPRESSED_RGB8_ETC2,
286                                          angle::FormatID::R8G8B8A8_UNORM,
287                                          DXGI_FORMAT_R8G8B8A8_UNORM,
288                                          DXGI_FORMAT_R8G8B8A8_UNORM,
289                                          DXGI_FORMAT_R8G8B8A8_UNORM,
290                                          DXGI_FORMAT_R8G8B8A8_UNORM,
291                                          DXGI_FORMAT_UNKNOWN,
292                                          DXGI_FORMAT_R8G8B8A8_UNORM,
293                                          GL_RGBA8,
294                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
295             return info;
296         }
297         case GL_COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE:
298         {
299             static constexpr Format info(GL_COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE,
300                                          angle::FormatID::BC1_RGB_UNORM_BLOCK,
301                                          DXGI_FORMAT_BC1_UNORM,
302                                          DXGI_FORMAT_BC1_UNORM,
303                                          DXGI_FORMAT_UNKNOWN,
304                                          DXGI_FORMAT_UNKNOWN,
305                                          DXGI_FORMAT_UNKNOWN,
306                                          DXGI_FORMAT_BC1_UNORM,
307                                          GL_RGBA8,
308                                          nullptr);
309             return info;
310         }
311         case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
312         {
313             static constexpr Format info(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
314                                          angle::FormatID::R8G8B8A8_UNORM,
315                                          DXGI_FORMAT_R8G8B8A8_UNORM,
316                                          DXGI_FORMAT_R8G8B8A8_UNORM,
317                                          DXGI_FORMAT_R8G8B8A8_UNORM,
318                                          DXGI_FORMAT_R8G8B8A8_UNORM,
319                                          DXGI_FORMAT_UNKNOWN,
320                                          DXGI_FORMAT_R8G8B8A8_UNORM,
321                                          GL_RGBA8,
322                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
323             return info;
324         }
325         case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
326         {
327             static constexpr Format info(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE,
328                                          angle::FormatID::BC1_RGBA_UNORM_BLOCK,
329                                          DXGI_FORMAT_BC1_UNORM,
330                                          DXGI_FORMAT_BC1_UNORM,
331                                          DXGI_FORMAT_UNKNOWN,
332                                          DXGI_FORMAT_UNKNOWN,
333                                          DXGI_FORMAT_UNKNOWN,
334                                          DXGI_FORMAT_BC1_UNORM,
335                                          GL_RGBA8,
336                                          nullptr);
337             return info;
338         }
339         case GL_COMPRESSED_RGBA8_ETC2_EAC:
340         {
341             static constexpr Format info(GL_COMPRESSED_RGBA8_ETC2_EAC,
342                                          angle::FormatID::R8G8B8A8_UNORM,
343                                          DXGI_FORMAT_R8G8B8A8_UNORM,
344                                          DXGI_FORMAT_R8G8B8A8_UNORM,
345                                          DXGI_FORMAT_R8G8B8A8_UNORM,
346                                          DXGI_FORMAT_R8G8B8A8_UNORM,
347                                          DXGI_FORMAT_UNKNOWN,
348                                          DXGI_FORMAT_R8G8B8A8_UNORM,
349                                          GL_RGBA8,
350                                          nullptr);
351             return info;
352         }
353         case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
354         {
355             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x10_KHR,
356                                          angle::FormatID::NONE,
357                                          DXGI_FORMAT_UNKNOWN,
358                                          DXGI_FORMAT_UNKNOWN,
359                                          DXGI_FORMAT_UNKNOWN,
360                                          DXGI_FORMAT_UNKNOWN,
361                                          DXGI_FORMAT_UNKNOWN,
362                                          DXGI_FORMAT_UNKNOWN,
363                                          GL_NONE,
364                                          nullptr);
365             return info;
366         }
367         case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
368         {
369             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x5_KHR,
370                                          angle::FormatID::NONE,
371                                          DXGI_FORMAT_UNKNOWN,
372                                          DXGI_FORMAT_UNKNOWN,
373                                          DXGI_FORMAT_UNKNOWN,
374                                          DXGI_FORMAT_UNKNOWN,
375                                          DXGI_FORMAT_UNKNOWN,
376                                          DXGI_FORMAT_UNKNOWN,
377                                          GL_NONE,
378                                          nullptr);
379             return info;
380         }
381         case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
382         {
383             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x6_KHR,
384                                          angle::FormatID::NONE,
385                                          DXGI_FORMAT_UNKNOWN,
386                                          DXGI_FORMAT_UNKNOWN,
387                                          DXGI_FORMAT_UNKNOWN,
388                                          DXGI_FORMAT_UNKNOWN,
389                                          DXGI_FORMAT_UNKNOWN,
390                                          DXGI_FORMAT_UNKNOWN,
391                                          GL_NONE,
392                                          nullptr);
393             return info;
394         }
395         case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
396         {
397             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x8_KHR,
398                                          angle::FormatID::NONE,
399                                          DXGI_FORMAT_UNKNOWN,
400                                          DXGI_FORMAT_UNKNOWN,
401                                          DXGI_FORMAT_UNKNOWN,
402                                          DXGI_FORMAT_UNKNOWN,
403                                          DXGI_FORMAT_UNKNOWN,
404                                          DXGI_FORMAT_UNKNOWN,
405                                          GL_NONE,
406                                          nullptr);
407             return info;
408         }
409         case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
410         {
411             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x10_KHR,
412                                          angle::FormatID::NONE,
413                                          DXGI_FORMAT_UNKNOWN,
414                                          DXGI_FORMAT_UNKNOWN,
415                                          DXGI_FORMAT_UNKNOWN,
416                                          DXGI_FORMAT_UNKNOWN,
417                                          DXGI_FORMAT_UNKNOWN,
418                                          DXGI_FORMAT_UNKNOWN,
419                                          GL_NONE,
420                                          nullptr);
421             return info;
422         }
423         case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
424         {
425             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x12_KHR,
426                                          angle::FormatID::NONE,
427                                          DXGI_FORMAT_UNKNOWN,
428                                          DXGI_FORMAT_UNKNOWN,
429                                          DXGI_FORMAT_UNKNOWN,
430                                          DXGI_FORMAT_UNKNOWN,
431                                          DXGI_FORMAT_UNKNOWN,
432                                          DXGI_FORMAT_UNKNOWN,
433                                          GL_NONE,
434                                          nullptr);
435             return info;
436         }
437         case GL_COMPRESSED_RGBA_ASTC_3x3x3_OES:
438         {
439             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_3x3x3_OES,
440                                          angle::FormatID::NONE,
441                                          DXGI_FORMAT_UNKNOWN,
442                                          DXGI_FORMAT_UNKNOWN,
443                                          DXGI_FORMAT_UNKNOWN,
444                                          DXGI_FORMAT_UNKNOWN,
445                                          DXGI_FORMAT_UNKNOWN,
446                                          DXGI_FORMAT_UNKNOWN,
447                                          GL_NONE,
448                                          nullptr);
449             return info;
450         }
451         case GL_COMPRESSED_RGBA_ASTC_4x3x3_OES:
452         {
453             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x3x3_OES,
454                                          angle::FormatID::NONE,
455                                          DXGI_FORMAT_UNKNOWN,
456                                          DXGI_FORMAT_UNKNOWN,
457                                          DXGI_FORMAT_UNKNOWN,
458                                          DXGI_FORMAT_UNKNOWN,
459                                          DXGI_FORMAT_UNKNOWN,
460                                          DXGI_FORMAT_UNKNOWN,
461                                          GL_NONE,
462                                          nullptr);
463             return info;
464         }
465         case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
466         {
467             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
468                                          angle::FormatID::NONE,
469                                          DXGI_FORMAT_UNKNOWN,
470                                          DXGI_FORMAT_UNKNOWN,
471                                          DXGI_FORMAT_UNKNOWN,
472                                          DXGI_FORMAT_UNKNOWN,
473                                          DXGI_FORMAT_UNKNOWN,
474                                          DXGI_FORMAT_UNKNOWN,
475                                          GL_NONE,
476                                          nullptr);
477             return info;
478         }
479         case GL_COMPRESSED_RGBA_ASTC_4x4x3_OES:
480         {
481             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4x3_OES,
482                                          angle::FormatID::NONE,
483                                          DXGI_FORMAT_UNKNOWN,
484                                          DXGI_FORMAT_UNKNOWN,
485                                          DXGI_FORMAT_UNKNOWN,
486                                          DXGI_FORMAT_UNKNOWN,
487                                          DXGI_FORMAT_UNKNOWN,
488                                          DXGI_FORMAT_UNKNOWN,
489                                          GL_NONE,
490                                          nullptr);
491             return info;
492         }
493         case GL_COMPRESSED_RGBA_ASTC_4x4x4_OES:
494         {
495             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4x4_OES,
496                                          angle::FormatID::NONE,
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_5x4_KHR:
508         {
509             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x4_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                                          GL_NONE,
518                                          nullptr);
519             return info;
520         }
521         case GL_COMPRESSED_RGBA_ASTC_5x4x4_OES:
522         {
523             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x4x4_OES,
524                                          angle::FormatID::NONE,
525                                          DXGI_FORMAT_UNKNOWN,
526                                          DXGI_FORMAT_UNKNOWN,
527                                          DXGI_FORMAT_UNKNOWN,
528                                          DXGI_FORMAT_UNKNOWN,
529                                          DXGI_FORMAT_UNKNOWN,
530                                          DXGI_FORMAT_UNKNOWN,
531                                          GL_NONE,
532                                          nullptr);
533             return info;
534         }
535         case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
536         {
537             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5_KHR,
538                                          angle::FormatID::NONE,
539                                          DXGI_FORMAT_UNKNOWN,
540                                          DXGI_FORMAT_UNKNOWN,
541                                          DXGI_FORMAT_UNKNOWN,
542                                          DXGI_FORMAT_UNKNOWN,
543                                          DXGI_FORMAT_UNKNOWN,
544                                          DXGI_FORMAT_UNKNOWN,
545                                          GL_NONE,
546                                          nullptr);
547             return info;
548         }
549         case GL_COMPRESSED_RGBA_ASTC_5x5x4_OES:
550         {
551             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5x4_OES,
552                                          angle::FormatID::NONE,
553                                          DXGI_FORMAT_UNKNOWN,
554                                          DXGI_FORMAT_UNKNOWN,
555                                          DXGI_FORMAT_UNKNOWN,
556                                          DXGI_FORMAT_UNKNOWN,
557                                          DXGI_FORMAT_UNKNOWN,
558                                          DXGI_FORMAT_UNKNOWN,
559                                          GL_NONE,
560                                          nullptr);
561             return info;
562         }
563         case GL_COMPRESSED_RGBA_ASTC_5x5x5_OES:
564         {
565             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5x5_OES,
566                                          angle::FormatID::NONE,
567                                          DXGI_FORMAT_UNKNOWN,
568                                          DXGI_FORMAT_UNKNOWN,
569                                          DXGI_FORMAT_UNKNOWN,
570                                          DXGI_FORMAT_UNKNOWN,
571                                          DXGI_FORMAT_UNKNOWN,
572                                          DXGI_FORMAT_UNKNOWN,
573                                          GL_NONE,
574                                          nullptr);
575             return info;
576         }
577         case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
578         {
579             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x5_KHR,
580                                          angle::FormatID::NONE,
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                                          GL_NONE,
588                                          nullptr);
589             return info;
590         }
591         case GL_COMPRESSED_RGBA_ASTC_6x5x5_OES:
592         {
593             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x5x5_OES,
594                                          angle::FormatID::NONE,
595                                          DXGI_FORMAT_UNKNOWN,
596                                          DXGI_FORMAT_UNKNOWN,
597                                          DXGI_FORMAT_UNKNOWN,
598                                          DXGI_FORMAT_UNKNOWN,
599                                          DXGI_FORMAT_UNKNOWN,
600                                          DXGI_FORMAT_UNKNOWN,
601                                          GL_NONE,
602                                          nullptr);
603             return info;
604         }
605         case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
606         {
607             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6_KHR,
608                                          angle::FormatID::NONE,
609                                          DXGI_FORMAT_UNKNOWN,
610                                          DXGI_FORMAT_UNKNOWN,
611                                          DXGI_FORMAT_UNKNOWN,
612                                          DXGI_FORMAT_UNKNOWN,
613                                          DXGI_FORMAT_UNKNOWN,
614                                          DXGI_FORMAT_UNKNOWN,
615                                          GL_NONE,
616                                          nullptr);
617             return info;
618         }
619         case GL_COMPRESSED_RGBA_ASTC_6x6x5_OES:
620         {
621             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6x5_OES,
622                                          angle::FormatID::NONE,
623                                          DXGI_FORMAT_UNKNOWN,
624                                          DXGI_FORMAT_UNKNOWN,
625                                          DXGI_FORMAT_UNKNOWN,
626                                          DXGI_FORMAT_UNKNOWN,
627                                          DXGI_FORMAT_UNKNOWN,
628                                          DXGI_FORMAT_UNKNOWN,
629                                          GL_NONE,
630                                          nullptr);
631             return info;
632         }
633         case GL_COMPRESSED_RGBA_ASTC_6x6x6_OES:
634         {
635             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6x6_OES,
636                                          angle::FormatID::NONE,
637                                          DXGI_FORMAT_UNKNOWN,
638                                          DXGI_FORMAT_UNKNOWN,
639                                          DXGI_FORMAT_UNKNOWN,
640                                          DXGI_FORMAT_UNKNOWN,
641                                          DXGI_FORMAT_UNKNOWN,
642                                          DXGI_FORMAT_UNKNOWN,
643                                          GL_NONE,
644                                          nullptr);
645             return info;
646         }
647         case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
648         {
649             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x5_KHR,
650                                          angle::FormatID::NONE,
651                                          DXGI_FORMAT_UNKNOWN,
652                                          DXGI_FORMAT_UNKNOWN,
653                                          DXGI_FORMAT_UNKNOWN,
654                                          DXGI_FORMAT_UNKNOWN,
655                                          DXGI_FORMAT_UNKNOWN,
656                                          DXGI_FORMAT_UNKNOWN,
657                                          GL_NONE,
658                                          nullptr);
659             return info;
660         }
661         case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
662         {
663             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x6_KHR,
664                                          angle::FormatID::NONE,
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                                          GL_NONE,
672                                          nullptr);
673             return info;
674         }
675         case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
676         {
677             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x8_KHR,
678                                          angle::FormatID::NONE,
679                                          DXGI_FORMAT_UNKNOWN,
680                                          DXGI_FORMAT_UNKNOWN,
681                                          DXGI_FORMAT_UNKNOWN,
682                                          DXGI_FORMAT_UNKNOWN,
683                                          DXGI_FORMAT_UNKNOWN,
684                                          DXGI_FORMAT_UNKNOWN,
685                                          GL_NONE,
686                                          nullptr);
687             return info;
688         }
689         case GL_COMPRESSED_RGBA_BPTC_UNORM_EXT:
690         {
691             static constexpr Format info(GL_COMPRESSED_RGBA_BPTC_UNORM_EXT,
692                                          angle::FormatID::BC7_RGBA_UNORM_BLOCK,
693                                          DXGI_FORMAT_BC7_UNORM,
694                                          DXGI_FORMAT_BC7_UNORM,
695                                          DXGI_FORMAT_UNKNOWN,
696                                          DXGI_FORMAT_UNKNOWN,
697                                          DXGI_FORMAT_UNKNOWN,
698                                          DXGI_FORMAT_BC7_UNORM,
699                                          GL_RGBA8,
700                                          nullptr);
701             return info;
702         }
703         case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:
704         {
705             static constexpr Format info(GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
706                                          angle::FormatID::NONE,
707                                          DXGI_FORMAT_UNKNOWN,
708                                          DXGI_FORMAT_UNKNOWN,
709                                          DXGI_FORMAT_UNKNOWN,
710                                          DXGI_FORMAT_UNKNOWN,
711                                          DXGI_FORMAT_UNKNOWN,
712                                          DXGI_FORMAT_UNKNOWN,
713                                          GL_NONE,
714                                          nullptr);
715             return info;
716         }
717         case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:
718         {
719             static constexpr Format info(GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
720                                          angle::FormatID::NONE,
721                                          DXGI_FORMAT_UNKNOWN,
722                                          DXGI_FORMAT_UNKNOWN,
723                                          DXGI_FORMAT_UNKNOWN,
724                                          DXGI_FORMAT_UNKNOWN,
725                                          DXGI_FORMAT_UNKNOWN,
726                                          DXGI_FORMAT_UNKNOWN,
727                                          GL_NONE,
728                                          nullptr);
729             return info;
730         }
731         case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
732         {
733             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
734                                          angle::FormatID::BC1_RGBA_UNORM_BLOCK,
735                                          DXGI_FORMAT_BC1_UNORM,
736                                          DXGI_FORMAT_BC1_UNORM,
737                                          DXGI_FORMAT_UNKNOWN,
738                                          DXGI_FORMAT_UNKNOWN,
739                                          DXGI_FORMAT_UNKNOWN,
740                                          DXGI_FORMAT_BC1_UNORM,
741                                          GL_RGBA8,
742                                          nullptr);
743             return info;
744         }
745         case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
746         {
747             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE,
748                                          angle::FormatID::BC2_RGBA_UNORM_BLOCK,
749                                          DXGI_FORMAT_BC2_UNORM,
750                                          DXGI_FORMAT_BC2_UNORM,
751                                          DXGI_FORMAT_UNKNOWN,
752                                          DXGI_FORMAT_UNKNOWN,
753                                          DXGI_FORMAT_UNKNOWN,
754                                          DXGI_FORMAT_BC2_UNORM,
755                                          GL_RGBA8,
756                                          nullptr);
757             return info;
758         }
759         case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
760         {
761             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE,
762                                          angle::FormatID::BC3_RGBA_UNORM_BLOCK,
763                                          DXGI_FORMAT_BC3_UNORM,
764                                          DXGI_FORMAT_BC3_UNORM,
765                                          DXGI_FORMAT_UNKNOWN,
766                                          DXGI_FORMAT_UNKNOWN,
767                                          DXGI_FORMAT_UNKNOWN,
768                                          DXGI_FORMAT_BC3_UNORM,
769                                          GL_RGBA8,
770                                          nullptr);
771             return info;
772         }
773         case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT:
774         {
775             static constexpr Format info(GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,
776                                          angle::FormatID::BC6H_RGB_SFLOAT_BLOCK,
777                                          DXGI_FORMAT_BC6H_SF16,
778                                          DXGI_FORMAT_BC6H_SF16,
779                                          DXGI_FORMAT_UNKNOWN,
780                                          DXGI_FORMAT_UNKNOWN,
781                                          DXGI_FORMAT_UNKNOWN,
782                                          DXGI_FORMAT_BC6H_SF16,
783                                          GL_RGBA32F,
784                                          nullptr);
785             return info;
786         }
787         case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT:
788         {
789             static constexpr Format info(GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,
790                                          angle::FormatID::BC6H_RGB_UFLOAT_BLOCK,
791                                          DXGI_FORMAT_BC6H_UF16,
792                                          DXGI_FORMAT_BC6H_UF16,
793                                          DXGI_FORMAT_UNKNOWN,
794                                          DXGI_FORMAT_UNKNOWN,
795                                          DXGI_FORMAT_UNKNOWN,
796                                          DXGI_FORMAT_BC6H_UF16,
797                                          GL_RGBA32F,
798                                          nullptr);
799             return info;
800         }
801         case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG:
802         {
803             static constexpr Format info(GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG,
804                                          angle::FormatID::NONE,
805                                          DXGI_FORMAT_UNKNOWN,
806                                          DXGI_FORMAT_UNKNOWN,
807                                          DXGI_FORMAT_UNKNOWN,
808                                          DXGI_FORMAT_UNKNOWN,
809                                          DXGI_FORMAT_UNKNOWN,
810                                          DXGI_FORMAT_UNKNOWN,
811                                          GL_NONE,
812                                          nullptr);
813             return info;
814         }
815         case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG:
816         {
817             static constexpr Format info(GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
818                                          angle::FormatID::NONE,
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                                          GL_NONE,
826                                          nullptr);
827             return info;
828         }
829         case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
830         {
831             static constexpr Format info(GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
832                                          angle::FormatID::BC1_RGB_UNORM_BLOCK,
833                                          DXGI_FORMAT_BC1_UNORM,
834                                          DXGI_FORMAT_BC1_UNORM,
835                                          DXGI_FORMAT_UNKNOWN,
836                                          DXGI_FORMAT_UNKNOWN,
837                                          DXGI_FORMAT_UNKNOWN,
838                                          DXGI_FORMAT_BC1_UNORM,
839                                          GL_RGBA8,
840                                          nullptr);
841             return info;
842         }
843         case GL_COMPRESSED_SIGNED_R11_EAC:
844         {
845             static constexpr Format info(GL_COMPRESSED_SIGNED_R11_EAC,
846                                          angle::FormatID::R16_SNORM,
847                                          DXGI_FORMAT_R16_SNORM,
848                                          DXGI_FORMAT_R16_SNORM,
849                                          DXGI_FORMAT_UNKNOWN,
850                                          DXGI_FORMAT_UNKNOWN,
851                                          DXGI_FORMAT_UNKNOWN,
852                                          DXGI_FORMAT_R16_SNORM,
853                                          GL_RGBA16_SNORM_EXT,
854                                          nullptr);
855             return info;
856         }
857         case GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:
858         {
859             static constexpr Format info(GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,
860                                          angle::FormatID::BC5_RG_SNORM_BLOCK,
861                                          DXGI_FORMAT_BC5_SNORM,
862                                          DXGI_FORMAT_BC5_SNORM,
863                                          DXGI_FORMAT_UNKNOWN,
864                                          DXGI_FORMAT_UNKNOWN,
865                                          DXGI_FORMAT_UNKNOWN,
866                                          DXGI_FORMAT_BC5_SNORM,
867                                          GL_RGBA8_SNORM,
868                                          nullptr);
869             return info;
870         }
871         case GL_COMPRESSED_SIGNED_RED_RGTC1_EXT:
872         {
873             static constexpr Format info(GL_COMPRESSED_SIGNED_RED_RGTC1_EXT,
874                                          angle::FormatID::BC4_RED_SNORM_BLOCK,
875                                          DXGI_FORMAT_BC4_SNORM,
876                                          DXGI_FORMAT_BC4_SNORM,
877                                          DXGI_FORMAT_UNKNOWN,
878                                          DXGI_FORMAT_UNKNOWN,
879                                          DXGI_FORMAT_UNKNOWN,
880                                          DXGI_FORMAT_BC4_SNORM,
881                                          GL_RGBA8_SNORM,
882                                          nullptr);
883             return info;
884         }
885         case GL_COMPRESSED_SIGNED_RG11_EAC:
886         {
887             static constexpr Format info(GL_COMPRESSED_SIGNED_RG11_EAC,
888                                          angle::FormatID::R16G16_SNORM,
889                                          DXGI_FORMAT_R16G16_SNORM,
890                                          DXGI_FORMAT_R16G16_SNORM,
891                                          DXGI_FORMAT_UNKNOWN,
892                                          DXGI_FORMAT_UNKNOWN,
893                                          DXGI_FORMAT_UNKNOWN,
894                                          DXGI_FORMAT_R16G16_SNORM,
895                                          GL_RGBA16_SNORM_EXT,
896                                          nullptr);
897             return info;
898         }
899         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
900         {
901             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
902                                          angle::FormatID::NONE,
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                                          GL_NONE,
910                                          nullptr);
911             return info;
912         }
913         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
914         {
915             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
916                                          angle::FormatID::NONE,
917                                          DXGI_FORMAT_UNKNOWN,
918                                          DXGI_FORMAT_UNKNOWN,
919                                          DXGI_FORMAT_UNKNOWN,
920                                          DXGI_FORMAT_UNKNOWN,
921                                          DXGI_FORMAT_UNKNOWN,
922                                          DXGI_FORMAT_UNKNOWN,
923                                          GL_NONE,
924                                          nullptr);
925             return info;
926         }
927         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
928         {
929             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
930                                          angle::FormatID::NONE,
931                                          DXGI_FORMAT_UNKNOWN,
932                                          DXGI_FORMAT_UNKNOWN,
933                                          DXGI_FORMAT_UNKNOWN,
934                                          DXGI_FORMAT_UNKNOWN,
935                                          DXGI_FORMAT_UNKNOWN,
936                                          DXGI_FORMAT_UNKNOWN,
937                                          GL_NONE,
938                                          nullptr);
939             return info;
940         }
941         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
942         {
943             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
944                                          angle::FormatID::NONE,
945                                          DXGI_FORMAT_UNKNOWN,
946                                          DXGI_FORMAT_UNKNOWN,
947                                          DXGI_FORMAT_UNKNOWN,
948                                          DXGI_FORMAT_UNKNOWN,
949                                          DXGI_FORMAT_UNKNOWN,
950                                          DXGI_FORMAT_UNKNOWN,
951                                          GL_NONE,
952                                          nullptr);
953             return info;
954         }
955         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
956         {
957             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
958                                          angle::FormatID::NONE,
959                                          DXGI_FORMAT_UNKNOWN,
960                                          DXGI_FORMAT_UNKNOWN,
961                                          DXGI_FORMAT_UNKNOWN,
962                                          DXGI_FORMAT_UNKNOWN,
963                                          DXGI_FORMAT_UNKNOWN,
964                                          DXGI_FORMAT_UNKNOWN,
965                                          GL_NONE,
966                                          nullptr);
967             return info;
968         }
969         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
970         {
971             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
972                                          angle::FormatID::NONE,
973                                          DXGI_FORMAT_UNKNOWN,
974                                          DXGI_FORMAT_UNKNOWN,
975                                          DXGI_FORMAT_UNKNOWN,
976                                          DXGI_FORMAT_UNKNOWN,
977                                          DXGI_FORMAT_UNKNOWN,
978                                          DXGI_FORMAT_UNKNOWN,
979                                          GL_NONE,
980                                          nullptr);
981             return info;
982         }
983         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES:
984         {
985             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES,
986                                          angle::FormatID::NONE,
987                                          DXGI_FORMAT_UNKNOWN,
988                                          DXGI_FORMAT_UNKNOWN,
989                                          DXGI_FORMAT_UNKNOWN,
990                                          DXGI_FORMAT_UNKNOWN,
991                                          DXGI_FORMAT_UNKNOWN,
992                                          DXGI_FORMAT_UNKNOWN,
993                                          GL_NONE,
994                                          nullptr);
995             return info;
996         }
997         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES:
998         {
999             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES,
1000                                          angle::FormatID::NONE,
1001                                          DXGI_FORMAT_UNKNOWN,
1002                                          DXGI_FORMAT_UNKNOWN,
1003                                          DXGI_FORMAT_UNKNOWN,
1004                                          DXGI_FORMAT_UNKNOWN,
1005                                          DXGI_FORMAT_UNKNOWN,
1006                                          DXGI_FORMAT_UNKNOWN,
1007                                          GL_NONE,
1008                                          nullptr);
1009             return info;
1010         }
1011         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
1012         {
1013             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
1014                                          angle::FormatID::NONE,
1015                                          DXGI_FORMAT_UNKNOWN,
1016                                          DXGI_FORMAT_UNKNOWN,
1017                                          DXGI_FORMAT_UNKNOWN,
1018                                          DXGI_FORMAT_UNKNOWN,
1019                                          DXGI_FORMAT_UNKNOWN,
1020                                          DXGI_FORMAT_UNKNOWN,
1021                                          GL_NONE,
1022                                          nullptr);
1023             return info;
1024         }
1025         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES:
1026         {
1027             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES,
1028                                          angle::FormatID::NONE,
1029                                          DXGI_FORMAT_UNKNOWN,
1030                                          DXGI_FORMAT_UNKNOWN,
1031                                          DXGI_FORMAT_UNKNOWN,
1032                                          DXGI_FORMAT_UNKNOWN,
1033                                          DXGI_FORMAT_UNKNOWN,
1034                                          DXGI_FORMAT_UNKNOWN,
1035                                          GL_NONE,
1036                                          nullptr);
1037             return info;
1038         }
1039         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES:
1040         {
1041             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES,
1042                                          angle::FormatID::NONE,
1043                                          DXGI_FORMAT_UNKNOWN,
1044                                          DXGI_FORMAT_UNKNOWN,
1045                                          DXGI_FORMAT_UNKNOWN,
1046                                          DXGI_FORMAT_UNKNOWN,
1047                                          DXGI_FORMAT_UNKNOWN,
1048                                          DXGI_FORMAT_UNKNOWN,
1049                                          GL_NONE,
1050                                          nullptr);
1051             return info;
1052         }
1053         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
1054         {
1055             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
1056                                          angle::FormatID::NONE,
1057                                          DXGI_FORMAT_UNKNOWN,
1058                                          DXGI_FORMAT_UNKNOWN,
1059                                          DXGI_FORMAT_UNKNOWN,
1060                                          DXGI_FORMAT_UNKNOWN,
1061                                          DXGI_FORMAT_UNKNOWN,
1062                                          DXGI_FORMAT_UNKNOWN,
1063                                          GL_NONE,
1064                                          nullptr);
1065             return info;
1066         }
1067         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES:
1068         {
1069             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES,
1070                                          angle::FormatID::NONE,
1071                                          DXGI_FORMAT_UNKNOWN,
1072                                          DXGI_FORMAT_UNKNOWN,
1073                                          DXGI_FORMAT_UNKNOWN,
1074                                          DXGI_FORMAT_UNKNOWN,
1075                                          DXGI_FORMAT_UNKNOWN,
1076                                          DXGI_FORMAT_UNKNOWN,
1077                                          GL_NONE,
1078                                          nullptr);
1079             return info;
1080         }
1081         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
1082         {
1083             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
1084                                          angle::FormatID::NONE,
1085                                          DXGI_FORMAT_UNKNOWN,
1086                                          DXGI_FORMAT_UNKNOWN,
1087                                          DXGI_FORMAT_UNKNOWN,
1088                                          DXGI_FORMAT_UNKNOWN,
1089                                          DXGI_FORMAT_UNKNOWN,
1090                                          DXGI_FORMAT_UNKNOWN,
1091                                          GL_NONE,
1092                                          nullptr);
1093             return info;
1094         }
1095         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES:
1096         {
1097             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES,
1098                                          angle::FormatID::NONE,
1099                                          DXGI_FORMAT_UNKNOWN,
1100                                          DXGI_FORMAT_UNKNOWN,
1101                                          DXGI_FORMAT_UNKNOWN,
1102                                          DXGI_FORMAT_UNKNOWN,
1103                                          DXGI_FORMAT_UNKNOWN,
1104                                          DXGI_FORMAT_UNKNOWN,
1105                                          GL_NONE,
1106                                          nullptr);
1107             return info;
1108         }
1109         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES:
1110         {
1111             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES,
1112                                          angle::FormatID::NONE,
1113                                          DXGI_FORMAT_UNKNOWN,
1114                                          DXGI_FORMAT_UNKNOWN,
1115                                          DXGI_FORMAT_UNKNOWN,
1116                                          DXGI_FORMAT_UNKNOWN,
1117                                          DXGI_FORMAT_UNKNOWN,
1118                                          DXGI_FORMAT_UNKNOWN,
1119                                          GL_NONE,
1120                                          nullptr);
1121             return info;
1122         }
1123         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
1124         {
1125             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
1126                                          angle::FormatID::NONE,
1127                                          DXGI_FORMAT_UNKNOWN,
1128                                          DXGI_FORMAT_UNKNOWN,
1129                                          DXGI_FORMAT_UNKNOWN,
1130                                          DXGI_FORMAT_UNKNOWN,
1131                                          DXGI_FORMAT_UNKNOWN,
1132                                          DXGI_FORMAT_UNKNOWN,
1133                                          GL_NONE,
1134                                          nullptr);
1135             return info;
1136         }
1137         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES:
1138         {
1139             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES,
1140                                          angle::FormatID::NONE,
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                                          GL_NONE,
1148                                          nullptr);
1149             return info;
1150         }
1151         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
1152         {
1153             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
1154                                          angle::FormatID::NONE,
1155                                          DXGI_FORMAT_UNKNOWN,
1156                                          DXGI_FORMAT_UNKNOWN,
1157                                          DXGI_FORMAT_UNKNOWN,
1158                                          DXGI_FORMAT_UNKNOWN,
1159                                          DXGI_FORMAT_UNKNOWN,
1160                                          DXGI_FORMAT_UNKNOWN,
1161                                          GL_NONE,
1162                                          nullptr);
1163             return info;
1164         }
1165         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES:
1166         {
1167             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES,
1168                                          angle::FormatID::NONE,
1169                                          DXGI_FORMAT_UNKNOWN,
1170                                          DXGI_FORMAT_UNKNOWN,
1171                                          DXGI_FORMAT_UNKNOWN,
1172                                          DXGI_FORMAT_UNKNOWN,
1173                                          DXGI_FORMAT_UNKNOWN,
1174                                          DXGI_FORMAT_UNKNOWN,
1175                                          GL_NONE,
1176                                          nullptr);
1177             return info;
1178         }
1179         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES:
1180         {
1181             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES,
1182                                          angle::FormatID::NONE,
1183                                          DXGI_FORMAT_UNKNOWN,
1184                                          DXGI_FORMAT_UNKNOWN,
1185                                          DXGI_FORMAT_UNKNOWN,
1186                                          DXGI_FORMAT_UNKNOWN,
1187                                          DXGI_FORMAT_UNKNOWN,
1188                                          DXGI_FORMAT_UNKNOWN,
1189                                          GL_NONE,
1190                                          nullptr);
1191             return info;
1192         }
1193         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
1194         {
1195             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
1196                                          angle::FormatID::NONE,
1197                                          DXGI_FORMAT_UNKNOWN,
1198                                          DXGI_FORMAT_UNKNOWN,
1199                                          DXGI_FORMAT_UNKNOWN,
1200                                          DXGI_FORMAT_UNKNOWN,
1201                                          DXGI_FORMAT_UNKNOWN,
1202                                          DXGI_FORMAT_UNKNOWN,
1203                                          GL_NONE,
1204                                          nullptr);
1205             return info;
1206         }
1207         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
1208         {
1209             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
1210                                          angle::FormatID::NONE,
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_8x8_KHR:
1222         {
1223             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
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                                          GL_NONE,
1232                                          nullptr);
1233             return info;
1234         }
1235         case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
1236         {
1237             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
1238                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
1239                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1240                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1241                                          DXGI_FORMAT_UNKNOWN,
1242                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1243                                          DXGI_FORMAT_UNKNOWN,
1244                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1245                                          GL_SRGB8_ALPHA8,
1246                                          nullptr);
1247             return info;
1248         }
1249         case GL_COMPRESSED_SRGB8_ETC2:
1250         {
1251             static constexpr Format info(GL_COMPRESSED_SRGB8_ETC2,
1252                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
1253                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1254                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1255                                          DXGI_FORMAT_UNKNOWN,
1256                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1257                                          DXGI_FORMAT_UNKNOWN,
1258                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1259                                          GL_SRGB8_ALPHA8,
1260                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1261             return info;
1262         }
1263         case GL_COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE:
1264         {
1265             static constexpr Format info(GL_COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE,
1266                                          angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK,
1267                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1268                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1269                                          DXGI_FORMAT_UNKNOWN,
1270                                          DXGI_FORMAT_UNKNOWN,
1271                                          DXGI_FORMAT_UNKNOWN,
1272                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1273                                          GL_RGBA8,
1274                                          nullptr);
1275             return info;
1276         }
1277         case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
1278         {
1279             static constexpr Format info(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
1280                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
1281                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1282                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1283                                          DXGI_FORMAT_UNKNOWN,
1284                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1285                                          DXGI_FORMAT_UNKNOWN,
1286                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1287                                          GL_SRGB8_ALPHA8,
1288                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1289             return info;
1290         }
1291         case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
1292         {
1293             static constexpr Format info(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE,
1294                                          angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK,
1295                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1296                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1297                                          DXGI_FORMAT_UNKNOWN,
1298                                          DXGI_FORMAT_UNKNOWN,
1299                                          DXGI_FORMAT_UNKNOWN,
1300                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1301                                          GL_RGBA8,
1302                                          nullptr);
1303             return info;
1304         }
1305         case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:
1306         {
1307             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,
1308                                          angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK,
1309                                          DXGI_FORMAT_BC7_UNORM_SRGB,
1310                                          DXGI_FORMAT_BC7_UNORM_SRGB,
1311                                          DXGI_FORMAT_UNKNOWN,
1312                                          DXGI_FORMAT_UNKNOWN,
1313                                          DXGI_FORMAT_UNKNOWN,
1314                                          DXGI_FORMAT_BC7_UNORM_SRGB,
1315                                          GL_SRGB8_ALPHA8,
1316                                          nullptr);
1317             return info;
1318         }
1319         case GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT:
1320         {
1321             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT,
1322                                          angle::FormatID::NONE,
1323                                          DXGI_FORMAT_UNKNOWN,
1324                                          DXGI_FORMAT_UNKNOWN,
1325                                          DXGI_FORMAT_UNKNOWN,
1326                                          DXGI_FORMAT_UNKNOWN,
1327                                          DXGI_FORMAT_UNKNOWN,
1328                                          DXGI_FORMAT_UNKNOWN,
1329                                          GL_NONE,
1330                                          nullptr);
1331             return info;
1332         }
1333         case GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT:
1334         {
1335             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT,
1336                                          angle::FormatID::NONE,
1337                                          DXGI_FORMAT_UNKNOWN,
1338                                          DXGI_FORMAT_UNKNOWN,
1339                                          DXGI_FORMAT_UNKNOWN,
1340                                          DXGI_FORMAT_UNKNOWN,
1341                                          DXGI_FORMAT_UNKNOWN,
1342                                          DXGI_FORMAT_UNKNOWN,
1343                                          GL_NONE,
1344                                          nullptr);
1345             return info;
1346         }
1347         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
1348         {
1349             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
1350                                          angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK,
1351                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1352                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1353                                          DXGI_FORMAT_UNKNOWN,
1354                                          DXGI_FORMAT_UNKNOWN,
1355                                          DXGI_FORMAT_UNKNOWN,
1356                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1357                                          GL_RGBA8,
1358                                          nullptr);
1359             return info;
1360         }
1361         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
1362         {
1363             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
1364                                          angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK,
1365                                          DXGI_FORMAT_BC2_UNORM_SRGB,
1366                                          DXGI_FORMAT_BC2_UNORM_SRGB,
1367                                          DXGI_FORMAT_UNKNOWN,
1368                                          DXGI_FORMAT_UNKNOWN,
1369                                          DXGI_FORMAT_UNKNOWN,
1370                                          DXGI_FORMAT_BC2_UNORM_SRGB,
1371                                          GL_RGBA8,
1372                                          nullptr);
1373             return info;
1374         }
1375         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
1376         {
1377             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
1378                                          angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK,
1379                                          DXGI_FORMAT_BC3_UNORM_SRGB,
1380                                          DXGI_FORMAT_BC3_UNORM_SRGB,
1381                                          DXGI_FORMAT_UNKNOWN,
1382                                          DXGI_FORMAT_UNKNOWN,
1383                                          DXGI_FORMAT_UNKNOWN,
1384                                          DXGI_FORMAT_BC3_UNORM_SRGB,
1385                                          GL_RGBA8,
1386                                          nullptr);
1387             return info;
1388         }
1389         case GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT:
1390         {
1391             static constexpr Format info(GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT,
1392                                          angle::FormatID::NONE,
1393                                          DXGI_FORMAT_UNKNOWN,
1394                                          DXGI_FORMAT_UNKNOWN,
1395                                          DXGI_FORMAT_UNKNOWN,
1396                                          DXGI_FORMAT_UNKNOWN,
1397                                          DXGI_FORMAT_UNKNOWN,
1398                                          DXGI_FORMAT_UNKNOWN,
1399                                          GL_NONE,
1400                                          nullptr);
1401             return info;
1402         }
1403         case GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT:
1404         {
1405             static constexpr Format info(GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT,
1406                                          angle::FormatID::NONE,
1407                                          DXGI_FORMAT_UNKNOWN,
1408                                          DXGI_FORMAT_UNKNOWN,
1409                                          DXGI_FORMAT_UNKNOWN,
1410                                          DXGI_FORMAT_UNKNOWN,
1411                                          DXGI_FORMAT_UNKNOWN,
1412                                          DXGI_FORMAT_UNKNOWN,
1413                                          GL_NONE,
1414                                          nullptr);
1415             return info;
1416         }
1417         case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
1418         {
1419             static constexpr Format info(GL_COMPRESSED_SRGB_S3TC_DXT1_EXT,
1420                                          angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK,
1421                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1422                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1423                                          DXGI_FORMAT_UNKNOWN,
1424                                          DXGI_FORMAT_UNKNOWN,
1425                                          DXGI_FORMAT_UNKNOWN,
1426                                          DXGI_FORMAT_BC1_UNORM_SRGB,
1427                                          GL_RGBA8,
1428                                          nullptr);
1429             return info;
1430         }
1431         case GL_DEPTH24_STENCIL8:
1432         {
1433             if (OnlyFL10Plus(deviceCaps))
1434             {
1435                 static constexpr Format info(GL_DEPTH24_STENCIL8,
1436                                              angle::FormatID::D24_UNORM_S8_UINT,
1437                                              DXGI_FORMAT_R24G8_TYPELESS,
1438                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1439                                              DXGI_FORMAT_UNKNOWN,
1440                                              DXGI_FORMAT_UNKNOWN,
1441                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1442                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1443                                              GL_RGBA32F,
1444                                              nullptr);
1445                 return info;
1446             }
1447             else
1448             {
1449                 static constexpr Format info(GL_DEPTH24_STENCIL8,
1450                                              angle::FormatID::D24_UNORM_S8_UINT,
1451                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1452                                              DXGI_FORMAT_UNKNOWN,
1453                                              DXGI_FORMAT_UNKNOWN,
1454                                              DXGI_FORMAT_UNKNOWN,
1455                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1456                                              DXGI_FORMAT_UNKNOWN,
1457                                              GL_RGBA32F,
1458                                              nullptr);
1459                 return info;
1460             }
1461         }
1462         case GL_DEPTH32F_STENCIL8:
1463         {
1464             static constexpr Format info(GL_DEPTH32F_STENCIL8,
1465                                          angle::FormatID::D32_FLOAT_S8X24_UINT,
1466                                          DXGI_FORMAT_R32G8X24_TYPELESS,
1467                                          DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
1468                                          DXGI_FORMAT_UNKNOWN,
1469                                          DXGI_FORMAT_UNKNOWN,
1470                                          DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
1471                                          DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
1472                                          GL_RGBA32F,
1473                                          nullptr);
1474             return info;
1475         }
1476         case GL_DEPTH_COMPONENT16:
1477         {
1478             if (OnlyFL10Plus(deviceCaps))
1479             {
1480                 static constexpr Format info(GL_DEPTH_COMPONENT16,
1481                                              angle::FormatID::D16_UNORM,
1482                                              DXGI_FORMAT_R16_TYPELESS,
1483                                              DXGI_FORMAT_R16_UNORM,
1484                                              DXGI_FORMAT_UNKNOWN,
1485                                              DXGI_FORMAT_UNKNOWN,
1486                                              DXGI_FORMAT_D16_UNORM,
1487                                              DXGI_FORMAT_R16_UNORM,
1488                                              GL_RGBA16_EXT,
1489                                              nullptr);
1490                 return info;
1491             }
1492             else
1493             {
1494                 static constexpr Format info(GL_DEPTH_COMPONENT16,
1495                                              angle::FormatID::D16_UNORM,
1496                                              DXGI_FORMAT_D16_UNORM,
1497                                              DXGI_FORMAT_UNKNOWN,
1498                                              DXGI_FORMAT_UNKNOWN,
1499                                              DXGI_FORMAT_UNKNOWN,
1500                                              DXGI_FORMAT_D16_UNORM,
1501                                              DXGI_FORMAT_UNKNOWN,
1502                                              GL_RGBA16_EXT,
1503                                              nullptr);
1504                 return info;
1505             }
1506         }
1507         case GL_DEPTH_COMPONENT24:
1508         {
1509             if (OnlyFL10Plus(deviceCaps))
1510             {
1511                 static constexpr Format info(GL_DEPTH_COMPONENT24,
1512                                              angle::FormatID::D24_UNORM_S8_UINT,
1513                                              DXGI_FORMAT_R24G8_TYPELESS,
1514                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1515                                              DXGI_FORMAT_UNKNOWN,
1516                                              DXGI_FORMAT_UNKNOWN,
1517                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1518                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1519                                              GL_RGBA32F,
1520                                              nullptr);
1521                 return info;
1522             }
1523             else
1524             {
1525                 static constexpr Format info(GL_DEPTH_COMPONENT24,
1526                                              angle::FormatID::D24_UNORM_S8_UINT,
1527                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1528                                              DXGI_FORMAT_UNKNOWN,
1529                                              DXGI_FORMAT_UNKNOWN,
1530                                              DXGI_FORMAT_UNKNOWN,
1531                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1532                                              DXGI_FORMAT_UNKNOWN,
1533                                              GL_RGBA32F,
1534                                              nullptr);
1535                 return info;
1536             }
1537         }
1538         case GL_DEPTH_COMPONENT32F:
1539         {
1540             static constexpr Format info(GL_DEPTH_COMPONENT32F,
1541                                          angle::FormatID::D32_FLOAT,
1542                                          DXGI_FORMAT_R32_TYPELESS,
1543                                          DXGI_FORMAT_R32_FLOAT,
1544                                          DXGI_FORMAT_UNKNOWN,
1545                                          DXGI_FORMAT_UNKNOWN,
1546                                          DXGI_FORMAT_D32_FLOAT,
1547                                          DXGI_FORMAT_R32_FLOAT,
1548                                          GL_RGBA32F,
1549                                          nullptr);
1550             return info;
1551         }
1552         case GL_DEPTH_COMPONENT32_OES:
1553         {
1554             if (OnlyFL10Plus(deviceCaps))
1555             {
1556                 static constexpr Format info(GL_DEPTH_COMPONENT32_OES,
1557                                              angle::FormatID::D24_UNORM_S8_UINT,
1558                                              DXGI_FORMAT_R24G8_TYPELESS,
1559                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1560                                              DXGI_FORMAT_UNKNOWN,
1561                                              DXGI_FORMAT_UNKNOWN,
1562                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1563                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1564                                              GL_RGBA32F,
1565                                              nullptr);
1566                 return info;
1567             }
1568             else
1569             {
1570                 static constexpr Format info(GL_DEPTH_COMPONENT32_OES,
1571                                              angle::FormatID::D24_UNORM_S8_UINT,
1572                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1573                                              DXGI_FORMAT_UNKNOWN,
1574                                              DXGI_FORMAT_UNKNOWN,
1575                                              DXGI_FORMAT_UNKNOWN,
1576                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1577                                              DXGI_FORMAT_UNKNOWN,
1578                                              GL_RGBA32F,
1579                                              nullptr);
1580                 return info;
1581             }
1582         }
1583         case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
1584         {
1585             static constexpr Format info(GL_ETC1_RGB8_LOSSY_DECODE_ANGLE,
1586                                          angle::FormatID::BC1_RGB_UNORM_BLOCK,
1587                                          DXGI_FORMAT_BC1_UNORM,
1588                                          DXGI_FORMAT_BC1_UNORM,
1589                                          DXGI_FORMAT_UNKNOWN,
1590                                          DXGI_FORMAT_UNKNOWN,
1591                                          DXGI_FORMAT_UNKNOWN,
1592                                          DXGI_FORMAT_BC1_UNORM,
1593                                          GL_RGBA8,
1594                                          nullptr);
1595             return info;
1596         }
1597         case GL_ETC1_RGB8_OES:
1598         {
1599             static constexpr Format info(GL_ETC1_RGB8_OES,
1600                                          angle::FormatID::R8G8B8A8_UNORM,
1601                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1602                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1603                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1604                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1605                                          DXGI_FORMAT_UNKNOWN,
1606                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1607                                          GL_RGBA8,
1608                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1609             return info;
1610         }
1611         case GL_G8_B8R8_2PLANE_420_UNORM_ANGLE:
1612         {
1613             static constexpr Format info(GL_G8_B8R8_2PLANE_420_UNORM_ANGLE,
1614                                          angle::FormatID::NONE,
1615                                          DXGI_FORMAT_UNKNOWN,
1616                                          DXGI_FORMAT_UNKNOWN,
1617                                          DXGI_FORMAT_UNKNOWN,
1618                                          DXGI_FORMAT_UNKNOWN,
1619                                          DXGI_FORMAT_UNKNOWN,
1620                                          DXGI_FORMAT_UNKNOWN,
1621                                          GL_NONE,
1622                                          nullptr);
1623             return info;
1624         }
1625         case GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE:
1626         {
1627             static constexpr Format info(GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE,
1628                                          angle::FormatID::NONE,
1629                                          DXGI_FORMAT_UNKNOWN,
1630                                          DXGI_FORMAT_UNKNOWN,
1631                                          DXGI_FORMAT_UNKNOWN,
1632                                          DXGI_FORMAT_UNKNOWN,
1633                                          DXGI_FORMAT_UNKNOWN,
1634                                          DXGI_FORMAT_UNKNOWN,
1635                                          GL_NONE,
1636                                          nullptr);
1637             return info;
1638         }
1639         case GL_LUMINANCE16F_EXT:
1640         {
1641             static constexpr Format info(GL_LUMINANCE16F_EXT,
1642                                          angle::FormatID::R16G16B16A16_FLOAT,
1643                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1644                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1645                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1646                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1647                                          DXGI_FORMAT_UNKNOWN,
1648                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1649                                          GL_RGBA16F,
1650                                          Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
1651             return info;
1652         }
1653         case GL_LUMINANCE32F_EXT:
1654         {
1655             static constexpr Format info(GL_LUMINANCE32F_EXT,
1656                                          angle::FormatID::R32G32B32A32_FLOAT,
1657                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1658                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1659                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1660                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1661                                          DXGI_FORMAT_UNKNOWN,
1662                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1663                                          GL_RGBA32F,
1664                                          Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
1665             return info;
1666         }
1667         case GL_LUMINANCE8_ALPHA8_EXT:
1668         {
1669             static constexpr Format info(GL_LUMINANCE8_ALPHA8_EXT,
1670                                          angle::FormatID::R8G8B8A8_UNORM,
1671                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1672                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1673                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1674                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1675                                          DXGI_FORMAT_UNKNOWN,
1676                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1677                                          GL_RGBA8,
1678                                          nullptr);
1679             return info;
1680         }
1681         case GL_LUMINANCE8_EXT:
1682         {
1683             static constexpr Format info(GL_LUMINANCE8_EXT,
1684                                          angle::FormatID::R8G8B8A8_UNORM,
1685                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1686                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1687                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1688                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1689                                          DXGI_FORMAT_UNKNOWN,
1690                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1691                                          GL_RGBA8,
1692                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1693             return info;
1694         }
1695         case GL_LUMINANCE_ALPHA16F_EXT:
1696         {
1697             static constexpr Format info(GL_LUMINANCE_ALPHA16F_EXT,
1698                                          angle::FormatID::R16G16B16A16_FLOAT,
1699                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1700                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1701                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1702                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1703                                          DXGI_FORMAT_UNKNOWN,
1704                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1705                                          GL_RGBA16F,
1706                                          nullptr);
1707             return info;
1708         }
1709         case GL_LUMINANCE_ALPHA32F_EXT:
1710         {
1711             static constexpr Format info(GL_LUMINANCE_ALPHA32F_EXT,
1712                                          angle::FormatID::R32G32B32A32_FLOAT,
1713                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1714                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1715                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1716                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1717                                          DXGI_FORMAT_UNKNOWN,
1718                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1719                                          GL_RGBA32F,
1720                                          nullptr);
1721             return info;
1722         }
1723         case GL_NONE:
1724         {
1725             static constexpr Format info(GL_NONE,
1726                                          angle::FormatID::NONE,
1727                                          DXGI_FORMAT_UNKNOWN,
1728                                          DXGI_FORMAT_UNKNOWN,
1729                                          DXGI_FORMAT_UNKNOWN,
1730                                          DXGI_FORMAT_UNKNOWN,
1731                                          DXGI_FORMAT_UNKNOWN,
1732                                          DXGI_FORMAT_UNKNOWN,
1733                                          GL_NONE,
1734                                          nullptr);
1735             return info;
1736         }
1737         case GL_R11F_G11F_B10F:
1738         {
1739             static constexpr Format info(GL_R11F_G11F_B10F,
1740                                          angle::FormatID::R11G11B10_FLOAT,
1741                                          DXGI_FORMAT_R11G11B10_FLOAT,
1742                                          DXGI_FORMAT_R11G11B10_FLOAT,
1743                                          DXGI_FORMAT_UNKNOWN,
1744                                          DXGI_FORMAT_R11G11B10_FLOAT,
1745                                          DXGI_FORMAT_UNKNOWN,
1746                                          DXGI_FORMAT_R11G11B10_FLOAT,
1747                                          GL_RGBA16F_EXT,
1748                                          nullptr);
1749             return info;
1750         }
1751         case GL_R16F:
1752         {
1753             static constexpr Format info(GL_R16F,
1754                                          angle::FormatID::R16_FLOAT,
1755                                          DXGI_FORMAT_R16_FLOAT,
1756                                          DXGI_FORMAT_R16_FLOAT,
1757                                          DXGI_FORMAT_UNKNOWN,
1758                                          DXGI_FORMAT_R16_FLOAT,
1759                                          DXGI_FORMAT_UNKNOWN,
1760                                          DXGI_FORMAT_R16_FLOAT,
1761                                          GL_RGBA16F_EXT,
1762                                          nullptr);
1763             return info;
1764         }
1765         case GL_R16I:
1766         {
1767             static constexpr Format info(GL_R16I,
1768                                          angle::FormatID::R16_SINT,
1769                                          DXGI_FORMAT_R16_SINT,
1770                                          DXGI_FORMAT_R16_SINT,
1771                                          DXGI_FORMAT_UNKNOWN,
1772                                          DXGI_FORMAT_R16_SINT,
1773                                          DXGI_FORMAT_UNKNOWN,
1774                                          DXGI_FORMAT_R16_SINT,
1775                                          GL_RGBA16I,
1776                                          nullptr);
1777             return info;
1778         }
1779         case GL_R16UI:
1780         {
1781             static constexpr Format info(GL_R16UI,
1782                                          angle::FormatID::R16_UINT,
1783                                          DXGI_FORMAT_R16_UINT,
1784                                          DXGI_FORMAT_R16_UINT,
1785                                          DXGI_FORMAT_UNKNOWN,
1786                                          DXGI_FORMAT_R16_UINT,
1787                                          DXGI_FORMAT_UNKNOWN,
1788                                          DXGI_FORMAT_R16_UINT,
1789                                          GL_RGBA16I,
1790                                          nullptr);
1791             return info;
1792         }
1793         case GL_R16_EXT:
1794         {
1795             static constexpr Format info(GL_R16_EXT,
1796                                          angle::FormatID::R16_UNORM,
1797                                          DXGI_FORMAT_R16_UNORM,
1798                                          DXGI_FORMAT_R16_UNORM,
1799                                          DXGI_FORMAT_UNKNOWN,
1800                                          DXGI_FORMAT_R16_UNORM,
1801                                          DXGI_FORMAT_UNKNOWN,
1802                                          DXGI_FORMAT_R16_UNORM,
1803                                          GL_RGBA16_EXT,
1804                                          nullptr);
1805             return info;
1806         }
1807         case GL_R16_SNORM_EXT:
1808         {
1809             static constexpr Format info(GL_R16_SNORM_EXT,
1810                                          angle::FormatID::R16_SNORM,
1811                                          DXGI_FORMAT_R16_SNORM,
1812                                          DXGI_FORMAT_R16_SNORM,
1813                                          DXGI_FORMAT_UNKNOWN,
1814                                          DXGI_FORMAT_UNKNOWN,
1815                                          DXGI_FORMAT_UNKNOWN,
1816                                          DXGI_FORMAT_R16_SNORM,
1817                                          GL_RGBA16_SNORM_EXT,
1818                                          nullptr);
1819             return info;
1820         }
1821         case GL_R32F:
1822         {
1823             static constexpr Format info(GL_R32F,
1824                                          angle::FormatID::R32_FLOAT,
1825                                          DXGI_FORMAT_R32_FLOAT,
1826                                          DXGI_FORMAT_R32_FLOAT,
1827                                          DXGI_FORMAT_R32_FLOAT,
1828                                          DXGI_FORMAT_R32_FLOAT,
1829                                          DXGI_FORMAT_UNKNOWN,
1830                                          DXGI_FORMAT_R32_FLOAT,
1831                                          GL_RGBA32F,
1832                                          nullptr);
1833             return info;
1834         }
1835         case GL_R32I:
1836         {
1837             static constexpr Format info(GL_R32I,
1838                                          angle::FormatID::R32_SINT,
1839                                          DXGI_FORMAT_R32_SINT,
1840                                          DXGI_FORMAT_R32_SINT,
1841                                          DXGI_FORMAT_R32_SINT,
1842                                          DXGI_FORMAT_R32_SINT,
1843                                          DXGI_FORMAT_UNKNOWN,
1844                                          DXGI_FORMAT_R32_SINT,
1845                                          GL_RGBA32I,
1846                                          nullptr);
1847             return info;
1848         }
1849         case GL_R32UI:
1850         {
1851             static constexpr Format info(GL_R32UI,
1852                                          angle::FormatID::R32_UINT,
1853                                          DXGI_FORMAT_R32_UINT,
1854                                          DXGI_FORMAT_R32_UINT,
1855                                          DXGI_FORMAT_R32_UINT,
1856                                          DXGI_FORMAT_R32_UINT,
1857                                          DXGI_FORMAT_UNKNOWN,
1858                                          DXGI_FORMAT_R32_UINT,
1859                                          GL_RGBA32I,
1860                                          nullptr);
1861             return info;
1862         }
1863         case GL_R8:
1864         {
1865             static constexpr Format info(GL_R8,
1866                                          angle::FormatID::R8_UNORM,
1867                                          DXGI_FORMAT_R8_UNORM,
1868                                          DXGI_FORMAT_R8_UNORM,
1869                                          DXGI_FORMAT_UNKNOWN,
1870                                          DXGI_FORMAT_R8_UNORM,
1871                                          DXGI_FORMAT_UNKNOWN,
1872                                          DXGI_FORMAT_R8_UNORM,
1873                                          GL_RGBA8,
1874                                          nullptr);
1875             return info;
1876         }
1877         case GL_R8I:
1878         {
1879             static constexpr Format info(GL_R8I,
1880                                          angle::FormatID::R8_SINT,
1881                                          DXGI_FORMAT_R8_SINT,
1882                                          DXGI_FORMAT_R8_SINT,
1883                                          DXGI_FORMAT_UNKNOWN,
1884                                          DXGI_FORMAT_R8_SINT,
1885                                          DXGI_FORMAT_UNKNOWN,
1886                                          DXGI_FORMAT_R8_SINT,
1887                                          GL_RGBA8I,
1888                                          nullptr);
1889             return info;
1890         }
1891         case GL_R8UI:
1892         {
1893             static constexpr Format info(GL_R8UI,
1894                                          angle::FormatID::R8_UINT,
1895                                          DXGI_FORMAT_R8_UINT,
1896                                          DXGI_FORMAT_R8_UINT,
1897                                          DXGI_FORMAT_UNKNOWN,
1898                                          DXGI_FORMAT_R8_UINT,
1899                                          DXGI_FORMAT_UNKNOWN,
1900                                          DXGI_FORMAT_R8_UINT,
1901                                          GL_RGBA8I,
1902                                          nullptr);
1903             return info;
1904         }
1905         case GL_R8_SNORM:
1906         {
1907             static constexpr Format info(GL_R8_SNORM,
1908                                          angle::FormatID::R8_SNORM,
1909                                          DXGI_FORMAT_R8_SNORM,
1910                                          DXGI_FORMAT_R8_SNORM,
1911                                          DXGI_FORMAT_UNKNOWN,
1912                                          DXGI_FORMAT_UNKNOWN,
1913                                          DXGI_FORMAT_UNKNOWN,
1914                                          DXGI_FORMAT_R8_SNORM,
1915                                          GL_RGBA8_SNORM,
1916                                          nullptr);
1917             return info;
1918         }
1919         case GL_RG16F:
1920         {
1921             static constexpr Format info(GL_RG16F,
1922                                          angle::FormatID::R16G16_FLOAT,
1923                                          DXGI_FORMAT_R16G16_FLOAT,
1924                                          DXGI_FORMAT_R16G16_FLOAT,
1925                                          DXGI_FORMAT_UNKNOWN,
1926                                          DXGI_FORMAT_R16G16_FLOAT,
1927                                          DXGI_FORMAT_UNKNOWN,
1928                                          DXGI_FORMAT_R16G16_FLOAT,
1929                                          GL_RGBA16F_EXT,
1930                                          nullptr);
1931             return info;
1932         }
1933         case GL_RG16I:
1934         {
1935             static constexpr Format info(GL_RG16I,
1936                                          angle::FormatID::R16G16_SINT,
1937                                          DXGI_FORMAT_R16G16_SINT,
1938                                          DXGI_FORMAT_R16G16_SINT,
1939                                          DXGI_FORMAT_UNKNOWN,
1940                                          DXGI_FORMAT_R16G16_SINT,
1941                                          DXGI_FORMAT_UNKNOWN,
1942                                          DXGI_FORMAT_R16G16_SINT,
1943                                          GL_RGBA16I,
1944                                          nullptr);
1945             return info;
1946         }
1947         case GL_RG16UI:
1948         {
1949             static constexpr Format info(GL_RG16UI,
1950                                          angle::FormatID::R16G16_UINT,
1951                                          DXGI_FORMAT_R16G16_UINT,
1952                                          DXGI_FORMAT_R16G16_UINT,
1953                                          DXGI_FORMAT_UNKNOWN,
1954                                          DXGI_FORMAT_R16G16_UINT,
1955                                          DXGI_FORMAT_UNKNOWN,
1956                                          DXGI_FORMAT_R16G16_UINT,
1957                                          GL_RGBA16I,
1958                                          nullptr);
1959             return info;
1960         }
1961         case GL_RG16_EXT:
1962         {
1963             static constexpr Format info(GL_RG16_EXT,
1964                                          angle::FormatID::R16G16_UNORM,
1965                                          DXGI_FORMAT_R16G16_UNORM,
1966                                          DXGI_FORMAT_R16G16_UNORM,
1967                                          DXGI_FORMAT_UNKNOWN,
1968                                          DXGI_FORMAT_R16G16_UNORM,
1969                                          DXGI_FORMAT_UNKNOWN,
1970                                          DXGI_FORMAT_R16G16_UNORM,
1971                                          GL_RGBA16_EXT,
1972                                          nullptr);
1973             return info;
1974         }
1975         case GL_RG16_SNORM_EXT:
1976         {
1977             static constexpr Format info(GL_RG16_SNORM_EXT,
1978                                          angle::FormatID::R16G16_SNORM,
1979                                          DXGI_FORMAT_R16G16_SNORM,
1980                                          DXGI_FORMAT_R16G16_SNORM,
1981                                          DXGI_FORMAT_UNKNOWN,
1982                                          DXGI_FORMAT_UNKNOWN,
1983                                          DXGI_FORMAT_UNKNOWN,
1984                                          DXGI_FORMAT_R16G16_SNORM,
1985                                          GL_RGBA16_SNORM_EXT,
1986                                          nullptr);
1987             return info;
1988         }
1989         case GL_RG32F:
1990         {
1991             static constexpr Format info(GL_RG32F,
1992                                          angle::FormatID::R32G32_FLOAT,
1993                                          DXGI_FORMAT_R32G32_FLOAT,
1994                                          DXGI_FORMAT_R32G32_FLOAT,
1995                                          DXGI_FORMAT_UNKNOWN,
1996                                          DXGI_FORMAT_R32G32_FLOAT,
1997                                          DXGI_FORMAT_UNKNOWN,
1998                                          DXGI_FORMAT_R32G32_FLOAT,
1999                                          GL_RGBA32F,
2000                                          nullptr);
2001             return info;
2002         }
2003         case GL_RG32I:
2004         {
2005             static constexpr Format info(GL_RG32I,
2006                                          angle::FormatID::R32G32_SINT,
2007                                          DXGI_FORMAT_R32G32_SINT,
2008                                          DXGI_FORMAT_R32G32_SINT,
2009                                          DXGI_FORMAT_UNKNOWN,
2010                                          DXGI_FORMAT_R32G32_SINT,
2011                                          DXGI_FORMAT_UNKNOWN,
2012                                          DXGI_FORMAT_R32G32_SINT,
2013                                          GL_RGBA32I,
2014                                          nullptr);
2015             return info;
2016         }
2017         case GL_RG32UI:
2018         {
2019             static constexpr Format info(GL_RG32UI,
2020                                          angle::FormatID::R32G32_UINT,
2021                                          DXGI_FORMAT_R32G32_UINT,
2022                                          DXGI_FORMAT_R32G32_UINT,
2023                                          DXGI_FORMAT_UNKNOWN,
2024                                          DXGI_FORMAT_R32G32_UINT,
2025                                          DXGI_FORMAT_UNKNOWN,
2026                                          DXGI_FORMAT_R32G32_UINT,
2027                                          GL_RGBA32I,
2028                                          nullptr);
2029             return info;
2030         }
2031         case GL_RG8:
2032         {
2033             static constexpr Format info(GL_RG8,
2034                                          angle::FormatID::R8G8_UNORM,
2035                                          DXGI_FORMAT_R8G8_UNORM,
2036                                          DXGI_FORMAT_R8G8_UNORM,
2037                                          DXGI_FORMAT_UNKNOWN,
2038                                          DXGI_FORMAT_R8G8_UNORM,
2039                                          DXGI_FORMAT_UNKNOWN,
2040                                          DXGI_FORMAT_R8G8_UNORM,
2041                                          GL_RGBA8,
2042                                          nullptr);
2043             return info;
2044         }
2045         case GL_RG8I:
2046         {
2047             static constexpr Format info(GL_RG8I,
2048                                          angle::FormatID::R8G8_SINT,
2049                                          DXGI_FORMAT_R8G8_SINT,
2050                                          DXGI_FORMAT_R8G8_SINT,
2051                                          DXGI_FORMAT_UNKNOWN,
2052                                          DXGI_FORMAT_R8G8_SINT,
2053                                          DXGI_FORMAT_UNKNOWN,
2054                                          DXGI_FORMAT_R8G8_SINT,
2055                                          GL_RGBA8I,
2056                                          nullptr);
2057             return info;
2058         }
2059         case GL_RG8UI:
2060         {
2061             static constexpr Format info(GL_RG8UI,
2062                                          angle::FormatID::R8G8_UINT,
2063                                          DXGI_FORMAT_R8G8_UINT,
2064                                          DXGI_FORMAT_R8G8_UINT,
2065                                          DXGI_FORMAT_UNKNOWN,
2066                                          DXGI_FORMAT_R8G8_UINT,
2067                                          DXGI_FORMAT_UNKNOWN,
2068                                          DXGI_FORMAT_R8G8_UINT,
2069                                          GL_RGBA8I,
2070                                          nullptr);
2071             return info;
2072         }
2073         case GL_RG8_SNORM:
2074         {
2075             static constexpr Format info(GL_RG8_SNORM,
2076                                          angle::FormatID::R8G8_SNORM,
2077                                          DXGI_FORMAT_R8G8_SNORM,
2078                                          DXGI_FORMAT_R8G8_SNORM,
2079                                          DXGI_FORMAT_UNKNOWN,
2080                                          DXGI_FORMAT_UNKNOWN,
2081                                          DXGI_FORMAT_UNKNOWN,
2082                                          DXGI_FORMAT_R8G8_SNORM,
2083                                          GL_RGBA8_SNORM,
2084                                          nullptr);
2085             return info;
2086         }
2087         case GL_RGB:
2088         {
2089             static constexpr Format info(GL_RGB,
2090                                          angle::FormatID::R8G8B8A8_UNORM,
2091                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2092                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2093                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2094                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2095                                          DXGI_FORMAT_UNKNOWN,
2096                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2097                                          GL_RGBA8,
2098                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
2099             return info;
2100         }
2101         case GL_RGB10_A2:
2102         {
2103             static constexpr Format info(GL_RGB10_A2,
2104                                          angle::FormatID::R10G10B10A2_UNORM,
2105                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2106                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2107                                          DXGI_FORMAT_UNKNOWN,
2108                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2109                                          DXGI_FORMAT_UNKNOWN,
2110                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2111                                          GL_RGBA16_EXT,
2112                                          nullptr);
2113             return info;
2114         }
2115         case GL_RGB10_A2UI:
2116         {
2117             static constexpr Format info(GL_RGB10_A2UI,
2118                                          angle::FormatID::R10G10B10A2_UINT,
2119                                          DXGI_FORMAT_R10G10B10A2_UINT,
2120                                          DXGI_FORMAT_R10G10B10A2_UINT,
2121                                          DXGI_FORMAT_UNKNOWN,
2122                                          DXGI_FORMAT_R10G10B10A2_UINT,
2123                                          DXGI_FORMAT_UNKNOWN,
2124                                          DXGI_FORMAT_R10G10B10A2_UINT,
2125                                          GL_RGBA16I,
2126                                          nullptr);
2127             return info;
2128         }
2129         case GL_RGB10_UNORM_ANGLEX:
2130         {
2131             static constexpr Format info(GL_RGB10_UNORM_ANGLEX,
2132                                          angle::FormatID::R10G10B10X2_UNORM,
2133                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2134                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2135                                          DXGI_FORMAT_UNKNOWN,
2136                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2137                                          DXGI_FORMAT_UNKNOWN,
2138                                          DXGI_FORMAT_R10G10B10A2_UNORM,
2139                                          GL_RGBA16_EXT,
2140                                          nullptr);
2141             return info;
2142         }
2143         case GL_RGB16F:
2144         {
2145             static constexpr Format info(GL_RGB16F,
2146                                          angle::FormatID::R16G16B16A16_FLOAT,
2147                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2148                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2149                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2150                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2151                                          DXGI_FORMAT_UNKNOWN,
2152                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2153                                          GL_RGBA16F,
2154                                          Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
2155             return info;
2156         }
2157         case GL_RGB16I:
2158         {
2159             static constexpr Format info(GL_RGB16I,
2160                                          angle::FormatID::R16G16B16A16_SINT,
2161                                          DXGI_FORMAT_R16G16B16A16_SINT,
2162                                          DXGI_FORMAT_R16G16B16A16_SINT,
2163                                          DXGI_FORMAT_R16G16B16A16_SINT,
2164                                          DXGI_FORMAT_R16G16B16A16_SINT,
2165                                          DXGI_FORMAT_UNKNOWN,
2166                                          DXGI_FORMAT_R16G16B16A16_SINT,
2167                                          GL_RGBA16I,
2168                                          Initialize4ComponentData<GLshort, 0x0000, 0x0000, 0x0000, 0x0001>);
2169             return info;
2170         }
2171         case GL_RGB16UI:
2172         {
2173             static constexpr Format info(GL_RGB16UI,
2174                                          angle::FormatID::R16G16B16A16_UINT,
2175                                          DXGI_FORMAT_R16G16B16A16_UINT,
2176                                          DXGI_FORMAT_R16G16B16A16_UINT,
2177                                          DXGI_FORMAT_R16G16B16A16_UINT,
2178                                          DXGI_FORMAT_R16G16B16A16_UINT,
2179                                          DXGI_FORMAT_UNKNOWN,
2180                                          DXGI_FORMAT_R16G16B16A16_UINT,
2181                                          GL_RGBA16UI,
2182                                          Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x0001>);
2183             return info;
2184         }
2185         case GL_RGB16_EXT:
2186         {
2187             static constexpr Format info(GL_RGB16_EXT,
2188                                          angle::FormatID::R16G16B16A16_UNORM,
2189                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2190                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2191                                          DXGI_FORMAT_UNKNOWN,
2192                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2193                                          DXGI_FORMAT_UNKNOWN,
2194                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2195                                          GL_RGBA16_EXT,
2196                                          Initialize4ComponentData<GLubyte, 0x0000, 0x0000, 0x0000, 0xFFFF>);
2197             return info;
2198         }
2199         case GL_RGB16_SNORM_EXT:
2200         {
2201             static constexpr Format info(GL_RGB16_SNORM_EXT,
2202                                          angle::FormatID::R16G16B16A16_SNORM,
2203                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2204                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2205                                          DXGI_FORMAT_UNKNOWN,
2206                                          DXGI_FORMAT_UNKNOWN,
2207                                          DXGI_FORMAT_UNKNOWN,
2208                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2209                                          GL_RGBA16_SNORM_EXT,
2210                                          Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x7FFF>);
2211             return info;
2212         }
2213         case GL_RGB32F:
2214         {
2215             static constexpr Format info(GL_RGB32F,
2216                                          angle::FormatID::R32G32B32A32_FLOAT,
2217                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2218                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2219                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2220                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2221                                          DXGI_FORMAT_UNKNOWN,
2222                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2223                                          GL_RGBA32F,
2224                                          Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
2225             return info;
2226         }
2227         case GL_RGB32I:
2228         {
2229             static constexpr Format info(GL_RGB32I,
2230                                          angle::FormatID::R32G32B32A32_SINT,
2231                                          DXGI_FORMAT_R32G32B32A32_SINT,
2232                                          DXGI_FORMAT_R32G32B32A32_SINT,
2233                                          DXGI_FORMAT_R32G32B32A32_SINT,
2234                                          DXGI_FORMAT_R32G32B32A32_SINT,
2235                                          DXGI_FORMAT_UNKNOWN,
2236                                          DXGI_FORMAT_R32G32B32A32_SINT,
2237                                          GL_RGBA32I,
2238                                          Initialize4ComponentData<GLint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
2239             return info;
2240         }
2241         case GL_RGB32UI:
2242         {
2243             static constexpr Format info(GL_RGB32UI,
2244                                          angle::FormatID::R32G32B32A32_UINT,
2245                                          DXGI_FORMAT_R32G32B32A32_UINT,
2246                                          DXGI_FORMAT_R32G32B32A32_UINT,
2247                                          DXGI_FORMAT_R32G32B32A32_UINT,
2248                                          DXGI_FORMAT_R32G32B32A32_UINT,
2249                                          DXGI_FORMAT_UNKNOWN,
2250                                          DXGI_FORMAT_R32G32B32A32_UINT,
2251                                          GL_RGBA32UI,
2252                                          Initialize4ComponentData<GLuint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
2253             return info;
2254         }
2255         case GL_RGB565:
2256         {
2257             if (SupportsFormat(DXGI_FORMAT_B5G6R5_UNORM, deviceCaps))
2258             {
2259                 static constexpr Format info(GL_RGB565,
2260                                              angle::FormatID::B5G6R5_UNORM,
2261                                              DXGI_FORMAT_B5G6R5_UNORM,
2262                                              DXGI_FORMAT_B5G6R5_UNORM,
2263                                              DXGI_FORMAT_UNKNOWN,
2264                                              DXGI_FORMAT_B5G6R5_UNORM,
2265                                              DXGI_FORMAT_UNKNOWN,
2266                                              DXGI_FORMAT_B5G6R5_UNORM,
2267                                              GL_RGBA8,
2268                                              nullptr);
2269                 return info;
2270             }
2271             else
2272             {
2273                 static constexpr Format info(GL_RGB565,
2274                                              angle::FormatID::R8G8B8A8_UNORM,
2275                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2276                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2277                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2278                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2279                                              DXGI_FORMAT_UNKNOWN,
2280                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2281                                              GL_RGBA8,
2282                                              Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
2283                 return info;
2284             }
2285         }
2286         case GL_RGB5_A1:
2287         {
2288             if (SupportsFormat(DXGI_FORMAT_B5G5R5A1_UNORM, deviceCaps))
2289             {
2290                 static constexpr Format info(GL_RGB5_A1,
2291                                              angle::FormatID::B5G5R5A1_UNORM,
2292                                              DXGI_FORMAT_B5G5R5A1_UNORM,
2293                                              DXGI_FORMAT_B5G5R5A1_UNORM,
2294                                              DXGI_FORMAT_UNKNOWN,
2295                                              DXGI_FORMAT_B5G5R5A1_UNORM,
2296                                              DXGI_FORMAT_UNKNOWN,
2297                                              DXGI_FORMAT_B5G5R5A1_UNORM,
2298                                              GL_RGBA8,
2299                                              nullptr);
2300                 return info;
2301             }
2302             else
2303             {
2304                 static constexpr Format info(GL_RGB5_A1,
2305                                              angle::FormatID::R8G8B8A8_UNORM,
2306                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2307                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2308                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2309                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2310                                              DXGI_FORMAT_UNKNOWN,
2311                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2312                                              GL_RGBA8,
2313                                              nullptr);
2314                 return info;
2315             }
2316         }
2317         case GL_RGB8:
2318         {
2319             static constexpr Format info(GL_RGB8,
2320                                          angle::FormatID::R8G8B8A8_UNORM,
2321                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2322                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2323                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2324                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2325                                          DXGI_FORMAT_UNKNOWN,
2326                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2327                                          GL_RGBA8,
2328                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
2329             return info;
2330         }
2331         case GL_RGB8I:
2332         {
2333             static constexpr Format info(GL_RGB8I,
2334                                          angle::FormatID::R8G8B8A8_SINT,
2335                                          DXGI_FORMAT_R8G8B8A8_SINT,
2336                                          DXGI_FORMAT_R8G8B8A8_SINT,
2337                                          DXGI_FORMAT_R8G8B8A8_SINT,
2338                                          DXGI_FORMAT_R8G8B8A8_SINT,
2339                                          DXGI_FORMAT_UNKNOWN,
2340                                          DXGI_FORMAT_R8G8B8A8_SINT,
2341                                          GL_RGBA8I,
2342                                          Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x01>);
2343             return info;
2344         }
2345         case GL_RGB8UI:
2346         {
2347             static constexpr Format info(GL_RGB8UI,
2348                                          angle::FormatID::R8G8B8A8_UINT,
2349                                          DXGI_FORMAT_R8G8B8A8_UINT,
2350                                          DXGI_FORMAT_R8G8B8A8_UINT,
2351                                          DXGI_FORMAT_R8G8B8A8_UINT,
2352                                          DXGI_FORMAT_R8G8B8A8_UINT,
2353                                          DXGI_FORMAT_UNKNOWN,
2354                                          DXGI_FORMAT_R8G8B8A8_UINT,
2355                                          GL_RGBA8UI,
2356                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0x01>);
2357             return info;
2358         }
2359         case GL_RGB8_SNORM:
2360         {
2361             static constexpr Format info(GL_RGB8_SNORM,
2362                                          angle::FormatID::R8G8B8A8_SNORM,
2363                                          DXGI_FORMAT_R8G8B8A8_SNORM,
2364                                          DXGI_FORMAT_R8G8B8A8_SNORM,
2365                                          DXGI_FORMAT_R8G8B8A8_SNORM,
2366                                          DXGI_FORMAT_UNKNOWN,
2367                                          DXGI_FORMAT_UNKNOWN,
2368                                          DXGI_FORMAT_R8G8B8A8_SNORM,
2369                                          GL_RGBA8_SNORM,
2370                                          Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x7F>);
2371             return info;
2372         }
2373         case GL_RGB9_E5:
2374         {
2375             static constexpr Format info(GL_RGB9_E5,
2376                                          angle::FormatID::R9G9B9E5_SHAREDEXP,
2377                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
2378                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
2379                                          DXGI_FORMAT_UNKNOWN,
2380                                          DXGI_FORMAT_UNKNOWN,
2381                                          DXGI_FORMAT_UNKNOWN,
2382                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
2383                                          GL_RGBA16F_EXT,
2384                                          nullptr);
2385             return info;
2386         }
2387         case GL_RGBA:
2388         {
2389             static constexpr Format info(GL_RGBA,
2390                                          angle::FormatID::R8G8B8A8_UNORM,
2391                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2392                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2393                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2394                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2395                                          DXGI_FORMAT_UNKNOWN,
2396                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2397                                          GL_RGBA8,
2398                                          nullptr);
2399             return info;
2400         }
2401         case GL_RGBA16F:
2402         {
2403             static constexpr Format info(GL_RGBA16F,
2404                                          angle::FormatID::R16G16B16A16_FLOAT,
2405                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2406                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2407                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2408                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2409                                          DXGI_FORMAT_UNKNOWN,
2410                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
2411                                          GL_RGBA16F,
2412                                          nullptr);
2413             return info;
2414         }
2415         case GL_RGBA16I:
2416         {
2417             static constexpr Format info(GL_RGBA16I,
2418                                          angle::FormatID::R16G16B16A16_SINT,
2419                                          DXGI_FORMAT_R16G16B16A16_SINT,
2420                                          DXGI_FORMAT_R16G16B16A16_SINT,
2421                                          DXGI_FORMAT_R16G16B16A16_SINT,
2422                                          DXGI_FORMAT_R16G16B16A16_SINT,
2423                                          DXGI_FORMAT_UNKNOWN,
2424                                          DXGI_FORMAT_R16G16B16A16_SINT,
2425                                          GL_RGBA16I,
2426                                          nullptr);
2427             return info;
2428         }
2429         case GL_RGBA16UI:
2430         {
2431             static constexpr Format info(GL_RGBA16UI,
2432                                          angle::FormatID::R16G16B16A16_UINT,
2433                                          DXGI_FORMAT_R16G16B16A16_UINT,
2434                                          DXGI_FORMAT_R16G16B16A16_UINT,
2435                                          DXGI_FORMAT_R16G16B16A16_UINT,
2436                                          DXGI_FORMAT_R16G16B16A16_UINT,
2437                                          DXGI_FORMAT_UNKNOWN,
2438                                          DXGI_FORMAT_R16G16B16A16_UINT,
2439                                          GL_RGBA16UI,
2440                                          nullptr);
2441             return info;
2442         }
2443         case GL_RGBA16_EXT:
2444         {
2445             static constexpr Format info(GL_RGBA16_EXT,
2446                                          angle::FormatID::R16G16B16A16_UNORM,
2447                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2448                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2449                                          DXGI_FORMAT_UNKNOWN,
2450                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2451                                          DXGI_FORMAT_UNKNOWN,
2452                                          DXGI_FORMAT_R16G16B16A16_UNORM,
2453                                          GL_RGBA16_EXT,
2454                                          nullptr);
2455             return info;
2456         }
2457         case GL_RGBA16_SNORM_EXT:
2458         {
2459             static constexpr Format info(GL_RGBA16_SNORM_EXT,
2460                                          angle::FormatID::R16G16B16A16_SNORM,
2461                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2462                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2463                                          DXGI_FORMAT_UNKNOWN,
2464                                          DXGI_FORMAT_UNKNOWN,
2465                                          DXGI_FORMAT_UNKNOWN,
2466                                          DXGI_FORMAT_R16G16B16A16_SNORM,
2467                                          GL_RGBA16_SNORM_EXT,
2468                                          nullptr);
2469             return info;
2470         }
2471         case GL_RGBA32F:
2472         {
2473             static constexpr Format info(GL_RGBA32F,
2474                                          angle::FormatID::R32G32B32A32_FLOAT,
2475                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2476                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2477                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2478                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2479                                          DXGI_FORMAT_UNKNOWN,
2480                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
2481                                          GL_RGBA32F,
2482                                          nullptr);
2483             return info;
2484         }
2485         case GL_RGBA32I:
2486         {
2487             static constexpr Format info(GL_RGBA32I,
2488                                          angle::FormatID::R32G32B32A32_SINT,
2489                                          DXGI_FORMAT_R32G32B32A32_SINT,
2490                                          DXGI_FORMAT_R32G32B32A32_SINT,
2491                                          DXGI_FORMAT_R32G32B32A32_SINT,
2492                                          DXGI_FORMAT_R32G32B32A32_SINT,
2493                                          DXGI_FORMAT_UNKNOWN,
2494                                          DXGI_FORMAT_R32G32B32A32_SINT,
2495                                          GL_RGBA32I,
2496                                          nullptr);
2497             return info;
2498         }
2499         case GL_RGBA32UI:
2500         {
2501             static constexpr Format info(GL_RGBA32UI,
2502                                          angle::FormatID::R32G32B32A32_UINT,
2503                                          DXGI_FORMAT_R32G32B32A32_UINT,
2504                                          DXGI_FORMAT_R32G32B32A32_UINT,
2505                                          DXGI_FORMAT_R32G32B32A32_UINT,
2506                                          DXGI_FORMAT_R32G32B32A32_UINT,
2507                                          DXGI_FORMAT_UNKNOWN,
2508                                          DXGI_FORMAT_R32G32B32A32_UINT,
2509                                          GL_RGBA32UI,
2510                                          nullptr);
2511             return info;
2512         }
2513         case GL_RGBA4:
2514         {
2515             if (SupportsFormat(DXGI_FORMAT_B4G4R4A4_UNORM, deviceCaps))
2516             {
2517                 static constexpr Format info(GL_RGBA4,
2518                                              angle::FormatID::B4G4R4A4_UNORM,
2519                                              DXGI_FORMAT_B4G4R4A4_UNORM,
2520                                              DXGI_FORMAT_B4G4R4A4_UNORM,
2521                                              DXGI_FORMAT_UNKNOWN,
2522                                              DXGI_FORMAT_B4G4R4A4_UNORM,
2523                                              DXGI_FORMAT_UNKNOWN,
2524                                              DXGI_FORMAT_B4G4R4A4_UNORM,
2525                                              GL_RGBA4,
2526                                              nullptr);
2527                 return info;
2528             }
2529             else
2530             {
2531                 static constexpr Format info(GL_RGBA4,
2532                                              angle::FormatID::R8G8B8A8_UNORM,
2533                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2534                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2535                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2536                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2537                                              DXGI_FORMAT_UNKNOWN,
2538                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2539                                              GL_RGBA8,
2540                                              nullptr);
2541                 return info;
2542             }
2543         }
2544         case GL_RGBA8:
2545         {
2546             static constexpr Format info(GL_RGBA8,
2547                                          angle::FormatID::R8G8B8A8_UNORM,
2548                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2549                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2550                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2551                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2552                                          DXGI_FORMAT_UNKNOWN,
2553                                          DXGI_FORMAT_R8G8B8A8_UNORM,
2554                                          GL_RGBA8,
2555                                          nullptr);
2556             return info;
2557         }
2558         case GL_RGBA8I:
2559         {
2560             static constexpr Format info(GL_RGBA8I,
2561                                          angle::FormatID::R8G8B8A8_SINT,
2562                                          DXGI_FORMAT_R8G8B8A8_SINT,
2563                                          DXGI_FORMAT_R8G8B8A8_SINT,
2564                                          DXGI_FORMAT_R8G8B8A8_SINT,
2565                                          DXGI_FORMAT_R8G8B8A8_SINT,
2566                                          DXGI_FORMAT_UNKNOWN,
2567                                          DXGI_FORMAT_R8G8B8A8_SINT,
2568                                          GL_RGBA8I,
2569                                          nullptr);
2570             return info;
2571         }
2572         case GL_RGBA8UI:
2573         {
2574             static constexpr Format info(GL_RGBA8UI,
2575                                          angle::FormatID::R8G8B8A8_UINT,
2576                                          DXGI_FORMAT_R8G8B8A8_UINT,
2577                                          DXGI_FORMAT_R8G8B8A8_UINT,
2578                                          DXGI_FORMAT_R8G8B8A8_UINT,
2579                                          DXGI_FORMAT_R8G8B8A8_UINT,
2580                                          DXGI_FORMAT_UNKNOWN,
2581                                          DXGI_FORMAT_R8G8B8A8_UINT,
2582                                          GL_RGBA8UI,
2583                                          nullptr);
2584             return info;
2585         }
2586         case GL_RGBA8_SNORM:
2587         {
2588             static constexpr Format info(GL_RGBA8_SNORM,
2589                                          angle::FormatID::R8G8B8A8_SNORM,
2590                                          DXGI_FORMAT_R8G8B8A8_SNORM,
2591                                          DXGI_FORMAT_R8G8B8A8_SNORM,
2592                                          DXGI_FORMAT_R8G8B8A8_SNORM,
2593                                          DXGI_FORMAT_UNKNOWN,
2594                                          DXGI_FORMAT_UNKNOWN,
2595                                          DXGI_FORMAT_R8G8B8A8_SNORM,
2596                                          GL_RGBA8_SNORM,
2597                                          nullptr);
2598             return info;
2599         }
2600         case GL_RGBX8_ANGLE:
2601         {
2602             if (OnlyFL11_1Plus(deviceCaps))
2603             {
2604                 static constexpr Format info(GL_RGBX8_ANGLE,
2605                                              angle::FormatID::R8G8B8X8_UNORM,
2606                                              DXGI_FORMAT_B8G8R8X8_UNORM,
2607                                              DXGI_FORMAT_B8G8R8X8_UNORM,
2608                                              DXGI_FORMAT_UNKNOWN,
2609                                              DXGI_FORMAT_B8G8R8X8_UNORM,
2610                                              DXGI_FORMAT_UNKNOWN,
2611                                              DXGI_FORMAT_B8G8R8X8_UNORM,
2612                                              GL_RGBX8_ANGLE,
2613                                              nullptr);
2614                 return info;
2615             }
2616             else
2617             {
2618                 static constexpr Format info(GL_RGBX8_ANGLE,
2619                                              angle::FormatID::R8G8B8A8_UNORM,
2620                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2621                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2622                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2623                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2624                                              DXGI_FORMAT_UNKNOWN,
2625                                              DXGI_FORMAT_R8G8B8A8_UNORM,
2626                                              GL_RGBA8,
2627                                              nullptr);
2628                 return info;
2629             }
2630         }
2631         case GL_SR8_EXT:
2632         {
2633             static constexpr Format info(GL_SR8_EXT,
2634                                          angle::FormatID::NONE,
2635                                          DXGI_FORMAT_UNKNOWN,
2636                                          DXGI_FORMAT_UNKNOWN,
2637                                          DXGI_FORMAT_UNKNOWN,
2638                                          DXGI_FORMAT_UNKNOWN,
2639                                          DXGI_FORMAT_UNKNOWN,
2640                                          DXGI_FORMAT_UNKNOWN,
2641                                          GL_NONE,
2642                                          nullptr);
2643             return info;
2644         }
2645         case GL_SRG8_EXT:
2646         {
2647             static constexpr Format info(GL_SRG8_EXT,
2648                                          angle::FormatID::NONE,
2649                                          DXGI_FORMAT_UNKNOWN,
2650                                          DXGI_FORMAT_UNKNOWN,
2651                                          DXGI_FORMAT_UNKNOWN,
2652                                          DXGI_FORMAT_UNKNOWN,
2653                                          DXGI_FORMAT_UNKNOWN,
2654                                          DXGI_FORMAT_UNKNOWN,
2655                                          GL_NONE,
2656                                          nullptr);
2657             return info;
2658         }
2659         case GL_SRGB8:
2660         {
2661             static constexpr Format info(GL_SRGB8,
2662                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
2663                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
2664                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
2665                                          DXGI_FORMAT_UNKNOWN,
2666                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
2667                                          DXGI_FORMAT_UNKNOWN,
2668                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
2669                                          GL_SRGB8_ALPHA8,
2670                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
2671             return info;
2672         }
2673         case GL_SRGB8_ALPHA8:
2674         {
2675             static constexpr Format info(GL_SRGB8_ALPHA8,
2676                                          angle::FormatID::R8G8B8A8_UNORM_SRGB,
2677                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
2678                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
2679                                          DXGI_FORMAT_UNKNOWN,
2680                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
2681                                          DXGI_FORMAT_UNKNOWN,
2682                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
2683                                          GL_SRGB8_ALPHA8,
2684                                          nullptr);
2685             return info;
2686         }
2687         case GL_STENCIL_INDEX8:
2688         {
2689             if (OnlyFL10Plus(deviceCaps))
2690             {
2691                 static constexpr Format info(GL_STENCIL_INDEX8,
2692                                              angle::FormatID::D24_UNORM_S8_UINT,
2693                                              DXGI_FORMAT_R24G8_TYPELESS,
2694                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
2695                                              DXGI_FORMAT_UNKNOWN,
2696                                              DXGI_FORMAT_UNKNOWN,
2697                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
2698                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
2699                                              GL_RGBA32F,
2700                                              nullptr);
2701                 return info;
2702             }
2703             else
2704             {
2705                 static constexpr Format info(GL_STENCIL_INDEX8,
2706                                              angle::FormatID::D24_UNORM_S8_UINT,
2707                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
2708                                              DXGI_FORMAT_UNKNOWN,
2709                                              DXGI_FORMAT_UNKNOWN,
2710                                              DXGI_FORMAT_UNKNOWN,
2711                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
2712                                              DXGI_FORMAT_UNKNOWN,
2713                                              GL_RGBA32F,
2714                                              nullptr);
2715                 return info;
2716             }
2717         }
2718 
2719         default:
2720             break;
2721     }
2722     // clang-format on
2723 
2724     UNREACHABLE();
2725     static constexpr Format defaultInfo;
2726     return defaultInfo;
2727 }
2728 
2729 }  // namespace d3d11
2730 
2731 }  // namespace rx
2732