1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_texture_format_table.py using data from texture_format_data.json
3 //
4 // Copyright 2017 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::Format::ID::R16G16B16A16_FLOAT,
40                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
41                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
42                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
43                                          DXGI_FORMAT_UNKNOWN,
44                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
45                                          GL_RGBA16F,
46                                          nullptr);
47             return info;
48         }
49         case GL_ALPHA32F_EXT:
50         {
51             static constexpr Format info(GL_ALPHA32F_EXT,
52                                          angle::Format::ID::R32G32B32A32_FLOAT,
53                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
54                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
55                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
56                                          DXGI_FORMAT_UNKNOWN,
57                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
58                                          GL_RGBA32F,
59                                          nullptr);
60             return info;
61         }
62         case GL_ALPHA8_EXT:
63         {
64             if (OnlyFL10Plus(deviceCaps))
65             {
66                 static constexpr Format info(GL_ALPHA8_EXT,
67                                              angle::Format::ID::A8_UNORM,
68                                              DXGI_FORMAT_A8_UNORM,
69                                              DXGI_FORMAT_A8_UNORM,
70                                              DXGI_FORMAT_A8_UNORM,
71                                              DXGI_FORMAT_UNKNOWN,
72                                              DXGI_FORMAT_A8_UNORM,
73                                              GL_RGBA8,
74                                              nullptr);
75                 return info;
76             }
77             else
78             {
79                 static constexpr Format info(GL_ALPHA8_EXT,
80                                              angle::Format::ID::R8G8B8A8_UNORM,
81                                              DXGI_FORMAT_R8G8B8A8_UNORM,
82                                              DXGI_FORMAT_R8G8B8A8_UNORM,
83                                              DXGI_FORMAT_R8G8B8A8_UNORM,
84                                              DXGI_FORMAT_UNKNOWN,
85                                              DXGI_FORMAT_R8G8B8A8_UNORM,
86                                              GL_RGBA8,
87                                              nullptr);
88                 return info;
89             }
90         }
91         case GL_BGR565_ANGLEX:
92         {
93             if (SupportsFormat(DXGI_FORMAT_B5G6R5_UNORM, deviceCaps))
94             {
95                 static constexpr Format info(GL_BGR565_ANGLEX,
96                                              angle::Format::ID::B5G6R5_UNORM,
97                                              DXGI_FORMAT_B5G6R5_UNORM,
98                                              DXGI_FORMAT_B5G6R5_UNORM,
99                                              DXGI_FORMAT_B5G6R5_UNORM,
100                                              DXGI_FORMAT_UNKNOWN,
101                                              DXGI_FORMAT_B5G6R5_UNORM,
102                                              GL_RGBA8,
103                                              nullptr);
104                 return info;
105             }
106             else
107             {
108                 static constexpr Format info(GL_BGR565_ANGLEX,
109                                              angle::Format::ID::R8G8B8A8_UNORM,
110                                              DXGI_FORMAT_R8G8B8A8_UNORM,
111                                              DXGI_FORMAT_R8G8B8A8_UNORM,
112                                              DXGI_FORMAT_R8G8B8A8_UNORM,
113                                              DXGI_FORMAT_UNKNOWN,
114                                              DXGI_FORMAT_R8G8B8A8_UNORM,
115                                              GL_RGBA8,
116                                              nullptr);
117                 return info;
118             }
119         }
120         case GL_BGR5_A1_ANGLEX:
121         {
122             static constexpr Format info(GL_BGR5_A1_ANGLEX,
123                                          angle::Format::ID::B8G8R8A8_UNORM,
124                                          DXGI_FORMAT_B8G8R8A8_UNORM,
125                                          DXGI_FORMAT_B8G8R8A8_UNORM,
126                                          DXGI_FORMAT_B8G8R8A8_UNORM,
127                                          DXGI_FORMAT_UNKNOWN,
128                                          DXGI_FORMAT_B8G8R8A8_UNORM,
129                                          GL_BGRA8_EXT,
130                                          nullptr);
131             return info;
132         }
133         case GL_BGRA4_ANGLEX:
134         {
135             static constexpr Format info(GL_BGRA4_ANGLEX,
136                                          angle::Format::ID::B8G8R8A8_UNORM,
137                                          DXGI_FORMAT_B8G8R8A8_UNORM,
138                                          DXGI_FORMAT_B8G8R8A8_UNORM,
139                                          DXGI_FORMAT_B8G8R8A8_UNORM,
140                                          DXGI_FORMAT_UNKNOWN,
141                                          DXGI_FORMAT_B8G8R8A8_UNORM,
142                                          GL_BGRA8_EXT,
143                                          nullptr);
144             return info;
145         }
146         case GL_BGRA8_EXT:
147         {
148             static constexpr Format info(GL_BGRA8_EXT,
149                                          angle::Format::ID::B8G8R8A8_UNORM,
150                                          DXGI_FORMAT_B8G8R8A8_UNORM,
151                                          DXGI_FORMAT_B8G8R8A8_UNORM,
152                                          DXGI_FORMAT_B8G8R8A8_UNORM,
153                                          DXGI_FORMAT_UNKNOWN,
154                                          DXGI_FORMAT_B8G8R8A8_UNORM,
155                                          GL_BGRA8_EXT,
156                                          nullptr);
157             return info;
158         }
159         case GL_BGRA8_SRGB_ANGLEX:
160         {
161             static constexpr Format info(GL_BGRA8_SRGB_ANGLEX,
162                                          angle::Format::ID::B8G8R8A8_UNORM_SRGB,
163                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
164                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
165                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
166                                          DXGI_FORMAT_UNKNOWN,
167                                          DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
168                                          GL_BGRA8_SRGB_ANGLEX,
169                                          nullptr);
170             return info;
171         }
172         case GL_COMPRESSED_R11_EAC:
173         {
174             static constexpr Format info(GL_COMPRESSED_R11_EAC,
175                                          angle::Format::ID::R8_UNORM,
176                                          DXGI_FORMAT_R8_UNORM,
177                                          DXGI_FORMAT_R8_UNORM,
178                                          DXGI_FORMAT_R8_UNORM,
179                                          DXGI_FORMAT_UNKNOWN,
180                                          DXGI_FORMAT_R8_UNORM,
181                                          GL_RGBA8,
182                                          nullptr);
183             return info;
184         }
185         case GL_COMPRESSED_RG11_EAC:
186         {
187             static constexpr Format info(GL_COMPRESSED_RG11_EAC,
188                                          angle::Format::ID::R8G8_UNORM,
189                                          DXGI_FORMAT_R8G8_UNORM,
190                                          DXGI_FORMAT_R8G8_UNORM,
191                                          DXGI_FORMAT_R8G8_UNORM,
192                                          DXGI_FORMAT_UNKNOWN,
193                                          DXGI_FORMAT_R8G8_UNORM,
194                                          GL_RGBA8,
195                                          nullptr);
196             return info;
197         }
198         case GL_COMPRESSED_RGB8_ETC2:
199         {
200             static constexpr Format info(GL_COMPRESSED_RGB8_ETC2,
201                                          angle::Format::ID::R8G8B8A8_UNORM,
202                                          DXGI_FORMAT_R8G8B8A8_UNORM,
203                                          DXGI_FORMAT_R8G8B8A8_UNORM,
204                                          DXGI_FORMAT_R8G8B8A8_UNORM,
205                                          DXGI_FORMAT_UNKNOWN,
206                                          DXGI_FORMAT_R8G8B8A8_UNORM,
207                                          GL_RGBA8,
208                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
209             return info;
210         }
211         case GL_COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE:
212         {
213             static constexpr Format info(GL_COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE,
214                                          angle::Format::ID::BC1_RGB_UNORM_BLOCK,
215                                          DXGI_FORMAT_BC1_UNORM,
216                                          DXGI_FORMAT_BC1_UNORM,
217                                          DXGI_FORMAT_UNKNOWN,
218                                          DXGI_FORMAT_UNKNOWN,
219                                          DXGI_FORMAT_BC1_UNORM,
220                                          GL_RGBA8,
221                                          nullptr);
222             return info;
223         }
224         case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
225         {
226             static constexpr Format info(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
227                                          angle::Format::ID::R8G8B8A8_UNORM,
228                                          DXGI_FORMAT_R8G8B8A8_UNORM,
229                                          DXGI_FORMAT_R8G8B8A8_UNORM,
230                                          DXGI_FORMAT_R8G8B8A8_UNORM,
231                                          DXGI_FORMAT_UNKNOWN,
232                                          DXGI_FORMAT_R8G8B8A8_UNORM,
233                                          GL_RGBA8,
234                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
235             return info;
236         }
237         case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
238         {
239             static constexpr Format info(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE,
240                                          angle::Format::ID::BC1_RGBA_UNORM_BLOCK,
241                                          DXGI_FORMAT_BC1_UNORM,
242                                          DXGI_FORMAT_BC1_UNORM,
243                                          DXGI_FORMAT_UNKNOWN,
244                                          DXGI_FORMAT_UNKNOWN,
245                                          DXGI_FORMAT_BC1_UNORM,
246                                          GL_RGBA8,
247                                          nullptr);
248             return info;
249         }
250         case GL_COMPRESSED_RGBA8_ETC2_EAC:
251         {
252             static constexpr Format info(GL_COMPRESSED_RGBA8_ETC2_EAC,
253                                          angle::Format::ID::R8G8B8A8_UNORM,
254                                          DXGI_FORMAT_R8G8B8A8_UNORM,
255                                          DXGI_FORMAT_R8G8B8A8_UNORM,
256                                          DXGI_FORMAT_R8G8B8A8_UNORM,
257                                          DXGI_FORMAT_UNKNOWN,
258                                          DXGI_FORMAT_R8G8B8A8_UNORM,
259                                          GL_RGBA8,
260                                          nullptr);
261             return info;
262         }
263         case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
264         {
265             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x10_KHR,
266                                          angle::Format::ID::NONE,
267                                          DXGI_FORMAT_UNKNOWN,
268                                          DXGI_FORMAT_UNKNOWN,
269                                          DXGI_FORMAT_UNKNOWN,
270                                          DXGI_FORMAT_UNKNOWN,
271                                          DXGI_FORMAT_UNKNOWN,
272                                          GL_NONE,
273                                          nullptr);
274             return info;
275         }
276         case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
277         {
278             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x5_KHR,
279                                          angle::Format::ID::NONE,
280                                          DXGI_FORMAT_UNKNOWN,
281                                          DXGI_FORMAT_UNKNOWN,
282                                          DXGI_FORMAT_UNKNOWN,
283                                          DXGI_FORMAT_UNKNOWN,
284                                          DXGI_FORMAT_UNKNOWN,
285                                          GL_NONE,
286                                          nullptr);
287             return info;
288         }
289         case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
290         {
291             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x6_KHR,
292                                          angle::Format::ID::NONE,
293                                          DXGI_FORMAT_UNKNOWN,
294                                          DXGI_FORMAT_UNKNOWN,
295                                          DXGI_FORMAT_UNKNOWN,
296                                          DXGI_FORMAT_UNKNOWN,
297                                          DXGI_FORMAT_UNKNOWN,
298                                          GL_NONE,
299                                          nullptr);
300             return info;
301         }
302         case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
303         {
304             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x8_KHR,
305                                          angle::Format::ID::NONE,
306                                          DXGI_FORMAT_UNKNOWN,
307                                          DXGI_FORMAT_UNKNOWN,
308                                          DXGI_FORMAT_UNKNOWN,
309                                          DXGI_FORMAT_UNKNOWN,
310                                          DXGI_FORMAT_UNKNOWN,
311                                          GL_NONE,
312                                          nullptr);
313             return info;
314         }
315         case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
316         {
317             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x10_KHR,
318                                          angle::Format::ID::NONE,
319                                          DXGI_FORMAT_UNKNOWN,
320                                          DXGI_FORMAT_UNKNOWN,
321                                          DXGI_FORMAT_UNKNOWN,
322                                          DXGI_FORMAT_UNKNOWN,
323                                          DXGI_FORMAT_UNKNOWN,
324                                          GL_NONE,
325                                          nullptr);
326             return info;
327         }
328         case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
329         {
330             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x12_KHR,
331                                          angle::Format::ID::NONE,
332                                          DXGI_FORMAT_UNKNOWN,
333                                          DXGI_FORMAT_UNKNOWN,
334                                          DXGI_FORMAT_UNKNOWN,
335                                          DXGI_FORMAT_UNKNOWN,
336                                          DXGI_FORMAT_UNKNOWN,
337                                          GL_NONE,
338                                          nullptr);
339             return info;
340         }
341         case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
342         {
343             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
344                                          angle::Format::ID::NONE,
345                                          DXGI_FORMAT_UNKNOWN,
346                                          DXGI_FORMAT_UNKNOWN,
347                                          DXGI_FORMAT_UNKNOWN,
348                                          DXGI_FORMAT_UNKNOWN,
349                                          DXGI_FORMAT_UNKNOWN,
350                                          GL_NONE,
351                                          nullptr);
352             return info;
353         }
354         case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
355         {
356             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x4_KHR,
357                                          angle::Format::ID::NONE,
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_5x5_KHR:
368         {
369             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5_KHR,
370                                          angle::Format::ID::NONE,
371                                          DXGI_FORMAT_UNKNOWN,
372                                          DXGI_FORMAT_UNKNOWN,
373                                          DXGI_FORMAT_UNKNOWN,
374                                          DXGI_FORMAT_UNKNOWN,
375                                          DXGI_FORMAT_UNKNOWN,
376                                          GL_NONE,
377                                          nullptr);
378             return info;
379         }
380         case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
381         {
382             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x5_KHR,
383                                          angle::Format::ID::NONE,
384                                          DXGI_FORMAT_UNKNOWN,
385                                          DXGI_FORMAT_UNKNOWN,
386                                          DXGI_FORMAT_UNKNOWN,
387                                          DXGI_FORMAT_UNKNOWN,
388                                          DXGI_FORMAT_UNKNOWN,
389                                          GL_NONE,
390                                          nullptr);
391             return info;
392         }
393         case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
394         {
395             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6_KHR,
396                                          angle::Format::ID::NONE,
397                                          DXGI_FORMAT_UNKNOWN,
398                                          DXGI_FORMAT_UNKNOWN,
399                                          DXGI_FORMAT_UNKNOWN,
400                                          DXGI_FORMAT_UNKNOWN,
401                                          DXGI_FORMAT_UNKNOWN,
402                                          GL_NONE,
403                                          nullptr);
404             return info;
405         }
406         case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
407         {
408             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x5_KHR,
409                                          angle::Format::ID::NONE,
410                                          DXGI_FORMAT_UNKNOWN,
411                                          DXGI_FORMAT_UNKNOWN,
412                                          DXGI_FORMAT_UNKNOWN,
413                                          DXGI_FORMAT_UNKNOWN,
414                                          DXGI_FORMAT_UNKNOWN,
415                                          GL_NONE,
416                                          nullptr);
417             return info;
418         }
419         case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
420         {
421             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x6_KHR,
422                                          angle::Format::ID::NONE,
423                                          DXGI_FORMAT_UNKNOWN,
424                                          DXGI_FORMAT_UNKNOWN,
425                                          DXGI_FORMAT_UNKNOWN,
426                                          DXGI_FORMAT_UNKNOWN,
427                                          DXGI_FORMAT_UNKNOWN,
428                                          GL_NONE,
429                                          nullptr);
430             return info;
431         }
432         case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
433         {
434             static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x8_KHR,
435                                          angle::Format::ID::NONE,
436                                          DXGI_FORMAT_UNKNOWN,
437                                          DXGI_FORMAT_UNKNOWN,
438                                          DXGI_FORMAT_UNKNOWN,
439                                          DXGI_FORMAT_UNKNOWN,
440                                          DXGI_FORMAT_UNKNOWN,
441                                          GL_NONE,
442                                          nullptr);
443             return info;
444         }
445         case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
446         {
447             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
448                                          angle::Format::ID::BC1_RGBA_UNORM_BLOCK,
449                                          DXGI_FORMAT_BC1_UNORM,
450                                          DXGI_FORMAT_BC1_UNORM,
451                                          DXGI_FORMAT_UNKNOWN,
452                                          DXGI_FORMAT_UNKNOWN,
453                                          DXGI_FORMAT_BC1_UNORM,
454                                          GL_RGBA8,
455                                          nullptr);
456             return info;
457         }
458         case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
459         {
460             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE,
461                                          angle::Format::ID::BC2_RGBA_UNORM_BLOCK,
462                                          DXGI_FORMAT_BC2_UNORM,
463                                          DXGI_FORMAT_BC2_UNORM,
464                                          DXGI_FORMAT_UNKNOWN,
465                                          DXGI_FORMAT_UNKNOWN,
466                                          DXGI_FORMAT_BC2_UNORM,
467                                          GL_RGBA8,
468                                          nullptr);
469             return info;
470         }
471         case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
472         {
473             static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE,
474                                          angle::Format::ID::BC3_RGBA_UNORM_BLOCK,
475                                          DXGI_FORMAT_BC3_UNORM,
476                                          DXGI_FORMAT_BC3_UNORM,
477                                          DXGI_FORMAT_UNKNOWN,
478                                          DXGI_FORMAT_UNKNOWN,
479                                          DXGI_FORMAT_BC3_UNORM,
480                                          GL_RGBA8,
481                                          nullptr);
482             return info;
483         }
484         case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
485         {
486             static constexpr Format info(GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
487                                          angle::Format::ID::BC1_RGB_UNORM_BLOCK,
488                                          DXGI_FORMAT_BC1_UNORM,
489                                          DXGI_FORMAT_BC1_UNORM,
490                                          DXGI_FORMAT_UNKNOWN,
491                                          DXGI_FORMAT_UNKNOWN,
492                                          DXGI_FORMAT_BC1_UNORM,
493                                          GL_RGBA8,
494                                          nullptr);
495             return info;
496         }
497         case GL_COMPRESSED_SIGNED_R11_EAC:
498         {
499             static constexpr Format info(GL_COMPRESSED_SIGNED_R11_EAC,
500                                          angle::Format::ID::R8_SNORM,
501                                          DXGI_FORMAT_R8_SNORM,
502                                          DXGI_FORMAT_R8_SNORM,
503                                          DXGI_FORMAT_UNKNOWN,
504                                          DXGI_FORMAT_UNKNOWN,
505                                          DXGI_FORMAT_R8_SNORM,
506                                          GL_RGBA8_SNORM,
507                                          nullptr);
508             return info;
509         }
510         case GL_COMPRESSED_SIGNED_RG11_EAC:
511         {
512             static constexpr Format info(GL_COMPRESSED_SIGNED_RG11_EAC,
513                                          angle::Format::ID::R8G8_SNORM,
514                                          DXGI_FORMAT_R8G8_SNORM,
515                                          DXGI_FORMAT_R8G8_SNORM,
516                                          DXGI_FORMAT_UNKNOWN,
517                                          DXGI_FORMAT_UNKNOWN,
518                                          DXGI_FORMAT_R8G8_SNORM,
519                                          GL_RGBA8_SNORM,
520                                          nullptr);
521             return info;
522         }
523         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
524         {
525             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
526                                          angle::Format::ID::NONE,
527                                          DXGI_FORMAT_UNKNOWN,
528                                          DXGI_FORMAT_UNKNOWN,
529                                          DXGI_FORMAT_UNKNOWN,
530                                          DXGI_FORMAT_UNKNOWN,
531                                          DXGI_FORMAT_UNKNOWN,
532                                          GL_NONE,
533                                          nullptr);
534             return info;
535         }
536         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
537         {
538             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
539                                          angle::Format::ID::NONE,
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_SRGB8_ALPHA8_ASTC_10x6_KHR:
550         {
551             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
552                                          angle::Format::ID::NONE,
553                                          DXGI_FORMAT_UNKNOWN,
554                                          DXGI_FORMAT_UNKNOWN,
555                                          DXGI_FORMAT_UNKNOWN,
556                                          DXGI_FORMAT_UNKNOWN,
557                                          DXGI_FORMAT_UNKNOWN,
558                                          GL_NONE,
559                                          nullptr);
560             return info;
561         }
562         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
563         {
564             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
565                                          angle::Format::ID::NONE,
566                                          DXGI_FORMAT_UNKNOWN,
567                                          DXGI_FORMAT_UNKNOWN,
568                                          DXGI_FORMAT_UNKNOWN,
569                                          DXGI_FORMAT_UNKNOWN,
570                                          DXGI_FORMAT_UNKNOWN,
571                                          GL_NONE,
572                                          nullptr);
573             return info;
574         }
575         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
576         {
577             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
578                                          angle::Format::ID::NONE,
579                                          DXGI_FORMAT_UNKNOWN,
580                                          DXGI_FORMAT_UNKNOWN,
581                                          DXGI_FORMAT_UNKNOWN,
582                                          DXGI_FORMAT_UNKNOWN,
583                                          DXGI_FORMAT_UNKNOWN,
584                                          GL_NONE,
585                                          nullptr);
586             return info;
587         }
588         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
589         {
590             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
591                                          angle::Format::ID::NONE,
592                                          DXGI_FORMAT_UNKNOWN,
593                                          DXGI_FORMAT_UNKNOWN,
594                                          DXGI_FORMAT_UNKNOWN,
595                                          DXGI_FORMAT_UNKNOWN,
596                                          DXGI_FORMAT_UNKNOWN,
597                                          GL_NONE,
598                                          nullptr);
599             return info;
600         }
601         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
602         {
603             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
604                                          angle::Format::ID::NONE,
605                                          DXGI_FORMAT_UNKNOWN,
606                                          DXGI_FORMAT_UNKNOWN,
607                                          DXGI_FORMAT_UNKNOWN,
608                                          DXGI_FORMAT_UNKNOWN,
609                                          DXGI_FORMAT_UNKNOWN,
610                                          GL_NONE,
611                                          nullptr);
612             return info;
613         }
614         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
615         {
616             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
617                                          angle::Format::ID::NONE,
618                                          DXGI_FORMAT_UNKNOWN,
619                                          DXGI_FORMAT_UNKNOWN,
620                                          DXGI_FORMAT_UNKNOWN,
621                                          DXGI_FORMAT_UNKNOWN,
622                                          DXGI_FORMAT_UNKNOWN,
623                                          GL_NONE,
624                                          nullptr);
625             return info;
626         }
627         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
628         {
629             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
630                                          angle::Format::ID::NONE,
631                                          DXGI_FORMAT_UNKNOWN,
632                                          DXGI_FORMAT_UNKNOWN,
633                                          DXGI_FORMAT_UNKNOWN,
634                                          DXGI_FORMAT_UNKNOWN,
635                                          DXGI_FORMAT_UNKNOWN,
636                                          GL_NONE,
637                                          nullptr);
638             return info;
639         }
640         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
641         {
642             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
643                                          angle::Format::ID::NONE,
644                                          DXGI_FORMAT_UNKNOWN,
645                                          DXGI_FORMAT_UNKNOWN,
646                                          DXGI_FORMAT_UNKNOWN,
647                                          DXGI_FORMAT_UNKNOWN,
648                                          DXGI_FORMAT_UNKNOWN,
649                                          GL_NONE,
650                                          nullptr);
651             return info;
652         }
653         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
654         {
655             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
656                                          angle::Format::ID::NONE,
657                                          DXGI_FORMAT_UNKNOWN,
658                                          DXGI_FORMAT_UNKNOWN,
659                                          DXGI_FORMAT_UNKNOWN,
660                                          DXGI_FORMAT_UNKNOWN,
661                                          DXGI_FORMAT_UNKNOWN,
662                                          GL_NONE,
663                                          nullptr);
664             return info;
665         }
666         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
667         {
668             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
669                                          angle::Format::ID::NONE,
670                                          DXGI_FORMAT_UNKNOWN,
671                                          DXGI_FORMAT_UNKNOWN,
672                                          DXGI_FORMAT_UNKNOWN,
673                                          DXGI_FORMAT_UNKNOWN,
674                                          DXGI_FORMAT_UNKNOWN,
675                                          GL_NONE,
676                                          nullptr);
677             return info;
678         }
679         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
680         {
681             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
682                                          angle::Format::ID::NONE,
683                                          DXGI_FORMAT_UNKNOWN,
684                                          DXGI_FORMAT_UNKNOWN,
685                                          DXGI_FORMAT_UNKNOWN,
686                                          DXGI_FORMAT_UNKNOWN,
687                                          DXGI_FORMAT_UNKNOWN,
688                                          GL_NONE,
689                                          nullptr);
690             return info;
691         }
692         case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
693         {
694             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
695                                          angle::Format::ID::NONE,
696                                          DXGI_FORMAT_UNKNOWN,
697                                          DXGI_FORMAT_UNKNOWN,
698                                          DXGI_FORMAT_UNKNOWN,
699                                          DXGI_FORMAT_UNKNOWN,
700                                          DXGI_FORMAT_UNKNOWN,
701                                          GL_NONE,
702                                          nullptr);
703             return info;
704         }
705         case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
706         {
707             static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
708                                          angle::Format::ID::R8G8B8A8_UNORM_SRGB,
709                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
710                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
711                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
712                                          DXGI_FORMAT_UNKNOWN,
713                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
714                                          GL_SRGB8_ALPHA8,
715                                          nullptr);
716             return info;
717         }
718         case GL_COMPRESSED_SRGB8_ETC2:
719         {
720             static constexpr Format info(GL_COMPRESSED_SRGB8_ETC2,
721                                          angle::Format::ID::R8G8B8A8_UNORM_SRGB,
722                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
723                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
724                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
725                                          DXGI_FORMAT_UNKNOWN,
726                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
727                                          GL_SRGB8_ALPHA8,
728                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
729             return info;
730         }
731         case GL_COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE:
732         {
733             static constexpr Format info(GL_COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE,
734                                          angle::Format::ID::BC1_RGB_UNORM_SRGB_BLOCK,
735                                          DXGI_FORMAT_BC1_UNORM_SRGB,
736                                          DXGI_FORMAT_BC1_UNORM_SRGB,
737                                          DXGI_FORMAT_UNKNOWN,
738                                          DXGI_FORMAT_UNKNOWN,
739                                          DXGI_FORMAT_BC1_UNORM_SRGB,
740                                          GL_RGBA8,
741                                          nullptr);
742             return info;
743         }
744         case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
745         {
746             static constexpr Format info(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
747                                          angle::Format::ID::R8G8B8A8_UNORM_SRGB,
748                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
749                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
750                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
751                                          DXGI_FORMAT_UNKNOWN,
752                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
753                                          GL_SRGB8_ALPHA8,
754                                          nullptr);
755             return info;
756         }
757         case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE:
758         {
759             static constexpr Format info(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE,
760                                          angle::Format::ID::BC1_RGBA_UNORM_SRGB_BLOCK,
761                                          DXGI_FORMAT_BC1_UNORM_SRGB,
762                                          DXGI_FORMAT_BC1_UNORM_SRGB,
763                                          DXGI_FORMAT_UNKNOWN,
764                                          DXGI_FORMAT_UNKNOWN,
765                                          DXGI_FORMAT_BC1_UNORM_SRGB,
766                                          GL_RGBA8,
767                                          nullptr);
768             return info;
769         }
770         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
771         {
772             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
773                                          angle::Format::ID::BC1_RGBA_UNORM_SRGB_BLOCK,
774                                          DXGI_FORMAT_BC1_UNORM_SRGB,
775                                          DXGI_FORMAT_BC1_UNORM_SRGB,
776                                          DXGI_FORMAT_UNKNOWN,
777                                          DXGI_FORMAT_UNKNOWN,
778                                          DXGI_FORMAT_BC1_UNORM_SRGB,
779                                          GL_RGBA8,
780                                          nullptr);
781             return info;
782         }
783         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
784         {
785             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
786                                          angle::Format::ID::BC2_RGBA_UNORM_SRGB_BLOCK,
787                                          DXGI_FORMAT_BC2_UNORM_SRGB,
788                                          DXGI_FORMAT_BC2_UNORM_SRGB,
789                                          DXGI_FORMAT_UNKNOWN,
790                                          DXGI_FORMAT_UNKNOWN,
791                                          DXGI_FORMAT_BC2_UNORM_SRGB,
792                                          GL_RGBA8,
793                                          nullptr);
794             return info;
795         }
796         case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
797         {
798             static constexpr Format info(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
799                                          angle::Format::ID::BC3_RGBA_UNORM_SRGB_BLOCK,
800                                          DXGI_FORMAT_BC3_UNORM_SRGB,
801                                          DXGI_FORMAT_BC3_UNORM_SRGB,
802                                          DXGI_FORMAT_UNKNOWN,
803                                          DXGI_FORMAT_UNKNOWN,
804                                          DXGI_FORMAT_BC3_UNORM_SRGB,
805                                          GL_RGBA8,
806                                          nullptr);
807             return info;
808         }
809         case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
810         {
811             static constexpr Format info(GL_COMPRESSED_SRGB_S3TC_DXT1_EXT,
812                                          angle::Format::ID::BC1_RGB_UNORM_SRGB_BLOCK,
813                                          DXGI_FORMAT_BC1_UNORM_SRGB,
814                                          DXGI_FORMAT_BC1_UNORM_SRGB,
815                                          DXGI_FORMAT_UNKNOWN,
816                                          DXGI_FORMAT_UNKNOWN,
817                                          DXGI_FORMAT_BC1_UNORM_SRGB,
818                                          GL_RGBA8,
819                                          nullptr);
820             return info;
821         }
822         case GL_DEPTH24_STENCIL8:
823         {
824             if (OnlyFL10Plus(deviceCaps))
825             {
826                 static constexpr Format info(GL_DEPTH24_STENCIL8,
827                                              angle::Format::ID::D24_UNORM_S8_UINT,
828                                              DXGI_FORMAT_R24G8_TYPELESS,
829                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
830                                              DXGI_FORMAT_UNKNOWN,
831                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
832                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
833                                              GL_RGBA32F,
834                                              nullptr);
835                 return info;
836             }
837             else
838             {
839                 static constexpr Format info(GL_DEPTH24_STENCIL8,
840                                              angle::Format::ID::D24_UNORM_S8_UINT,
841                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
842                                              DXGI_FORMAT_UNKNOWN,
843                                              DXGI_FORMAT_UNKNOWN,
844                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
845                                              DXGI_FORMAT_UNKNOWN,
846                                              GL_RGBA32F,
847                                              nullptr);
848                 return info;
849             }
850         }
851         case GL_DEPTH32F_STENCIL8:
852         {
853             static constexpr Format info(GL_DEPTH32F_STENCIL8,
854                                          angle::Format::ID::D32_FLOAT_S8X24_UINT,
855                                          DXGI_FORMAT_R32G8X24_TYPELESS,
856                                          DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
857                                          DXGI_FORMAT_UNKNOWN,
858                                          DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
859                                          DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
860                                          GL_RGBA32F,
861                                          nullptr);
862             return info;
863         }
864         case GL_DEPTH_COMPONENT16:
865         {
866             if (OnlyFL10Plus(deviceCaps))
867             {
868                 static constexpr Format info(GL_DEPTH_COMPONENT16,
869                                              angle::Format::ID::D16_UNORM,
870                                              DXGI_FORMAT_R16_TYPELESS,
871                                              DXGI_FORMAT_R16_UNORM,
872                                              DXGI_FORMAT_UNKNOWN,
873                                              DXGI_FORMAT_D16_UNORM,
874                                              DXGI_FORMAT_R16_UNORM,
875                                              GL_RGBA16_EXT,
876                                              nullptr);
877                 return info;
878             }
879             else
880             {
881                 static constexpr Format info(GL_DEPTH_COMPONENT16,
882                                              angle::Format::ID::D16_UNORM,
883                                              DXGI_FORMAT_D16_UNORM,
884                                              DXGI_FORMAT_UNKNOWN,
885                                              DXGI_FORMAT_UNKNOWN,
886                                              DXGI_FORMAT_D16_UNORM,
887                                              DXGI_FORMAT_UNKNOWN,
888                                              GL_RGBA16_EXT,
889                                              nullptr);
890                 return info;
891             }
892         }
893         case GL_DEPTH_COMPONENT24:
894         {
895             if (OnlyFL10Plus(deviceCaps))
896             {
897                 static constexpr Format info(GL_DEPTH_COMPONENT24,
898                                              angle::Format::ID::D24_UNORM_S8_UINT,
899                                              DXGI_FORMAT_R24G8_TYPELESS,
900                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
901                                              DXGI_FORMAT_UNKNOWN,
902                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
903                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
904                                              GL_RGBA32F,
905                                              nullptr);
906                 return info;
907             }
908             else
909             {
910                 static constexpr Format info(GL_DEPTH_COMPONENT24,
911                                              angle::Format::ID::D24_UNORM_S8_UINT,
912                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
913                                              DXGI_FORMAT_UNKNOWN,
914                                              DXGI_FORMAT_UNKNOWN,
915                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
916                                              DXGI_FORMAT_UNKNOWN,
917                                              GL_RGBA32F,
918                                              nullptr);
919                 return info;
920             }
921         }
922         case GL_DEPTH_COMPONENT32F:
923         {
924             static constexpr Format info(GL_DEPTH_COMPONENT32F,
925                                          angle::Format::ID::D32_FLOAT,
926                                          DXGI_FORMAT_R32_TYPELESS,
927                                          DXGI_FORMAT_R32_FLOAT,
928                                          DXGI_FORMAT_UNKNOWN,
929                                          DXGI_FORMAT_D32_FLOAT,
930                                          DXGI_FORMAT_R32_FLOAT,
931                                          GL_RGBA32F,
932                                          nullptr);
933             return info;
934         }
935         case GL_DEPTH_COMPONENT32_OES:
936         {
937             if (OnlyFL10Plus(deviceCaps))
938             {
939                 static constexpr Format info(GL_DEPTH_COMPONENT32_OES,
940                                              angle::Format::ID::D24_UNORM_S8_UINT,
941                                              DXGI_FORMAT_R24G8_TYPELESS,
942                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
943                                              DXGI_FORMAT_UNKNOWN,
944                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
945                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
946                                              GL_RGBA32F,
947                                              nullptr);
948                 return info;
949             }
950             else
951             {
952                 static constexpr Format info(GL_DEPTH_COMPONENT32_OES,
953                                              angle::Format::ID::D24_UNORM_S8_UINT,
954                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
955                                              DXGI_FORMAT_UNKNOWN,
956                                              DXGI_FORMAT_UNKNOWN,
957                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
958                                              DXGI_FORMAT_UNKNOWN,
959                                              GL_RGBA32F,
960                                              nullptr);
961                 return info;
962             }
963         }
964         case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
965         {
966             static constexpr Format info(GL_ETC1_RGB8_LOSSY_DECODE_ANGLE,
967                                          angle::Format::ID::BC1_RGB_UNORM_BLOCK,
968                                          DXGI_FORMAT_BC1_UNORM,
969                                          DXGI_FORMAT_BC1_UNORM,
970                                          DXGI_FORMAT_UNKNOWN,
971                                          DXGI_FORMAT_UNKNOWN,
972                                          DXGI_FORMAT_BC1_UNORM,
973                                          GL_RGBA8,
974                                          nullptr);
975             return info;
976         }
977         case GL_ETC1_RGB8_OES:
978         {
979             static constexpr Format info(GL_ETC1_RGB8_OES,
980                                          angle::Format::ID::R8G8B8A8_UNORM,
981                                          DXGI_FORMAT_R8G8B8A8_UNORM,
982                                          DXGI_FORMAT_R8G8B8A8_UNORM,
983                                          DXGI_FORMAT_R8G8B8A8_UNORM,
984                                          DXGI_FORMAT_UNKNOWN,
985                                          DXGI_FORMAT_R8G8B8A8_UNORM,
986                                          GL_RGBA8,
987                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
988             return info;
989         }
990         case GL_LUMINANCE16F_EXT:
991         {
992             static constexpr Format info(GL_LUMINANCE16F_EXT,
993                                          angle::Format::ID::R16G16B16A16_FLOAT,
994                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
995                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
996                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
997                                          DXGI_FORMAT_UNKNOWN,
998                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
999                                          GL_RGBA16F,
1000                                          Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
1001             return info;
1002         }
1003         case GL_LUMINANCE32F_EXT:
1004         {
1005             static constexpr Format info(GL_LUMINANCE32F_EXT,
1006                                          angle::Format::ID::R32G32B32A32_FLOAT,
1007                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1008                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1009                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1010                                          DXGI_FORMAT_UNKNOWN,
1011                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1012                                          GL_RGBA32F,
1013                                          Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
1014             return info;
1015         }
1016         case GL_LUMINANCE8_ALPHA8_EXT:
1017         {
1018             static constexpr Format info(GL_LUMINANCE8_ALPHA8_EXT,
1019                                          angle::Format::ID::R8G8B8A8_UNORM,
1020                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1021                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1022                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1023                                          DXGI_FORMAT_UNKNOWN,
1024                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1025                                          GL_RGBA8,
1026                                          nullptr);
1027             return info;
1028         }
1029         case GL_LUMINANCE8_EXT:
1030         {
1031             static constexpr Format info(GL_LUMINANCE8_EXT,
1032                                          angle::Format::ID::R8G8B8A8_UNORM,
1033                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1034                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1035                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1036                                          DXGI_FORMAT_UNKNOWN,
1037                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1038                                          GL_RGBA8,
1039                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1040             return info;
1041         }
1042         case GL_LUMINANCE_ALPHA16F_EXT:
1043         {
1044             static constexpr Format info(GL_LUMINANCE_ALPHA16F_EXT,
1045                                          angle::Format::ID::R16G16B16A16_FLOAT,
1046                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1047                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1048                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1049                                          DXGI_FORMAT_UNKNOWN,
1050                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1051                                          GL_RGBA16F,
1052                                          nullptr);
1053             return info;
1054         }
1055         case GL_LUMINANCE_ALPHA32F_EXT:
1056         {
1057             static constexpr Format info(GL_LUMINANCE_ALPHA32F_EXT,
1058                                          angle::Format::ID::R32G32B32A32_FLOAT,
1059                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1060                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1061                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1062                                          DXGI_FORMAT_UNKNOWN,
1063                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1064                                          GL_RGBA32F,
1065                                          nullptr);
1066             return info;
1067         }
1068         case GL_NONE:
1069         {
1070             static constexpr Format info(GL_NONE,
1071                                          angle::Format::ID::NONE,
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_R11F_G11F_B10F:
1082         {
1083             static constexpr Format info(GL_R11F_G11F_B10F,
1084                                          angle::Format::ID::R11G11B10_FLOAT,
1085                                          DXGI_FORMAT_R11G11B10_FLOAT,
1086                                          DXGI_FORMAT_R11G11B10_FLOAT,
1087                                          DXGI_FORMAT_R11G11B10_FLOAT,
1088                                          DXGI_FORMAT_UNKNOWN,
1089                                          DXGI_FORMAT_R11G11B10_FLOAT,
1090                                          GL_RGBA16F_EXT,
1091                                          nullptr);
1092             return info;
1093         }
1094         case GL_R16F:
1095         {
1096             static constexpr Format info(GL_R16F,
1097                                          angle::Format::ID::R16_FLOAT,
1098                                          DXGI_FORMAT_R16_FLOAT,
1099                                          DXGI_FORMAT_R16_FLOAT,
1100                                          DXGI_FORMAT_R16_FLOAT,
1101                                          DXGI_FORMAT_UNKNOWN,
1102                                          DXGI_FORMAT_R16_FLOAT,
1103                                          GL_RGBA16F_EXT,
1104                                          nullptr);
1105             return info;
1106         }
1107         case GL_R16I:
1108         {
1109             static constexpr Format info(GL_R16I,
1110                                          angle::Format::ID::R16_SINT,
1111                                          DXGI_FORMAT_R16_SINT,
1112                                          DXGI_FORMAT_R16_SINT,
1113                                          DXGI_FORMAT_R16_SINT,
1114                                          DXGI_FORMAT_UNKNOWN,
1115                                          DXGI_FORMAT_R16_SINT,
1116                                          GL_RGBA16I,
1117                                          nullptr);
1118             return info;
1119         }
1120         case GL_R16UI:
1121         {
1122             static constexpr Format info(GL_R16UI,
1123                                          angle::Format::ID::R16_UINT,
1124                                          DXGI_FORMAT_R16_UINT,
1125                                          DXGI_FORMAT_R16_UINT,
1126                                          DXGI_FORMAT_R16_UINT,
1127                                          DXGI_FORMAT_UNKNOWN,
1128                                          DXGI_FORMAT_R16_UINT,
1129                                          GL_RGBA16I,
1130                                          nullptr);
1131             return info;
1132         }
1133         case GL_R16_EXT:
1134         {
1135             static constexpr Format info(GL_R16_EXT,
1136                                          angle::Format::ID::R16_UNORM,
1137                                          DXGI_FORMAT_R16_UNORM,
1138                                          DXGI_FORMAT_R16_UNORM,
1139                                          DXGI_FORMAT_R16_UNORM,
1140                                          DXGI_FORMAT_UNKNOWN,
1141                                          DXGI_FORMAT_R16_UNORM,
1142                                          GL_RGBA16_EXT,
1143                                          nullptr);
1144             return info;
1145         }
1146         case GL_R16_SNORM_EXT:
1147         {
1148             static constexpr Format info(GL_R16_SNORM_EXT,
1149                                          angle::Format::ID::R16_SNORM,
1150                                          DXGI_FORMAT_R16_SNORM,
1151                                          DXGI_FORMAT_R16_SNORM,
1152                                          DXGI_FORMAT_UNKNOWN,
1153                                          DXGI_FORMAT_UNKNOWN,
1154                                          DXGI_FORMAT_R16_SNORM,
1155                                          GL_RGBA16_SNORM_EXT,
1156                                          nullptr);
1157             return info;
1158         }
1159         case GL_R32F:
1160         {
1161             static constexpr Format info(GL_R32F,
1162                                          angle::Format::ID::R32_FLOAT,
1163                                          DXGI_FORMAT_R32_FLOAT,
1164                                          DXGI_FORMAT_R32_FLOAT,
1165                                          DXGI_FORMAT_R32_FLOAT,
1166                                          DXGI_FORMAT_UNKNOWN,
1167                                          DXGI_FORMAT_R32_FLOAT,
1168                                          GL_RGBA32F,
1169                                          nullptr);
1170             return info;
1171         }
1172         case GL_R32I:
1173         {
1174             static constexpr Format info(GL_R32I,
1175                                          angle::Format::ID::R32_SINT,
1176                                          DXGI_FORMAT_R32_SINT,
1177                                          DXGI_FORMAT_R32_SINT,
1178                                          DXGI_FORMAT_R32_SINT,
1179                                          DXGI_FORMAT_UNKNOWN,
1180                                          DXGI_FORMAT_R32_SINT,
1181                                          GL_RGBA32I,
1182                                          nullptr);
1183             return info;
1184         }
1185         case GL_R32UI:
1186         {
1187             static constexpr Format info(GL_R32UI,
1188                                          angle::Format::ID::R32_UINT,
1189                                          DXGI_FORMAT_R32_UINT,
1190                                          DXGI_FORMAT_R32_UINT,
1191                                          DXGI_FORMAT_R32_UINT,
1192                                          DXGI_FORMAT_UNKNOWN,
1193                                          DXGI_FORMAT_R32_UINT,
1194                                          GL_RGBA32I,
1195                                          nullptr);
1196             return info;
1197         }
1198         case GL_R8:
1199         {
1200             static constexpr Format info(GL_R8,
1201                                          angle::Format::ID::R8_UNORM,
1202                                          DXGI_FORMAT_R8_UNORM,
1203                                          DXGI_FORMAT_R8_UNORM,
1204                                          DXGI_FORMAT_R8_UNORM,
1205                                          DXGI_FORMAT_UNKNOWN,
1206                                          DXGI_FORMAT_R8_UNORM,
1207                                          GL_RGBA8,
1208                                          nullptr);
1209             return info;
1210         }
1211         case GL_R8I:
1212         {
1213             static constexpr Format info(GL_R8I,
1214                                          angle::Format::ID::R8_SINT,
1215                                          DXGI_FORMAT_R8_SINT,
1216                                          DXGI_FORMAT_R8_SINT,
1217                                          DXGI_FORMAT_R8_SINT,
1218                                          DXGI_FORMAT_UNKNOWN,
1219                                          DXGI_FORMAT_R8_SINT,
1220                                          GL_RGBA8I,
1221                                          nullptr);
1222             return info;
1223         }
1224         case GL_R8UI:
1225         {
1226             static constexpr Format info(GL_R8UI,
1227                                          angle::Format::ID::R8_UINT,
1228                                          DXGI_FORMAT_R8_UINT,
1229                                          DXGI_FORMAT_R8_UINT,
1230                                          DXGI_FORMAT_R8_UINT,
1231                                          DXGI_FORMAT_UNKNOWN,
1232                                          DXGI_FORMAT_R8_UINT,
1233                                          GL_RGBA8I,
1234                                          nullptr);
1235             return info;
1236         }
1237         case GL_R8_SNORM:
1238         {
1239             static constexpr Format info(GL_R8_SNORM,
1240                                          angle::Format::ID::R8_SNORM,
1241                                          DXGI_FORMAT_R8_SNORM,
1242                                          DXGI_FORMAT_R8_SNORM,
1243                                          DXGI_FORMAT_UNKNOWN,
1244                                          DXGI_FORMAT_UNKNOWN,
1245                                          DXGI_FORMAT_R8_SNORM,
1246                                          GL_RGBA8_SNORM,
1247                                          nullptr);
1248             return info;
1249         }
1250         case GL_RG16F:
1251         {
1252             static constexpr Format info(GL_RG16F,
1253                                          angle::Format::ID::R16G16_FLOAT,
1254                                          DXGI_FORMAT_R16G16_FLOAT,
1255                                          DXGI_FORMAT_R16G16_FLOAT,
1256                                          DXGI_FORMAT_R16G16_FLOAT,
1257                                          DXGI_FORMAT_UNKNOWN,
1258                                          DXGI_FORMAT_R16G16_FLOAT,
1259                                          GL_RGBA16F_EXT,
1260                                          nullptr);
1261             return info;
1262         }
1263         case GL_RG16I:
1264         {
1265             static constexpr Format info(GL_RG16I,
1266                                          angle::Format::ID::R16G16_SINT,
1267                                          DXGI_FORMAT_R16G16_SINT,
1268                                          DXGI_FORMAT_R16G16_SINT,
1269                                          DXGI_FORMAT_R16G16_SINT,
1270                                          DXGI_FORMAT_UNKNOWN,
1271                                          DXGI_FORMAT_R16G16_SINT,
1272                                          GL_RGBA16I,
1273                                          nullptr);
1274             return info;
1275         }
1276         case GL_RG16UI:
1277         {
1278             static constexpr Format info(GL_RG16UI,
1279                                          angle::Format::ID::R16G16_UINT,
1280                                          DXGI_FORMAT_R16G16_UINT,
1281                                          DXGI_FORMAT_R16G16_UINT,
1282                                          DXGI_FORMAT_R16G16_UINT,
1283                                          DXGI_FORMAT_UNKNOWN,
1284                                          DXGI_FORMAT_R16G16_UINT,
1285                                          GL_RGBA16I,
1286                                          nullptr);
1287             return info;
1288         }
1289         case GL_RG16_EXT:
1290         {
1291             static constexpr Format info(GL_RG16_EXT,
1292                                          angle::Format::ID::R16G16_UNORM,
1293                                          DXGI_FORMAT_R16G16_UNORM,
1294                                          DXGI_FORMAT_R16G16_UNORM,
1295                                          DXGI_FORMAT_R16G16_UNORM,
1296                                          DXGI_FORMAT_UNKNOWN,
1297                                          DXGI_FORMAT_R16G16_UNORM,
1298                                          GL_RGBA16_EXT,
1299                                          nullptr);
1300             return info;
1301         }
1302         case GL_RG16_SNORM_EXT:
1303         {
1304             static constexpr Format info(GL_RG16_SNORM_EXT,
1305                                          angle::Format::ID::R16G16_SNORM,
1306                                          DXGI_FORMAT_R16G16_SNORM,
1307                                          DXGI_FORMAT_R16G16_SNORM,
1308                                          DXGI_FORMAT_UNKNOWN,
1309                                          DXGI_FORMAT_UNKNOWN,
1310                                          DXGI_FORMAT_R16G16_SNORM,
1311                                          GL_RGBA16_SNORM_EXT,
1312                                          nullptr);
1313             return info;
1314         }
1315         case GL_RG32F:
1316         {
1317             static constexpr Format info(GL_RG32F,
1318                                          angle::Format::ID::R32G32_FLOAT,
1319                                          DXGI_FORMAT_R32G32_FLOAT,
1320                                          DXGI_FORMAT_R32G32_FLOAT,
1321                                          DXGI_FORMAT_R32G32_FLOAT,
1322                                          DXGI_FORMAT_UNKNOWN,
1323                                          DXGI_FORMAT_R32G32_FLOAT,
1324                                          GL_RGBA32F,
1325                                          nullptr);
1326             return info;
1327         }
1328         case GL_RG32I:
1329         {
1330             static constexpr Format info(GL_RG32I,
1331                                          angle::Format::ID::R32G32_SINT,
1332                                          DXGI_FORMAT_R32G32_SINT,
1333                                          DXGI_FORMAT_R32G32_SINT,
1334                                          DXGI_FORMAT_R32G32_SINT,
1335                                          DXGI_FORMAT_UNKNOWN,
1336                                          DXGI_FORMAT_R32G32_SINT,
1337                                          GL_RGBA32I,
1338                                          nullptr);
1339             return info;
1340         }
1341         case GL_RG32UI:
1342         {
1343             static constexpr Format info(GL_RG32UI,
1344                                          angle::Format::ID::R32G32_UINT,
1345                                          DXGI_FORMAT_R32G32_UINT,
1346                                          DXGI_FORMAT_R32G32_UINT,
1347                                          DXGI_FORMAT_R32G32_UINT,
1348                                          DXGI_FORMAT_UNKNOWN,
1349                                          DXGI_FORMAT_R32G32_UINT,
1350                                          GL_RGBA32I,
1351                                          nullptr);
1352             return info;
1353         }
1354         case GL_RG8:
1355         {
1356             static constexpr Format info(GL_RG8,
1357                                          angle::Format::ID::R8G8_UNORM,
1358                                          DXGI_FORMAT_R8G8_UNORM,
1359                                          DXGI_FORMAT_R8G8_UNORM,
1360                                          DXGI_FORMAT_R8G8_UNORM,
1361                                          DXGI_FORMAT_UNKNOWN,
1362                                          DXGI_FORMAT_R8G8_UNORM,
1363                                          GL_RGBA8,
1364                                          nullptr);
1365             return info;
1366         }
1367         case GL_RG8I:
1368         {
1369             static constexpr Format info(GL_RG8I,
1370                                          angle::Format::ID::R8G8_SINT,
1371                                          DXGI_FORMAT_R8G8_SINT,
1372                                          DXGI_FORMAT_R8G8_SINT,
1373                                          DXGI_FORMAT_R8G8_SINT,
1374                                          DXGI_FORMAT_UNKNOWN,
1375                                          DXGI_FORMAT_R8G8_SINT,
1376                                          GL_RGBA8I,
1377                                          nullptr);
1378             return info;
1379         }
1380         case GL_RG8UI:
1381         {
1382             static constexpr Format info(GL_RG8UI,
1383                                          angle::Format::ID::R8G8_UINT,
1384                                          DXGI_FORMAT_R8G8_UINT,
1385                                          DXGI_FORMAT_R8G8_UINT,
1386                                          DXGI_FORMAT_R8G8_UINT,
1387                                          DXGI_FORMAT_UNKNOWN,
1388                                          DXGI_FORMAT_R8G8_UINT,
1389                                          GL_RGBA8I,
1390                                          nullptr);
1391             return info;
1392         }
1393         case GL_RG8_SNORM:
1394         {
1395             static constexpr Format info(GL_RG8_SNORM,
1396                                          angle::Format::ID::R8G8_SNORM,
1397                                          DXGI_FORMAT_R8G8_SNORM,
1398                                          DXGI_FORMAT_R8G8_SNORM,
1399                                          DXGI_FORMAT_UNKNOWN,
1400                                          DXGI_FORMAT_UNKNOWN,
1401                                          DXGI_FORMAT_R8G8_SNORM,
1402                                          GL_RGBA8_SNORM,
1403                                          nullptr);
1404             return info;
1405         }
1406         case GL_RGB:
1407         {
1408             static constexpr Format info(GL_RGB,
1409                                          angle::Format::ID::R8G8B8A8_UNORM,
1410                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1411                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1412                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1413                                          DXGI_FORMAT_UNKNOWN,
1414                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1415                                          GL_RGBA8,
1416                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1417             return info;
1418         }
1419         case GL_RGB10_A2:
1420         {
1421             static constexpr Format info(GL_RGB10_A2,
1422                                          angle::Format::ID::R10G10B10A2_UNORM,
1423                                          DXGI_FORMAT_R10G10B10A2_UNORM,
1424                                          DXGI_FORMAT_R10G10B10A2_UNORM,
1425                                          DXGI_FORMAT_R10G10B10A2_UNORM,
1426                                          DXGI_FORMAT_UNKNOWN,
1427                                          DXGI_FORMAT_R10G10B10A2_UNORM,
1428                                          GL_RGBA16_EXT,
1429                                          nullptr);
1430             return info;
1431         }
1432         case GL_RGB10_A2UI:
1433         {
1434             static constexpr Format info(GL_RGB10_A2UI,
1435                                          angle::Format::ID::R10G10B10A2_UINT,
1436                                          DXGI_FORMAT_R10G10B10A2_UINT,
1437                                          DXGI_FORMAT_R10G10B10A2_UINT,
1438                                          DXGI_FORMAT_R10G10B10A2_UINT,
1439                                          DXGI_FORMAT_UNKNOWN,
1440                                          DXGI_FORMAT_R10G10B10A2_UINT,
1441                                          GL_RGBA16I,
1442                                          nullptr);
1443             return info;
1444         }
1445         case GL_RGB16F:
1446         {
1447             static constexpr Format info(GL_RGB16F,
1448                                          angle::Format::ID::R16G16B16A16_FLOAT,
1449                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1450                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1451                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1452                                          DXGI_FORMAT_UNKNOWN,
1453                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1454                                          GL_RGBA16F,
1455                                          Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
1456             return info;
1457         }
1458         case GL_RGB16I:
1459         {
1460             static constexpr Format info(GL_RGB16I,
1461                                          angle::Format::ID::R16G16B16A16_SINT,
1462                                          DXGI_FORMAT_R16G16B16A16_SINT,
1463                                          DXGI_FORMAT_R16G16B16A16_SINT,
1464                                          DXGI_FORMAT_R16G16B16A16_SINT,
1465                                          DXGI_FORMAT_UNKNOWN,
1466                                          DXGI_FORMAT_R16G16B16A16_SINT,
1467                                          GL_RGBA16I,
1468                                          Initialize4ComponentData<GLshort, 0x0000, 0x0000, 0x0000, 0x0001>);
1469             return info;
1470         }
1471         case GL_RGB16UI:
1472         {
1473             static constexpr Format info(GL_RGB16UI,
1474                                          angle::Format::ID::R16G16B16A16_UINT,
1475                                          DXGI_FORMAT_R16G16B16A16_UINT,
1476                                          DXGI_FORMAT_R16G16B16A16_UINT,
1477                                          DXGI_FORMAT_R16G16B16A16_UINT,
1478                                          DXGI_FORMAT_UNKNOWN,
1479                                          DXGI_FORMAT_R16G16B16A16_UINT,
1480                                          GL_RGBA16UI,
1481                                          Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x0001>);
1482             return info;
1483         }
1484         case GL_RGB16_EXT:
1485         {
1486             static constexpr Format info(GL_RGB16_EXT,
1487                                          angle::Format::ID::R16G16B16A16_UNORM,
1488                                          DXGI_FORMAT_R16G16B16A16_UNORM,
1489                                          DXGI_FORMAT_R16G16B16A16_UNORM,
1490                                          DXGI_FORMAT_R16G16B16A16_UNORM,
1491                                          DXGI_FORMAT_UNKNOWN,
1492                                          DXGI_FORMAT_R16G16B16A16_UNORM,
1493                                          GL_RGBA16_EXT,
1494                                          Initialize4ComponentData<GLubyte, 0x0000, 0x0000, 0x0000, 0xFFFF>);
1495             return info;
1496         }
1497         case GL_RGB16_SNORM_EXT:
1498         {
1499             static constexpr Format info(GL_RGB16_SNORM_EXT,
1500                                          angle::Format::ID::R16G16B16A16_SNORM,
1501                                          DXGI_FORMAT_R16G16B16A16_SNORM,
1502                                          DXGI_FORMAT_R16G16B16A16_SNORM,
1503                                          DXGI_FORMAT_UNKNOWN,
1504                                          DXGI_FORMAT_UNKNOWN,
1505                                          DXGI_FORMAT_R16G16B16A16_SNORM,
1506                                          GL_RGBA16_SNORM_EXT,
1507                                          Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x7FFF>);
1508             return info;
1509         }
1510         case GL_RGB32F:
1511         {
1512             static constexpr Format info(GL_RGB32F,
1513                                          angle::Format::ID::R32G32B32A32_FLOAT,
1514                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1515                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1516                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1517                                          DXGI_FORMAT_UNKNOWN,
1518                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1519                                          GL_RGBA32F,
1520                                          Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
1521             return info;
1522         }
1523         case GL_RGB32I:
1524         {
1525             static constexpr Format info(GL_RGB32I,
1526                                          angle::Format::ID::R32G32B32A32_SINT,
1527                                          DXGI_FORMAT_R32G32B32A32_SINT,
1528                                          DXGI_FORMAT_R32G32B32A32_SINT,
1529                                          DXGI_FORMAT_R32G32B32A32_SINT,
1530                                          DXGI_FORMAT_UNKNOWN,
1531                                          DXGI_FORMAT_R32G32B32A32_SINT,
1532                                          GL_RGBA32I,
1533                                          Initialize4ComponentData<GLint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
1534             return info;
1535         }
1536         case GL_RGB32UI:
1537         {
1538             static constexpr Format info(GL_RGB32UI,
1539                                          angle::Format::ID::R32G32B32A32_UINT,
1540                                          DXGI_FORMAT_R32G32B32A32_UINT,
1541                                          DXGI_FORMAT_R32G32B32A32_UINT,
1542                                          DXGI_FORMAT_R32G32B32A32_UINT,
1543                                          DXGI_FORMAT_UNKNOWN,
1544                                          DXGI_FORMAT_R32G32B32A32_UINT,
1545                                          GL_RGBA32UI,
1546                                          Initialize4ComponentData<GLuint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
1547             return info;
1548         }
1549         case GL_RGB565:
1550         {
1551             if (SupportsFormat(DXGI_FORMAT_B5G6R5_UNORM, deviceCaps))
1552             {
1553                 static constexpr Format info(GL_RGB565,
1554                                              angle::Format::ID::B5G6R5_UNORM,
1555                                              DXGI_FORMAT_B5G6R5_UNORM,
1556                                              DXGI_FORMAT_B5G6R5_UNORM,
1557                                              DXGI_FORMAT_B5G6R5_UNORM,
1558                                              DXGI_FORMAT_UNKNOWN,
1559                                              DXGI_FORMAT_B5G6R5_UNORM,
1560                                              GL_RGBA8,
1561                                              nullptr);
1562                 return info;
1563             }
1564             else
1565             {
1566                 static constexpr Format info(GL_RGB565,
1567                                              angle::Format::ID::R8G8B8A8_UNORM,
1568                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1569                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1570                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1571                                              DXGI_FORMAT_UNKNOWN,
1572                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1573                                              GL_RGBA8,
1574                                              Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1575                 return info;
1576             }
1577         }
1578         case GL_RGB5_A1:
1579         {
1580             if (SupportsFormat(DXGI_FORMAT_B5G5R5A1_UNORM, deviceCaps))
1581             {
1582                 static constexpr Format info(GL_RGB5_A1,
1583                                              angle::Format::ID::B5G5R5A1_UNORM,
1584                                              DXGI_FORMAT_B5G5R5A1_UNORM,
1585                                              DXGI_FORMAT_B5G5R5A1_UNORM,
1586                                              DXGI_FORMAT_B5G5R5A1_UNORM,
1587                                              DXGI_FORMAT_UNKNOWN,
1588                                              DXGI_FORMAT_B5G5R5A1_UNORM,
1589                                              GL_RGBA8,
1590                                              nullptr);
1591                 return info;
1592             }
1593             else
1594             {
1595                 static constexpr Format info(GL_RGB5_A1,
1596                                              angle::Format::ID::R8G8B8A8_UNORM,
1597                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1598                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1599                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1600                                              DXGI_FORMAT_UNKNOWN,
1601                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1602                                              GL_RGBA8,
1603                                              nullptr);
1604                 return info;
1605             }
1606         }
1607         case GL_RGB8:
1608         {
1609             static constexpr Format info(GL_RGB8,
1610                                          angle::Format::ID::R8G8B8A8_UNORM,
1611                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1612                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1613                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1614                                          DXGI_FORMAT_UNKNOWN,
1615                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1616                                          GL_RGBA8,
1617                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1618             return info;
1619         }
1620         case GL_RGB8I:
1621         {
1622             static constexpr Format info(GL_RGB8I,
1623                                          angle::Format::ID::R8G8B8A8_SINT,
1624                                          DXGI_FORMAT_R8G8B8A8_SINT,
1625                                          DXGI_FORMAT_R8G8B8A8_SINT,
1626                                          DXGI_FORMAT_R8G8B8A8_SINT,
1627                                          DXGI_FORMAT_UNKNOWN,
1628                                          DXGI_FORMAT_R8G8B8A8_SINT,
1629                                          GL_RGBA8I,
1630                                          Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x01>);
1631             return info;
1632         }
1633         case GL_RGB8UI:
1634         {
1635             static constexpr Format info(GL_RGB8UI,
1636                                          angle::Format::ID::R8G8B8A8_UINT,
1637                                          DXGI_FORMAT_R8G8B8A8_UINT,
1638                                          DXGI_FORMAT_R8G8B8A8_UINT,
1639                                          DXGI_FORMAT_R8G8B8A8_UINT,
1640                                          DXGI_FORMAT_UNKNOWN,
1641                                          DXGI_FORMAT_R8G8B8A8_UINT,
1642                                          GL_RGBA8UI,
1643                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0x01>);
1644             return info;
1645         }
1646         case GL_RGB8_SNORM:
1647         {
1648             static constexpr Format info(GL_RGB8_SNORM,
1649                                          angle::Format::ID::R8G8B8A8_SNORM,
1650                                          DXGI_FORMAT_R8G8B8A8_SNORM,
1651                                          DXGI_FORMAT_R8G8B8A8_SNORM,
1652                                          DXGI_FORMAT_UNKNOWN,
1653                                          DXGI_FORMAT_UNKNOWN,
1654                                          DXGI_FORMAT_R8G8B8A8_SNORM,
1655                                          GL_RGBA8_SNORM,
1656                                          Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x7F>);
1657             return info;
1658         }
1659         case GL_RGB9_E5:
1660         {
1661             static constexpr Format info(GL_RGB9_E5,
1662                                          angle::Format::ID::R9G9B9E5_SHAREDEXP,
1663                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
1664                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
1665                                          DXGI_FORMAT_UNKNOWN,
1666                                          DXGI_FORMAT_UNKNOWN,
1667                                          DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
1668                                          GL_RGBA16F_EXT,
1669                                          nullptr);
1670             return info;
1671         }
1672         case GL_RGBA:
1673         {
1674             static constexpr Format info(GL_RGBA,
1675                                          angle::Format::ID::R8G8B8A8_UNORM,
1676                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1677                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1678                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1679                                          DXGI_FORMAT_UNKNOWN,
1680                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1681                                          GL_RGBA8,
1682                                          nullptr);
1683             return info;
1684         }
1685         case GL_RGBA16F:
1686         {
1687             static constexpr Format info(GL_RGBA16F,
1688                                          angle::Format::ID::R16G16B16A16_FLOAT,
1689                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1690                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1691                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1692                                          DXGI_FORMAT_UNKNOWN,
1693                                          DXGI_FORMAT_R16G16B16A16_FLOAT,
1694                                          GL_RGBA16F,
1695                                          nullptr);
1696             return info;
1697         }
1698         case GL_RGBA16I:
1699         {
1700             static constexpr Format info(GL_RGBA16I,
1701                                          angle::Format::ID::R16G16B16A16_SINT,
1702                                          DXGI_FORMAT_R16G16B16A16_SINT,
1703                                          DXGI_FORMAT_R16G16B16A16_SINT,
1704                                          DXGI_FORMAT_R16G16B16A16_SINT,
1705                                          DXGI_FORMAT_UNKNOWN,
1706                                          DXGI_FORMAT_R16G16B16A16_SINT,
1707                                          GL_RGBA16I,
1708                                          nullptr);
1709             return info;
1710         }
1711         case GL_RGBA16UI:
1712         {
1713             static constexpr Format info(GL_RGBA16UI,
1714                                          angle::Format::ID::R16G16B16A16_UINT,
1715                                          DXGI_FORMAT_R16G16B16A16_UINT,
1716                                          DXGI_FORMAT_R16G16B16A16_UINT,
1717                                          DXGI_FORMAT_R16G16B16A16_UINT,
1718                                          DXGI_FORMAT_UNKNOWN,
1719                                          DXGI_FORMAT_R16G16B16A16_UINT,
1720                                          GL_RGBA16UI,
1721                                          nullptr);
1722             return info;
1723         }
1724         case GL_RGBA16_EXT:
1725         {
1726             static constexpr Format info(GL_RGBA16_EXT,
1727                                          angle::Format::ID::R16G16B16A16_UNORM,
1728                                          DXGI_FORMAT_R16G16B16A16_UNORM,
1729                                          DXGI_FORMAT_R16G16B16A16_UNORM,
1730                                          DXGI_FORMAT_R16G16B16A16_UNORM,
1731                                          DXGI_FORMAT_UNKNOWN,
1732                                          DXGI_FORMAT_R16G16B16A16_UNORM,
1733                                          GL_RGBA16_EXT,
1734                                          nullptr);
1735             return info;
1736         }
1737         case GL_RGBA16_SNORM_EXT:
1738         {
1739             static constexpr Format info(GL_RGBA16_SNORM_EXT,
1740                                          angle::Format::ID::R16G16B16A16_SNORM,
1741                                          DXGI_FORMAT_R16G16B16A16_SNORM,
1742                                          DXGI_FORMAT_R16G16B16A16_SNORM,
1743                                          DXGI_FORMAT_UNKNOWN,
1744                                          DXGI_FORMAT_UNKNOWN,
1745                                          DXGI_FORMAT_R16G16B16A16_SNORM,
1746                                          GL_RGBA16_SNORM_EXT,
1747                                          nullptr);
1748             return info;
1749         }
1750         case GL_RGBA32F:
1751         {
1752             static constexpr Format info(GL_RGBA32F,
1753                                          angle::Format::ID::R32G32B32A32_FLOAT,
1754                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1755                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1756                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1757                                          DXGI_FORMAT_UNKNOWN,
1758                                          DXGI_FORMAT_R32G32B32A32_FLOAT,
1759                                          GL_RGBA32F,
1760                                          nullptr);
1761             return info;
1762         }
1763         case GL_RGBA32I:
1764         {
1765             static constexpr Format info(GL_RGBA32I,
1766                                          angle::Format::ID::R32G32B32A32_SINT,
1767                                          DXGI_FORMAT_R32G32B32A32_SINT,
1768                                          DXGI_FORMAT_R32G32B32A32_SINT,
1769                                          DXGI_FORMAT_R32G32B32A32_SINT,
1770                                          DXGI_FORMAT_UNKNOWN,
1771                                          DXGI_FORMAT_R32G32B32A32_SINT,
1772                                          GL_RGBA32I,
1773                                          nullptr);
1774             return info;
1775         }
1776         case GL_RGBA32UI:
1777         {
1778             static constexpr Format info(GL_RGBA32UI,
1779                                          angle::Format::ID::R32G32B32A32_UINT,
1780                                          DXGI_FORMAT_R32G32B32A32_UINT,
1781                                          DXGI_FORMAT_R32G32B32A32_UINT,
1782                                          DXGI_FORMAT_R32G32B32A32_UINT,
1783                                          DXGI_FORMAT_UNKNOWN,
1784                                          DXGI_FORMAT_R32G32B32A32_UINT,
1785                                          GL_RGBA32UI,
1786                                          nullptr);
1787             return info;
1788         }
1789         case GL_RGBA4:
1790         {
1791             if (SupportsFormat(DXGI_FORMAT_B4G4R4A4_UNORM, deviceCaps))
1792             {
1793                 static constexpr Format info(GL_RGBA4,
1794                                              angle::Format::ID::B4G4R4A4_UNORM,
1795                                              DXGI_FORMAT_B4G4R4A4_UNORM,
1796                                              DXGI_FORMAT_B4G4R4A4_UNORM,
1797                                              DXGI_FORMAT_B4G4R4A4_UNORM,
1798                                              DXGI_FORMAT_UNKNOWN,
1799                                              DXGI_FORMAT_B4G4R4A4_UNORM,
1800                                              GL_RGBA4,
1801                                              nullptr);
1802                 return info;
1803             }
1804             else
1805             {
1806                 static constexpr Format info(GL_RGBA4,
1807                                              angle::Format::ID::R8G8B8A8_UNORM,
1808                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1809                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1810                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1811                                              DXGI_FORMAT_UNKNOWN,
1812                                              DXGI_FORMAT_R8G8B8A8_UNORM,
1813                                              GL_RGBA8,
1814                                              nullptr);
1815                 return info;
1816             }
1817         }
1818         case GL_RGBA8:
1819         {
1820             static constexpr Format info(GL_RGBA8,
1821                                          angle::Format::ID::R8G8B8A8_UNORM,
1822                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1823                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1824                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1825                                          DXGI_FORMAT_UNKNOWN,
1826                                          DXGI_FORMAT_R8G8B8A8_UNORM,
1827                                          GL_RGBA8,
1828                                          nullptr);
1829             return info;
1830         }
1831         case GL_RGBA8I:
1832         {
1833             static constexpr Format info(GL_RGBA8I,
1834                                          angle::Format::ID::R8G8B8A8_SINT,
1835                                          DXGI_FORMAT_R8G8B8A8_SINT,
1836                                          DXGI_FORMAT_R8G8B8A8_SINT,
1837                                          DXGI_FORMAT_R8G8B8A8_SINT,
1838                                          DXGI_FORMAT_UNKNOWN,
1839                                          DXGI_FORMAT_R8G8B8A8_SINT,
1840                                          GL_RGBA8I,
1841                                          nullptr);
1842             return info;
1843         }
1844         case GL_RGBA8UI:
1845         {
1846             static constexpr Format info(GL_RGBA8UI,
1847                                          angle::Format::ID::R8G8B8A8_UINT,
1848                                          DXGI_FORMAT_R8G8B8A8_UINT,
1849                                          DXGI_FORMAT_R8G8B8A8_UINT,
1850                                          DXGI_FORMAT_R8G8B8A8_UINT,
1851                                          DXGI_FORMAT_UNKNOWN,
1852                                          DXGI_FORMAT_R8G8B8A8_UINT,
1853                                          GL_RGBA8UI,
1854                                          nullptr);
1855             return info;
1856         }
1857         case GL_RGBA8_SNORM:
1858         {
1859             static constexpr Format info(GL_RGBA8_SNORM,
1860                                          angle::Format::ID::R8G8B8A8_SNORM,
1861                                          DXGI_FORMAT_R8G8B8A8_SNORM,
1862                                          DXGI_FORMAT_R8G8B8A8_SNORM,
1863                                          DXGI_FORMAT_UNKNOWN,
1864                                          DXGI_FORMAT_UNKNOWN,
1865                                          DXGI_FORMAT_R8G8B8A8_SNORM,
1866                                          GL_RGBA8_SNORM,
1867                                          nullptr);
1868             return info;
1869         }
1870         case GL_SRGB8:
1871         {
1872             static constexpr Format info(GL_SRGB8,
1873                                          angle::Format::ID::R8G8B8A8_UNORM_SRGB,
1874                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1875                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1876                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1877                                          DXGI_FORMAT_UNKNOWN,
1878                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1879                                          GL_SRGB8_ALPHA8,
1880                                          Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1881             return info;
1882         }
1883         case GL_SRGB8_ALPHA8:
1884         {
1885             static constexpr Format info(GL_SRGB8_ALPHA8,
1886                                          angle::Format::ID::R8G8B8A8_UNORM_SRGB,
1887                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1888                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1889                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1890                                          DXGI_FORMAT_UNKNOWN,
1891                                          DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1892                                          GL_SRGB8_ALPHA8,
1893                                          nullptr);
1894             return info;
1895         }
1896         case GL_STENCIL_INDEX8:
1897         {
1898             if (OnlyFL10Plus(deviceCaps))
1899             {
1900                 static constexpr Format info(GL_STENCIL_INDEX8,
1901                                              angle::Format::ID::D24_UNORM_S8_UINT,
1902                                              DXGI_FORMAT_R24G8_TYPELESS,
1903                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1904                                              DXGI_FORMAT_UNKNOWN,
1905                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1906                                              DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1907                                              GL_RGBA32F,
1908                                              nullptr);
1909                 return info;
1910             }
1911             else
1912             {
1913                 static constexpr Format info(GL_STENCIL_INDEX8,
1914                                              angle::Format::ID::D24_UNORM_S8_UINT,
1915                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1916                                              DXGI_FORMAT_UNKNOWN,
1917                                              DXGI_FORMAT_UNKNOWN,
1918                                              DXGI_FORMAT_D24_UNORM_S8_UINT,
1919                                              DXGI_FORMAT_UNKNOWN,
1920                                              GL_RGBA32F,
1921                                              nullptr);
1922                 return info;
1923             }
1924         }
1925 
1926         default:
1927             break;
1928     }
1929     // clang-format on
1930 
1931     UNREACHABLE();
1932     static constexpr Format defaultInfo;
1933     return defaultInfo;
1934 }
1935 
1936 }  // namespace d3d11
1937 
1938 }  // namespace rx
1939