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