1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_texture_format_table.py using data from texture_format_data.json
3 //
4 // Copyright 2016 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_COMPRESSED_R11_EAC:
160 {
161 static constexpr Format info(GL_COMPRESSED_R11_EAC,
162 angle::Format::ID::R8_UNORM,
163 DXGI_FORMAT_R8_UNORM,
164 DXGI_FORMAT_R8_UNORM,
165 DXGI_FORMAT_R8_UNORM,
166 DXGI_FORMAT_UNKNOWN,
167 DXGI_FORMAT_R8_UNORM,
168 GL_RGBA8,
169 nullptr);
170 return info;
171 }
172 case GL_COMPRESSED_RG11_EAC:
173 {
174 static constexpr Format info(GL_COMPRESSED_RG11_EAC,
175 angle::Format::ID::R8G8_UNORM,
176 DXGI_FORMAT_R8G8_UNORM,
177 DXGI_FORMAT_R8G8_UNORM,
178 DXGI_FORMAT_R8G8_UNORM,
179 DXGI_FORMAT_UNKNOWN,
180 DXGI_FORMAT_R8G8_UNORM,
181 GL_RGBA8,
182 nullptr);
183 return info;
184 }
185 case GL_COMPRESSED_RGB8_ETC2:
186 {
187 static constexpr Format info(GL_COMPRESSED_RGB8_ETC2,
188 angle::Format::ID::R8G8B8A8_UNORM,
189 DXGI_FORMAT_R8G8B8A8_UNORM,
190 DXGI_FORMAT_R8G8B8A8_UNORM,
191 DXGI_FORMAT_R8G8B8A8_UNORM,
192 DXGI_FORMAT_UNKNOWN,
193 DXGI_FORMAT_R8G8B8A8_UNORM,
194 GL_RGBA8,
195 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
196 return info;
197 }
198 case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
199 {
200 static constexpr Format info(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_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_RGBA8_ETC2_EAC:
212 {
213 static constexpr Format info(GL_COMPRESSED_RGBA8_ETC2_EAC,
214 angle::Format::ID::R8G8B8A8_UNORM,
215 DXGI_FORMAT_R8G8B8A8_UNORM,
216 DXGI_FORMAT_R8G8B8A8_UNORM,
217 DXGI_FORMAT_R8G8B8A8_UNORM,
218 DXGI_FORMAT_UNKNOWN,
219 DXGI_FORMAT_R8G8B8A8_UNORM,
220 GL_RGBA8,
221 nullptr);
222 return info;
223 }
224 case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
225 {
226 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x10_KHR,
227 angle::Format::ID::NONE,
228 DXGI_FORMAT_UNKNOWN,
229 DXGI_FORMAT_UNKNOWN,
230 DXGI_FORMAT_UNKNOWN,
231 DXGI_FORMAT_UNKNOWN,
232 DXGI_FORMAT_UNKNOWN,
233 GL_NONE,
234 nullptr);
235 return info;
236 }
237 case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
238 {
239 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x5_KHR,
240 angle::Format::ID::NONE,
241 DXGI_FORMAT_UNKNOWN,
242 DXGI_FORMAT_UNKNOWN,
243 DXGI_FORMAT_UNKNOWN,
244 DXGI_FORMAT_UNKNOWN,
245 DXGI_FORMAT_UNKNOWN,
246 GL_NONE,
247 nullptr);
248 return info;
249 }
250 case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
251 {
252 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x6_KHR,
253 angle::Format::ID::NONE,
254 DXGI_FORMAT_UNKNOWN,
255 DXGI_FORMAT_UNKNOWN,
256 DXGI_FORMAT_UNKNOWN,
257 DXGI_FORMAT_UNKNOWN,
258 DXGI_FORMAT_UNKNOWN,
259 GL_NONE,
260 nullptr);
261 return info;
262 }
263 case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
264 {
265 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x8_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_12x10_KHR:
277 {
278 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x10_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_12x12_KHR:
290 {
291 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x12_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_4x4_KHR:
303 {
304 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4_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_5x4_KHR:
316 {
317 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x4_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_5x5_KHR:
329 {
330 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5_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_6x5_KHR:
342 {
343 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x5_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_6x6_KHR:
355 {
356 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6_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_8x5_KHR:
368 {
369 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x5_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_8x6_KHR:
381 {
382 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x6_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_8x8_KHR:
394 {
395 static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x8_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_S3TC_DXT1_EXT:
407 {
408 static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
409 angle::Format::ID::BC1_RGBA_UNORM_BLOCK,
410 DXGI_FORMAT_BC1_UNORM,
411 DXGI_FORMAT_BC1_UNORM,
412 DXGI_FORMAT_UNKNOWN,
413 DXGI_FORMAT_UNKNOWN,
414 DXGI_FORMAT_BC1_UNORM,
415 GL_RGBA8,
416 nullptr);
417 return info;
418 }
419 case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
420 {
421 static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE,
422 angle::Format::ID::BC2_RGBA_UNORM_BLOCK,
423 DXGI_FORMAT_BC2_UNORM,
424 DXGI_FORMAT_BC2_UNORM,
425 DXGI_FORMAT_UNKNOWN,
426 DXGI_FORMAT_UNKNOWN,
427 DXGI_FORMAT_BC2_UNORM,
428 GL_RGBA8,
429 nullptr);
430 return info;
431 }
432 case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
433 {
434 static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE,
435 angle::Format::ID::BC3_RGBA_UNORM_BLOCK,
436 DXGI_FORMAT_BC3_UNORM,
437 DXGI_FORMAT_BC3_UNORM,
438 DXGI_FORMAT_UNKNOWN,
439 DXGI_FORMAT_UNKNOWN,
440 DXGI_FORMAT_BC3_UNORM,
441 GL_RGBA8,
442 nullptr);
443 return info;
444 }
445 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
446 {
447 static constexpr Format info(GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
448 angle::Format::ID::BC1_RGB_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_SIGNED_R11_EAC:
459 {
460 static constexpr Format info(GL_COMPRESSED_SIGNED_R11_EAC,
461 angle::Format::ID::R8_SNORM,
462 DXGI_FORMAT_R8_SNORM,
463 DXGI_FORMAT_R8_SNORM,
464 DXGI_FORMAT_UNKNOWN,
465 DXGI_FORMAT_UNKNOWN,
466 DXGI_FORMAT_R8_SNORM,
467 GL_RGBA8_SNORM,
468 nullptr);
469 return info;
470 }
471 case GL_COMPRESSED_SIGNED_RG11_EAC:
472 {
473 static constexpr Format info(GL_COMPRESSED_SIGNED_RG11_EAC,
474 angle::Format::ID::R8G8_SNORM,
475 DXGI_FORMAT_R8G8_SNORM,
476 DXGI_FORMAT_R8G8_SNORM,
477 DXGI_FORMAT_UNKNOWN,
478 DXGI_FORMAT_UNKNOWN,
479 DXGI_FORMAT_R8G8_SNORM,
480 GL_RGBA8_SNORM,
481 nullptr);
482 return info;
483 }
484 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
485 {
486 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
487 angle::Format::ID::NONE,
488 DXGI_FORMAT_UNKNOWN,
489 DXGI_FORMAT_UNKNOWN,
490 DXGI_FORMAT_UNKNOWN,
491 DXGI_FORMAT_UNKNOWN,
492 DXGI_FORMAT_UNKNOWN,
493 GL_NONE,
494 nullptr);
495 return info;
496 }
497 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
498 {
499 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
500 angle::Format::ID::NONE,
501 DXGI_FORMAT_UNKNOWN,
502 DXGI_FORMAT_UNKNOWN,
503 DXGI_FORMAT_UNKNOWN,
504 DXGI_FORMAT_UNKNOWN,
505 DXGI_FORMAT_UNKNOWN,
506 GL_NONE,
507 nullptr);
508 return info;
509 }
510 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
511 {
512 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
513 angle::Format::ID::NONE,
514 DXGI_FORMAT_UNKNOWN,
515 DXGI_FORMAT_UNKNOWN,
516 DXGI_FORMAT_UNKNOWN,
517 DXGI_FORMAT_UNKNOWN,
518 DXGI_FORMAT_UNKNOWN,
519 GL_NONE,
520 nullptr);
521 return info;
522 }
523 case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
524 {
525 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_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_12x10_KHR:
537 {
538 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_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_12x12_KHR:
550 {
551 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_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_4x4_KHR:
563 {
564 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_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_5x4_KHR:
576 {
577 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_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_5x5_KHR:
589 {
590 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_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_6x5_KHR:
602 {
603 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_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_6x6_KHR:
615 {
616 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_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_8x5_KHR:
628 {
629 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_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_8x6_KHR:
641 {
642 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_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_8x8_KHR:
654 {
655 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_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_ETC2_EAC:
667 {
668 static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
669 angle::Format::ID::R8G8B8A8_UNORM_SRGB,
670 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
671 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
672 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
673 DXGI_FORMAT_UNKNOWN,
674 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
675 GL_SRGB8_ALPHA8,
676 nullptr);
677 return info;
678 }
679 case GL_COMPRESSED_SRGB8_ETC2:
680 {
681 static constexpr Format info(GL_COMPRESSED_SRGB8_ETC2,
682 angle::Format::ID::R8G8B8A8_UNORM_SRGB,
683 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
684 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
685 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
686 DXGI_FORMAT_UNKNOWN,
687 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
688 GL_SRGB8_ALPHA8,
689 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
690 return info;
691 }
692 case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
693 {
694 static constexpr Format info(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
695 angle::Format::ID::R8G8B8A8_UNORM_SRGB,
696 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
697 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
698 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
699 DXGI_FORMAT_UNKNOWN,
700 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
701 GL_SRGB8_ALPHA8,
702 nullptr);
703 return info;
704 }
705 case GL_DEPTH24_STENCIL8:
706 {
707 if (OnlyFL10Plus(deviceCaps))
708 {
709 static constexpr Format info(GL_DEPTH24_STENCIL8,
710 angle::Format::ID::D24_UNORM_S8_UINT,
711 DXGI_FORMAT_R24G8_TYPELESS,
712 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
713 DXGI_FORMAT_UNKNOWN,
714 DXGI_FORMAT_D24_UNORM_S8_UINT,
715 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
716 GL_RGBA32F,
717 nullptr);
718 return info;
719 }
720 else
721 {
722 static constexpr Format info(GL_DEPTH24_STENCIL8,
723 angle::Format::ID::D24_UNORM_S8_UINT,
724 DXGI_FORMAT_D24_UNORM_S8_UINT,
725 DXGI_FORMAT_UNKNOWN,
726 DXGI_FORMAT_UNKNOWN,
727 DXGI_FORMAT_D24_UNORM_S8_UINT,
728 DXGI_FORMAT_UNKNOWN,
729 GL_RGBA32F,
730 nullptr);
731 return info;
732 }
733 }
734 case GL_DEPTH32F_STENCIL8:
735 {
736 static constexpr Format info(GL_DEPTH32F_STENCIL8,
737 angle::Format::ID::D32_FLOAT_S8X24_UINT,
738 DXGI_FORMAT_R32G8X24_TYPELESS,
739 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
740 DXGI_FORMAT_UNKNOWN,
741 DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
742 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
743 GL_RGBA32F,
744 nullptr);
745 return info;
746 }
747 case GL_DEPTH_COMPONENT16:
748 {
749 if (OnlyFL10Plus(deviceCaps))
750 {
751 static constexpr Format info(GL_DEPTH_COMPONENT16,
752 angle::Format::ID::D16_UNORM,
753 DXGI_FORMAT_R16_TYPELESS,
754 DXGI_FORMAT_R16_UNORM,
755 DXGI_FORMAT_UNKNOWN,
756 DXGI_FORMAT_D16_UNORM,
757 DXGI_FORMAT_R16_UNORM,
758 GL_RGBA16_EXT,
759 nullptr);
760 return info;
761 }
762 else
763 {
764 static constexpr Format info(GL_DEPTH_COMPONENT16,
765 angle::Format::ID::D16_UNORM,
766 DXGI_FORMAT_D16_UNORM,
767 DXGI_FORMAT_UNKNOWN,
768 DXGI_FORMAT_UNKNOWN,
769 DXGI_FORMAT_D16_UNORM,
770 DXGI_FORMAT_UNKNOWN,
771 GL_RGBA16_EXT,
772 nullptr);
773 return info;
774 }
775 }
776 case GL_DEPTH_COMPONENT24:
777 {
778 if (OnlyFL10Plus(deviceCaps))
779 {
780 static constexpr Format info(GL_DEPTH_COMPONENT24,
781 angle::Format::ID::D24_UNORM_S8_UINT,
782 DXGI_FORMAT_R24G8_TYPELESS,
783 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
784 DXGI_FORMAT_UNKNOWN,
785 DXGI_FORMAT_D24_UNORM_S8_UINT,
786 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
787 GL_RGBA32F,
788 nullptr);
789 return info;
790 }
791 else
792 {
793 static constexpr Format info(GL_DEPTH_COMPONENT24,
794 angle::Format::ID::D24_UNORM_S8_UINT,
795 DXGI_FORMAT_D24_UNORM_S8_UINT,
796 DXGI_FORMAT_UNKNOWN,
797 DXGI_FORMAT_UNKNOWN,
798 DXGI_FORMAT_D24_UNORM_S8_UINT,
799 DXGI_FORMAT_UNKNOWN,
800 GL_RGBA32F,
801 nullptr);
802 return info;
803 }
804 }
805 case GL_DEPTH_COMPONENT32F:
806 {
807 static constexpr Format info(GL_DEPTH_COMPONENT32F,
808 angle::Format::ID::D32_FLOAT,
809 DXGI_FORMAT_R32_TYPELESS,
810 DXGI_FORMAT_R32_FLOAT,
811 DXGI_FORMAT_UNKNOWN,
812 DXGI_FORMAT_D32_FLOAT,
813 DXGI_FORMAT_R32_FLOAT,
814 GL_RGBA32F,
815 nullptr);
816 return info;
817 }
818 case GL_DEPTH_COMPONENT32_OES:
819 {
820 if (OnlyFL10Plus(deviceCaps))
821 {
822 static constexpr Format info(GL_DEPTH_COMPONENT32_OES,
823 angle::Format::ID::D24_UNORM_S8_UINT,
824 DXGI_FORMAT_R24G8_TYPELESS,
825 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
826 DXGI_FORMAT_UNKNOWN,
827 DXGI_FORMAT_D24_UNORM_S8_UINT,
828 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
829 GL_RGBA32F,
830 nullptr);
831 return info;
832 }
833 else
834 {
835 static constexpr Format info(GL_DEPTH_COMPONENT32_OES,
836 angle::Format::ID::D24_UNORM_S8_UINT,
837 DXGI_FORMAT_D24_UNORM_S8_UINT,
838 DXGI_FORMAT_UNKNOWN,
839 DXGI_FORMAT_UNKNOWN,
840 DXGI_FORMAT_D24_UNORM_S8_UINT,
841 DXGI_FORMAT_UNKNOWN,
842 GL_RGBA32F,
843 nullptr);
844 return info;
845 }
846 }
847 case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
848 {
849 static constexpr Format info(GL_ETC1_RGB8_LOSSY_DECODE_ANGLE,
850 angle::Format::ID::BC1_RGB_UNORM_BLOCK,
851 DXGI_FORMAT_BC1_UNORM,
852 DXGI_FORMAT_BC1_UNORM,
853 DXGI_FORMAT_UNKNOWN,
854 DXGI_FORMAT_UNKNOWN,
855 DXGI_FORMAT_BC1_UNORM,
856 GL_RGBA8,
857 nullptr);
858 return info;
859 }
860 case GL_ETC1_RGB8_OES:
861 {
862 static constexpr Format info(GL_ETC1_RGB8_OES,
863 angle::Format::ID::R8G8B8A8_UNORM,
864 DXGI_FORMAT_R8G8B8A8_UNORM,
865 DXGI_FORMAT_R8G8B8A8_UNORM,
866 DXGI_FORMAT_R8G8B8A8_UNORM,
867 DXGI_FORMAT_UNKNOWN,
868 DXGI_FORMAT_R8G8B8A8_UNORM,
869 GL_RGBA8,
870 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
871 return info;
872 }
873 case GL_LUMINANCE16F_EXT:
874 {
875 static constexpr Format info(GL_LUMINANCE16F_EXT,
876 angle::Format::ID::R16G16B16A16_FLOAT,
877 DXGI_FORMAT_R16G16B16A16_FLOAT,
878 DXGI_FORMAT_R16G16B16A16_FLOAT,
879 DXGI_FORMAT_R16G16B16A16_FLOAT,
880 DXGI_FORMAT_UNKNOWN,
881 DXGI_FORMAT_R16G16B16A16_FLOAT,
882 GL_RGBA16F,
883 Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
884 return info;
885 }
886 case GL_LUMINANCE32F_EXT:
887 {
888 static constexpr Format info(GL_LUMINANCE32F_EXT,
889 angle::Format::ID::R32G32B32A32_FLOAT,
890 DXGI_FORMAT_R32G32B32A32_FLOAT,
891 DXGI_FORMAT_R32G32B32A32_FLOAT,
892 DXGI_FORMAT_R32G32B32A32_FLOAT,
893 DXGI_FORMAT_UNKNOWN,
894 DXGI_FORMAT_R32G32B32A32_FLOAT,
895 GL_RGBA32F,
896 Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
897 return info;
898 }
899 case GL_LUMINANCE8_ALPHA8_EXT:
900 {
901 static constexpr Format info(GL_LUMINANCE8_ALPHA8_EXT,
902 angle::Format::ID::R8G8B8A8_UNORM,
903 DXGI_FORMAT_R8G8B8A8_UNORM,
904 DXGI_FORMAT_R8G8B8A8_UNORM,
905 DXGI_FORMAT_R8G8B8A8_UNORM,
906 DXGI_FORMAT_UNKNOWN,
907 DXGI_FORMAT_R8G8B8A8_UNORM,
908 GL_RGBA8,
909 nullptr);
910 return info;
911 }
912 case GL_LUMINANCE8_EXT:
913 {
914 static constexpr Format info(GL_LUMINANCE8_EXT,
915 angle::Format::ID::R8G8B8A8_UNORM,
916 DXGI_FORMAT_R8G8B8A8_UNORM,
917 DXGI_FORMAT_R8G8B8A8_UNORM,
918 DXGI_FORMAT_R8G8B8A8_UNORM,
919 DXGI_FORMAT_UNKNOWN,
920 DXGI_FORMAT_R8G8B8A8_UNORM,
921 GL_RGBA8,
922 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
923 return info;
924 }
925 case GL_LUMINANCE_ALPHA16F_EXT:
926 {
927 static constexpr Format info(GL_LUMINANCE_ALPHA16F_EXT,
928 angle::Format::ID::R16G16B16A16_FLOAT,
929 DXGI_FORMAT_R16G16B16A16_FLOAT,
930 DXGI_FORMAT_R16G16B16A16_FLOAT,
931 DXGI_FORMAT_R16G16B16A16_FLOAT,
932 DXGI_FORMAT_UNKNOWN,
933 DXGI_FORMAT_R16G16B16A16_FLOAT,
934 GL_RGBA16F,
935 nullptr);
936 return info;
937 }
938 case GL_LUMINANCE_ALPHA32F_EXT:
939 {
940 static constexpr Format info(GL_LUMINANCE_ALPHA32F_EXT,
941 angle::Format::ID::R32G32B32A32_FLOAT,
942 DXGI_FORMAT_R32G32B32A32_FLOAT,
943 DXGI_FORMAT_R32G32B32A32_FLOAT,
944 DXGI_FORMAT_R32G32B32A32_FLOAT,
945 DXGI_FORMAT_UNKNOWN,
946 DXGI_FORMAT_R32G32B32A32_FLOAT,
947 GL_RGBA32F,
948 nullptr);
949 return info;
950 }
951 case GL_NONE:
952 {
953 static constexpr Format info(GL_NONE,
954 angle::Format::ID::NONE,
955 DXGI_FORMAT_UNKNOWN,
956 DXGI_FORMAT_UNKNOWN,
957 DXGI_FORMAT_UNKNOWN,
958 DXGI_FORMAT_UNKNOWN,
959 DXGI_FORMAT_UNKNOWN,
960 GL_NONE,
961 nullptr);
962 return info;
963 }
964 case GL_R11F_G11F_B10F:
965 {
966 static constexpr Format info(GL_R11F_G11F_B10F,
967 angle::Format::ID::R11G11B10_FLOAT,
968 DXGI_FORMAT_R11G11B10_FLOAT,
969 DXGI_FORMAT_R11G11B10_FLOAT,
970 DXGI_FORMAT_R11G11B10_FLOAT,
971 DXGI_FORMAT_UNKNOWN,
972 DXGI_FORMAT_R11G11B10_FLOAT,
973 GL_RGBA16F_EXT,
974 nullptr);
975 return info;
976 }
977 case GL_R16F:
978 {
979 static constexpr Format info(GL_R16F,
980 angle::Format::ID::R16_FLOAT,
981 DXGI_FORMAT_R16_FLOAT,
982 DXGI_FORMAT_R16_FLOAT,
983 DXGI_FORMAT_R16_FLOAT,
984 DXGI_FORMAT_UNKNOWN,
985 DXGI_FORMAT_R16_FLOAT,
986 GL_RGBA16F_EXT,
987 nullptr);
988 return info;
989 }
990 case GL_R16I:
991 {
992 static constexpr Format info(GL_R16I,
993 angle::Format::ID::R16_SINT,
994 DXGI_FORMAT_R16_SINT,
995 DXGI_FORMAT_R16_SINT,
996 DXGI_FORMAT_R16_SINT,
997 DXGI_FORMAT_UNKNOWN,
998 DXGI_FORMAT_R16_SINT,
999 GL_RGBA16I,
1000 nullptr);
1001 return info;
1002 }
1003 case GL_R16UI:
1004 {
1005 static constexpr Format info(GL_R16UI,
1006 angle::Format::ID::R16_UINT,
1007 DXGI_FORMAT_R16_UINT,
1008 DXGI_FORMAT_R16_UINT,
1009 DXGI_FORMAT_R16_UINT,
1010 DXGI_FORMAT_UNKNOWN,
1011 DXGI_FORMAT_R16_UINT,
1012 GL_RGBA16I,
1013 nullptr);
1014 return info;
1015 }
1016 case GL_R16_EXT:
1017 {
1018 static constexpr Format info(GL_R16_EXT,
1019 angle::Format::ID::R16_UNORM,
1020 DXGI_FORMAT_R16_UNORM,
1021 DXGI_FORMAT_R16_UNORM,
1022 DXGI_FORMAT_R16_UNORM,
1023 DXGI_FORMAT_UNKNOWN,
1024 DXGI_FORMAT_R16_UNORM,
1025 GL_RGBA16_EXT,
1026 nullptr);
1027 return info;
1028 }
1029 case GL_R16_SNORM_EXT:
1030 {
1031 static constexpr Format info(GL_R16_SNORM_EXT,
1032 angle::Format::ID::R16_SNORM,
1033 DXGI_FORMAT_R16_SNORM,
1034 DXGI_FORMAT_R16_SNORM,
1035 DXGI_FORMAT_UNKNOWN,
1036 DXGI_FORMAT_UNKNOWN,
1037 DXGI_FORMAT_R16_SNORM,
1038 GL_RGBA16_SNORM_EXT,
1039 nullptr);
1040 return info;
1041 }
1042 case GL_R32F:
1043 {
1044 static constexpr Format info(GL_R32F,
1045 angle::Format::ID::R32_FLOAT,
1046 DXGI_FORMAT_R32_FLOAT,
1047 DXGI_FORMAT_R32_FLOAT,
1048 DXGI_FORMAT_R32_FLOAT,
1049 DXGI_FORMAT_UNKNOWN,
1050 DXGI_FORMAT_R32_FLOAT,
1051 GL_RGBA32F,
1052 nullptr);
1053 return info;
1054 }
1055 case GL_R32I:
1056 {
1057 static constexpr Format info(GL_R32I,
1058 angle::Format::ID::R32_SINT,
1059 DXGI_FORMAT_R32_SINT,
1060 DXGI_FORMAT_R32_SINT,
1061 DXGI_FORMAT_R32_SINT,
1062 DXGI_FORMAT_UNKNOWN,
1063 DXGI_FORMAT_R32_SINT,
1064 GL_RGBA32I,
1065 nullptr);
1066 return info;
1067 }
1068 case GL_R32UI:
1069 {
1070 static constexpr Format info(GL_R32UI,
1071 angle::Format::ID::R32_UINT,
1072 DXGI_FORMAT_R32_UINT,
1073 DXGI_FORMAT_R32_UINT,
1074 DXGI_FORMAT_R32_UINT,
1075 DXGI_FORMAT_UNKNOWN,
1076 DXGI_FORMAT_R32_UINT,
1077 GL_RGBA32I,
1078 nullptr);
1079 return info;
1080 }
1081 case GL_R8:
1082 {
1083 static constexpr Format info(GL_R8,
1084 angle::Format::ID::R8_UNORM,
1085 DXGI_FORMAT_R8_UNORM,
1086 DXGI_FORMAT_R8_UNORM,
1087 DXGI_FORMAT_R8_UNORM,
1088 DXGI_FORMAT_UNKNOWN,
1089 DXGI_FORMAT_R8_UNORM,
1090 GL_RGBA8,
1091 nullptr);
1092 return info;
1093 }
1094 case GL_R8I:
1095 {
1096 static constexpr Format info(GL_R8I,
1097 angle::Format::ID::R8_SINT,
1098 DXGI_FORMAT_R8_SINT,
1099 DXGI_FORMAT_R8_SINT,
1100 DXGI_FORMAT_R8_SINT,
1101 DXGI_FORMAT_UNKNOWN,
1102 DXGI_FORMAT_R8_SINT,
1103 GL_RGBA8I,
1104 nullptr);
1105 return info;
1106 }
1107 case GL_R8UI:
1108 {
1109 static constexpr Format info(GL_R8UI,
1110 angle::Format::ID::R8_UINT,
1111 DXGI_FORMAT_R8_UINT,
1112 DXGI_FORMAT_R8_UINT,
1113 DXGI_FORMAT_R8_UINT,
1114 DXGI_FORMAT_UNKNOWN,
1115 DXGI_FORMAT_R8_UINT,
1116 GL_RGBA8I,
1117 nullptr);
1118 return info;
1119 }
1120 case GL_R8_SNORM:
1121 {
1122 static constexpr Format info(GL_R8_SNORM,
1123 angle::Format::ID::R8_SNORM,
1124 DXGI_FORMAT_R8_SNORM,
1125 DXGI_FORMAT_R8_SNORM,
1126 DXGI_FORMAT_UNKNOWN,
1127 DXGI_FORMAT_UNKNOWN,
1128 DXGI_FORMAT_R8_SNORM,
1129 GL_RGBA8_SNORM,
1130 nullptr);
1131 return info;
1132 }
1133 case GL_RG16F:
1134 {
1135 static constexpr Format info(GL_RG16F,
1136 angle::Format::ID::R16G16_FLOAT,
1137 DXGI_FORMAT_R16G16_FLOAT,
1138 DXGI_FORMAT_R16G16_FLOAT,
1139 DXGI_FORMAT_R16G16_FLOAT,
1140 DXGI_FORMAT_UNKNOWN,
1141 DXGI_FORMAT_R16G16_FLOAT,
1142 GL_RGBA16F_EXT,
1143 nullptr);
1144 return info;
1145 }
1146 case GL_RG16I:
1147 {
1148 static constexpr Format info(GL_RG16I,
1149 angle::Format::ID::R16G16_SINT,
1150 DXGI_FORMAT_R16G16_SINT,
1151 DXGI_FORMAT_R16G16_SINT,
1152 DXGI_FORMAT_R16G16_SINT,
1153 DXGI_FORMAT_UNKNOWN,
1154 DXGI_FORMAT_R16G16_SINT,
1155 GL_RGBA16I,
1156 nullptr);
1157 return info;
1158 }
1159 case GL_RG16UI:
1160 {
1161 static constexpr Format info(GL_RG16UI,
1162 angle::Format::ID::R16G16_UINT,
1163 DXGI_FORMAT_R16G16_UINT,
1164 DXGI_FORMAT_R16G16_UINT,
1165 DXGI_FORMAT_R16G16_UINT,
1166 DXGI_FORMAT_UNKNOWN,
1167 DXGI_FORMAT_R16G16_UINT,
1168 GL_RGBA16I,
1169 nullptr);
1170 return info;
1171 }
1172 case GL_RG16_EXT:
1173 {
1174 static constexpr Format info(GL_RG16_EXT,
1175 angle::Format::ID::R16G16_UNORM,
1176 DXGI_FORMAT_R16G16_UNORM,
1177 DXGI_FORMAT_R16G16_UNORM,
1178 DXGI_FORMAT_R16G16_UNORM,
1179 DXGI_FORMAT_UNKNOWN,
1180 DXGI_FORMAT_R16G16_UNORM,
1181 GL_RGBA16_EXT,
1182 nullptr);
1183 return info;
1184 }
1185 case GL_RG16_SNORM_EXT:
1186 {
1187 static constexpr Format info(GL_RG16_SNORM_EXT,
1188 angle::Format::ID::R16G16_SNORM,
1189 DXGI_FORMAT_R16G16_SNORM,
1190 DXGI_FORMAT_R16G16_SNORM,
1191 DXGI_FORMAT_UNKNOWN,
1192 DXGI_FORMAT_UNKNOWN,
1193 DXGI_FORMAT_R16G16_SNORM,
1194 GL_RGBA16_SNORM_EXT,
1195 nullptr);
1196 return info;
1197 }
1198 case GL_RG32F:
1199 {
1200 static constexpr Format info(GL_RG32F,
1201 angle::Format::ID::R32G32_FLOAT,
1202 DXGI_FORMAT_R32G32_FLOAT,
1203 DXGI_FORMAT_R32G32_FLOAT,
1204 DXGI_FORMAT_R32G32_FLOAT,
1205 DXGI_FORMAT_UNKNOWN,
1206 DXGI_FORMAT_R32G32_FLOAT,
1207 GL_RGBA32F,
1208 nullptr);
1209 return info;
1210 }
1211 case GL_RG32I:
1212 {
1213 static constexpr Format info(GL_RG32I,
1214 angle::Format::ID::R32G32_SINT,
1215 DXGI_FORMAT_R32G32_SINT,
1216 DXGI_FORMAT_R32G32_SINT,
1217 DXGI_FORMAT_R32G32_SINT,
1218 DXGI_FORMAT_UNKNOWN,
1219 DXGI_FORMAT_R32G32_SINT,
1220 GL_RGBA32I,
1221 nullptr);
1222 return info;
1223 }
1224 case GL_RG32UI:
1225 {
1226 static constexpr Format info(GL_RG32UI,
1227 angle::Format::ID::R32G32_UINT,
1228 DXGI_FORMAT_R32G32_UINT,
1229 DXGI_FORMAT_R32G32_UINT,
1230 DXGI_FORMAT_R32G32_UINT,
1231 DXGI_FORMAT_UNKNOWN,
1232 DXGI_FORMAT_R32G32_UINT,
1233 GL_RGBA32I,
1234 nullptr);
1235 return info;
1236 }
1237 case GL_RG8:
1238 {
1239 static constexpr Format info(GL_RG8,
1240 angle::Format::ID::R8G8_UNORM,
1241 DXGI_FORMAT_R8G8_UNORM,
1242 DXGI_FORMAT_R8G8_UNORM,
1243 DXGI_FORMAT_R8G8_UNORM,
1244 DXGI_FORMAT_UNKNOWN,
1245 DXGI_FORMAT_R8G8_UNORM,
1246 GL_RGBA8,
1247 nullptr);
1248 return info;
1249 }
1250 case GL_RG8I:
1251 {
1252 static constexpr Format info(GL_RG8I,
1253 angle::Format::ID::R8G8_SINT,
1254 DXGI_FORMAT_R8G8_SINT,
1255 DXGI_FORMAT_R8G8_SINT,
1256 DXGI_FORMAT_R8G8_SINT,
1257 DXGI_FORMAT_UNKNOWN,
1258 DXGI_FORMAT_R8G8_SINT,
1259 GL_RGBA8I,
1260 nullptr);
1261 return info;
1262 }
1263 case GL_RG8UI:
1264 {
1265 static constexpr Format info(GL_RG8UI,
1266 angle::Format::ID::R8G8_UINT,
1267 DXGI_FORMAT_R8G8_UINT,
1268 DXGI_FORMAT_R8G8_UINT,
1269 DXGI_FORMAT_R8G8_UINT,
1270 DXGI_FORMAT_UNKNOWN,
1271 DXGI_FORMAT_R8G8_UINT,
1272 GL_RGBA8I,
1273 nullptr);
1274 return info;
1275 }
1276 case GL_RG8_SNORM:
1277 {
1278 static constexpr Format info(GL_RG8_SNORM,
1279 angle::Format::ID::R8G8_SNORM,
1280 DXGI_FORMAT_R8G8_SNORM,
1281 DXGI_FORMAT_R8G8_SNORM,
1282 DXGI_FORMAT_UNKNOWN,
1283 DXGI_FORMAT_UNKNOWN,
1284 DXGI_FORMAT_R8G8_SNORM,
1285 GL_RGBA8_SNORM,
1286 nullptr);
1287 return info;
1288 }
1289 case GL_RGB:
1290 {
1291 static constexpr Format info(GL_RGB,
1292 angle::Format::ID::R8G8B8A8_UNORM,
1293 DXGI_FORMAT_R8G8B8A8_UNORM,
1294 DXGI_FORMAT_R8G8B8A8_UNORM,
1295 DXGI_FORMAT_R8G8B8A8_UNORM,
1296 DXGI_FORMAT_UNKNOWN,
1297 DXGI_FORMAT_R8G8B8A8_UNORM,
1298 GL_RGBA8,
1299 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1300 return info;
1301 }
1302 case GL_RGB10_A2:
1303 {
1304 static constexpr Format info(GL_RGB10_A2,
1305 angle::Format::ID::R10G10B10A2_UNORM,
1306 DXGI_FORMAT_R10G10B10A2_UNORM,
1307 DXGI_FORMAT_R10G10B10A2_UNORM,
1308 DXGI_FORMAT_R10G10B10A2_UNORM,
1309 DXGI_FORMAT_UNKNOWN,
1310 DXGI_FORMAT_R10G10B10A2_UNORM,
1311 GL_RGBA16_EXT,
1312 nullptr);
1313 return info;
1314 }
1315 case GL_RGB10_A2UI:
1316 {
1317 static constexpr Format info(GL_RGB10_A2UI,
1318 angle::Format::ID::R10G10B10A2_UINT,
1319 DXGI_FORMAT_R10G10B10A2_UINT,
1320 DXGI_FORMAT_R10G10B10A2_UINT,
1321 DXGI_FORMAT_R10G10B10A2_UINT,
1322 DXGI_FORMAT_UNKNOWN,
1323 DXGI_FORMAT_R10G10B10A2_UINT,
1324 GL_RGBA16I,
1325 nullptr);
1326 return info;
1327 }
1328 case GL_RGB16F:
1329 {
1330 static constexpr Format info(GL_RGB16F,
1331 angle::Format::ID::R16G16B16A16_FLOAT,
1332 DXGI_FORMAT_R16G16B16A16_FLOAT,
1333 DXGI_FORMAT_R16G16B16A16_FLOAT,
1334 DXGI_FORMAT_R16G16B16A16_FLOAT,
1335 DXGI_FORMAT_UNKNOWN,
1336 DXGI_FORMAT_R16G16B16A16_FLOAT,
1337 GL_RGBA16F,
1338 Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
1339 return info;
1340 }
1341 case GL_RGB16I:
1342 {
1343 static constexpr Format info(GL_RGB16I,
1344 angle::Format::ID::R16G16B16A16_SINT,
1345 DXGI_FORMAT_R16G16B16A16_SINT,
1346 DXGI_FORMAT_R16G16B16A16_SINT,
1347 DXGI_FORMAT_R16G16B16A16_SINT,
1348 DXGI_FORMAT_UNKNOWN,
1349 DXGI_FORMAT_R16G16B16A16_SINT,
1350 GL_RGBA16I,
1351 Initialize4ComponentData<GLshort, 0x0000, 0x0000, 0x0000, 0x0001>);
1352 return info;
1353 }
1354 case GL_RGB16UI:
1355 {
1356 static constexpr Format info(GL_RGB16UI,
1357 angle::Format::ID::R16G16B16A16_UINT,
1358 DXGI_FORMAT_R16G16B16A16_UINT,
1359 DXGI_FORMAT_R16G16B16A16_UINT,
1360 DXGI_FORMAT_R16G16B16A16_UINT,
1361 DXGI_FORMAT_UNKNOWN,
1362 DXGI_FORMAT_R16G16B16A16_UINT,
1363 GL_RGBA16UI,
1364 Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x0001>);
1365 return info;
1366 }
1367 case GL_RGB16_EXT:
1368 {
1369 static constexpr Format info(GL_RGB16_EXT,
1370 angle::Format::ID::R16G16B16A16_UNORM,
1371 DXGI_FORMAT_R16G16B16A16_UNORM,
1372 DXGI_FORMAT_R16G16B16A16_UNORM,
1373 DXGI_FORMAT_R16G16B16A16_UNORM,
1374 DXGI_FORMAT_UNKNOWN,
1375 DXGI_FORMAT_R16G16B16A16_UNORM,
1376 GL_RGBA16_EXT,
1377 Initialize4ComponentData<GLubyte, 0x0000, 0x0000, 0x0000, 0xFFFF>);
1378 return info;
1379 }
1380 case GL_RGB16_SNORM_EXT:
1381 {
1382 static constexpr Format info(GL_RGB16_SNORM_EXT,
1383 angle::Format::ID::R16G16B16A16_SNORM,
1384 DXGI_FORMAT_R16G16B16A16_SNORM,
1385 DXGI_FORMAT_R16G16B16A16_SNORM,
1386 DXGI_FORMAT_UNKNOWN,
1387 DXGI_FORMAT_UNKNOWN,
1388 DXGI_FORMAT_R16G16B16A16_SNORM,
1389 GL_RGBA16_SNORM_EXT,
1390 Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x7FFF>);
1391 return info;
1392 }
1393 case GL_RGB32F:
1394 {
1395 static constexpr Format info(GL_RGB32F,
1396 angle::Format::ID::R32G32B32A32_FLOAT,
1397 DXGI_FORMAT_R32G32B32A32_FLOAT,
1398 DXGI_FORMAT_R32G32B32A32_FLOAT,
1399 DXGI_FORMAT_R32G32B32A32_FLOAT,
1400 DXGI_FORMAT_UNKNOWN,
1401 DXGI_FORMAT_R32G32B32A32_FLOAT,
1402 GL_RGBA32F,
1403 Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
1404 return info;
1405 }
1406 case GL_RGB32I:
1407 {
1408 static constexpr Format info(GL_RGB32I,
1409 angle::Format::ID::R32G32B32A32_SINT,
1410 DXGI_FORMAT_R32G32B32A32_SINT,
1411 DXGI_FORMAT_R32G32B32A32_SINT,
1412 DXGI_FORMAT_R32G32B32A32_SINT,
1413 DXGI_FORMAT_UNKNOWN,
1414 DXGI_FORMAT_R32G32B32A32_SINT,
1415 GL_RGBA32I,
1416 Initialize4ComponentData<GLint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
1417 return info;
1418 }
1419 case GL_RGB32UI:
1420 {
1421 static constexpr Format info(GL_RGB32UI,
1422 angle::Format::ID::R32G32B32A32_UINT,
1423 DXGI_FORMAT_R32G32B32A32_UINT,
1424 DXGI_FORMAT_R32G32B32A32_UINT,
1425 DXGI_FORMAT_R32G32B32A32_UINT,
1426 DXGI_FORMAT_UNKNOWN,
1427 DXGI_FORMAT_R32G32B32A32_UINT,
1428 GL_RGBA32UI,
1429 Initialize4ComponentData<GLuint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
1430 return info;
1431 }
1432 case GL_RGB565:
1433 {
1434 if (SupportsFormat(DXGI_FORMAT_B5G6R5_UNORM, deviceCaps))
1435 {
1436 static constexpr Format info(GL_RGB565,
1437 angle::Format::ID::B5G6R5_UNORM,
1438 DXGI_FORMAT_B5G6R5_UNORM,
1439 DXGI_FORMAT_B5G6R5_UNORM,
1440 DXGI_FORMAT_B5G6R5_UNORM,
1441 DXGI_FORMAT_UNKNOWN,
1442 DXGI_FORMAT_B5G6R5_UNORM,
1443 GL_RGBA8,
1444 nullptr);
1445 return info;
1446 }
1447 else
1448 {
1449 static constexpr Format info(GL_RGB565,
1450 angle::Format::ID::R8G8B8A8_UNORM,
1451 DXGI_FORMAT_R8G8B8A8_UNORM,
1452 DXGI_FORMAT_R8G8B8A8_UNORM,
1453 DXGI_FORMAT_R8G8B8A8_UNORM,
1454 DXGI_FORMAT_UNKNOWN,
1455 DXGI_FORMAT_R8G8B8A8_UNORM,
1456 GL_RGBA8,
1457 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1458 return info;
1459 }
1460 }
1461 case GL_RGB5_A1:
1462 {
1463 if (SupportsFormat(DXGI_FORMAT_B5G5R5A1_UNORM, deviceCaps))
1464 {
1465 static constexpr Format info(GL_RGB5_A1,
1466 angle::Format::ID::B5G5R5A1_UNORM,
1467 DXGI_FORMAT_B5G5R5A1_UNORM,
1468 DXGI_FORMAT_B5G5R5A1_UNORM,
1469 DXGI_FORMAT_B5G5R5A1_UNORM,
1470 DXGI_FORMAT_UNKNOWN,
1471 DXGI_FORMAT_B5G5R5A1_UNORM,
1472 GL_RGBA8,
1473 nullptr);
1474 return info;
1475 }
1476 else
1477 {
1478 static constexpr Format info(GL_RGB5_A1,
1479 angle::Format::ID::R8G8B8A8_UNORM,
1480 DXGI_FORMAT_R8G8B8A8_UNORM,
1481 DXGI_FORMAT_R8G8B8A8_UNORM,
1482 DXGI_FORMAT_R8G8B8A8_UNORM,
1483 DXGI_FORMAT_UNKNOWN,
1484 DXGI_FORMAT_R8G8B8A8_UNORM,
1485 GL_RGBA8,
1486 nullptr);
1487 return info;
1488 }
1489 }
1490 case GL_RGB8:
1491 {
1492 static constexpr Format info(GL_RGB8,
1493 angle::Format::ID::R8G8B8A8_UNORM,
1494 DXGI_FORMAT_R8G8B8A8_UNORM,
1495 DXGI_FORMAT_R8G8B8A8_UNORM,
1496 DXGI_FORMAT_R8G8B8A8_UNORM,
1497 DXGI_FORMAT_UNKNOWN,
1498 DXGI_FORMAT_R8G8B8A8_UNORM,
1499 GL_RGBA8,
1500 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1501 return info;
1502 }
1503 case GL_RGB8I:
1504 {
1505 static constexpr Format info(GL_RGB8I,
1506 angle::Format::ID::R8G8B8A8_SINT,
1507 DXGI_FORMAT_R8G8B8A8_SINT,
1508 DXGI_FORMAT_R8G8B8A8_SINT,
1509 DXGI_FORMAT_R8G8B8A8_SINT,
1510 DXGI_FORMAT_UNKNOWN,
1511 DXGI_FORMAT_R8G8B8A8_SINT,
1512 GL_RGBA8I,
1513 Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x01>);
1514 return info;
1515 }
1516 case GL_RGB8UI:
1517 {
1518 static constexpr Format info(GL_RGB8UI,
1519 angle::Format::ID::R8G8B8A8_UINT,
1520 DXGI_FORMAT_R8G8B8A8_UINT,
1521 DXGI_FORMAT_R8G8B8A8_UINT,
1522 DXGI_FORMAT_R8G8B8A8_UINT,
1523 DXGI_FORMAT_UNKNOWN,
1524 DXGI_FORMAT_R8G8B8A8_UINT,
1525 GL_RGBA8UI,
1526 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0x01>);
1527 return info;
1528 }
1529 case GL_RGB8_SNORM:
1530 {
1531 static constexpr Format info(GL_RGB8_SNORM,
1532 angle::Format::ID::R8G8B8A8_SNORM,
1533 DXGI_FORMAT_R8G8B8A8_SNORM,
1534 DXGI_FORMAT_R8G8B8A8_SNORM,
1535 DXGI_FORMAT_UNKNOWN,
1536 DXGI_FORMAT_UNKNOWN,
1537 DXGI_FORMAT_R8G8B8A8_SNORM,
1538 GL_RGBA8_SNORM,
1539 Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x7F>);
1540 return info;
1541 }
1542 case GL_RGB9_E5:
1543 {
1544 static constexpr Format info(GL_RGB9_E5,
1545 angle::Format::ID::R9G9B9E5_SHAREDEXP,
1546 DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
1547 DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
1548 DXGI_FORMAT_UNKNOWN,
1549 DXGI_FORMAT_UNKNOWN,
1550 DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
1551 GL_RGBA16F_EXT,
1552 nullptr);
1553 return info;
1554 }
1555 case GL_RGBA:
1556 {
1557 static constexpr Format info(GL_RGBA,
1558 angle::Format::ID::R8G8B8A8_UNORM,
1559 DXGI_FORMAT_R8G8B8A8_UNORM,
1560 DXGI_FORMAT_R8G8B8A8_UNORM,
1561 DXGI_FORMAT_R8G8B8A8_UNORM,
1562 DXGI_FORMAT_UNKNOWN,
1563 DXGI_FORMAT_R8G8B8A8_UNORM,
1564 GL_RGBA8,
1565 nullptr);
1566 return info;
1567 }
1568 case GL_RGBA16F:
1569 {
1570 static constexpr Format info(GL_RGBA16F,
1571 angle::Format::ID::R16G16B16A16_FLOAT,
1572 DXGI_FORMAT_R16G16B16A16_FLOAT,
1573 DXGI_FORMAT_R16G16B16A16_FLOAT,
1574 DXGI_FORMAT_R16G16B16A16_FLOAT,
1575 DXGI_FORMAT_UNKNOWN,
1576 DXGI_FORMAT_R16G16B16A16_FLOAT,
1577 GL_RGBA16F,
1578 nullptr);
1579 return info;
1580 }
1581 case GL_RGBA16I:
1582 {
1583 static constexpr Format info(GL_RGBA16I,
1584 angle::Format::ID::R16G16B16A16_SINT,
1585 DXGI_FORMAT_R16G16B16A16_SINT,
1586 DXGI_FORMAT_R16G16B16A16_SINT,
1587 DXGI_FORMAT_R16G16B16A16_SINT,
1588 DXGI_FORMAT_UNKNOWN,
1589 DXGI_FORMAT_R16G16B16A16_SINT,
1590 GL_RGBA16I,
1591 nullptr);
1592 return info;
1593 }
1594 case GL_RGBA16UI:
1595 {
1596 static constexpr Format info(GL_RGBA16UI,
1597 angle::Format::ID::R16G16B16A16_UINT,
1598 DXGI_FORMAT_R16G16B16A16_UINT,
1599 DXGI_FORMAT_R16G16B16A16_UINT,
1600 DXGI_FORMAT_R16G16B16A16_UINT,
1601 DXGI_FORMAT_UNKNOWN,
1602 DXGI_FORMAT_R16G16B16A16_UINT,
1603 GL_RGBA16UI,
1604 nullptr);
1605 return info;
1606 }
1607 case GL_RGBA16_EXT:
1608 {
1609 static constexpr Format info(GL_RGBA16_EXT,
1610 angle::Format::ID::R16G16B16A16_UNORM,
1611 DXGI_FORMAT_R16G16B16A16_UNORM,
1612 DXGI_FORMAT_R16G16B16A16_UNORM,
1613 DXGI_FORMAT_R16G16B16A16_UNORM,
1614 DXGI_FORMAT_UNKNOWN,
1615 DXGI_FORMAT_R16G16B16A16_UNORM,
1616 GL_RGBA16_EXT,
1617 nullptr);
1618 return info;
1619 }
1620 case GL_RGBA16_SNORM_EXT:
1621 {
1622 static constexpr Format info(GL_RGBA16_SNORM_EXT,
1623 angle::Format::ID::R16G16B16A16_SNORM,
1624 DXGI_FORMAT_R16G16B16A16_SNORM,
1625 DXGI_FORMAT_R16G16B16A16_SNORM,
1626 DXGI_FORMAT_UNKNOWN,
1627 DXGI_FORMAT_UNKNOWN,
1628 DXGI_FORMAT_R16G16B16A16_SNORM,
1629 GL_RGBA16_SNORM_EXT,
1630 nullptr);
1631 return info;
1632 }
1633 case GL_RGBA32F:
1634 {
1635 static constexpr Format info(GL_RGBA32F,
1636 angle::Format::ID::R32G32B32A32_FLOAT,
1637 DXGI_FORMAT_R32G32B32A32_FLOAT,
1638 DXGI_FORMAT_R32G32B32A32_FLOAT,
1639 DXGI_FORMAT_R32G32B32A32_FLOAT,
1640 DXGI_FORMAT_UNKNOWN,
1641 DXGI_FORMAT_R32G32B32A32_FLOAT,
1642 GL_RGBA32F,
1643 nullptr);
1644 return info;
1645 }
1646 case GL_RGBA32I:
1647 {
1648 static constexpr Format info(GL_RGBA32I,
1649 angle::Format::ID::R32G32B32A32_SINT,
1650 DXGI_FORMAT_R32G32B32A32_SINT,
1651 DXGI_FORMAT_R32G32B32A32_SINT,
1652 DXGI_FORMAT_R32G32B32A32_SINT,
1653 DXGI_FORMAT_UNKNOWN,
1654 DXGI_FORMAT_R32G32B32A32_SINT,
1655 GL_RGBA32I,
1656 nullptr);
1657 return info;
1658 }
1659 case GL_RGBA32UI:
1660 {
1661 static constexpr Format info(GL_RGBA32UI,
1662 angle::Format::ID::R32G32B32A32_UINT,
1663 DXGI_FORMAT_R32G32B32A32_UINT,
1664 DXGI_FORMAT_R32G32B32A32_UINT,
1665 DXGI_FORMAT_R32G32B32A32_UINT,
1666 DXGI_FORMAT_UNKNOWN,
1667 DXGI_FORMAT_R32G32B32A32_UINT,
1668 GL_RGBA32UI,
1669 nullptr);
1670 return info;
1671 }
1672 case GL_RGBA4:
1673 {
1674 if (SupportsFormat(DXGI_FORMAT_B4G4R4A4_UNORM, deviceCaps))
1675 {
1676 static constexpr Format info(GL_RGBA4,
1677 angle::Format::ID::B4G4R4A4_UNORM,
1678 DXGI_FORMAT_B4G4R4A4_UNORM,
1679 DXGI_FORMAT_B4G4R4A4_UNORM,
1680 DXGI_FORMAT_B4G4R4A4_UNORM,
1681 DXGI_FORMAT_UNKNOWN,
1682 DXGI_FORMAT_B4G4R4A4_UNORM,
1683 GL_RGBA4,
1684 nullptr);
1685 return info;
1686 }
1687 else
1688 {
1689 static constexpr Format info(GL_RGBA4,
1690 angle::Format::ID::R8G8B8A8_UNORM,
1691 DXGI_FORMAT_R8G8B8A8_UNORM,
1692 DXGI_FORMAT_R8G8B8A8_UNORM,
1693 DXGI_FORMAT_R8G8B8A8_UNORM,
1694 DXGI_FORMAT_UNKNOWN,
1695 DXGI_FORMAT_R8G8B8A8_UNORM,
1696 GL_RGBA8,
1697 nullptr);
1698 return info;
1699 }
1700 }
1701 case GL_RGBA8:
1702 {
1703 static constexpr Format info(GL_RGBA8,
1704 angle::Format::ID::R8G8B8A8_UNORM,
1705 DXGI_FORMAT_R8G8B8A8_UNORM,
1706 DXGI_FORMAT_R8G8B8A8_UNORM,
1707 DXGI_FORMAT_R8G8B8A8_UNORM,
1708 DXGI_FORMAT_UNKNOWN,
1709 DXGI_FORMAT_R8G8B8A8_UNORM,
1710 GL_RGBA8,
1711 nullptr);
1712 return info;
1713 }
1714 case GL_RGBA8I:
1715 {
1716 static constexpr Format info(GL_RGBA8I,
1717 angle::Format::ID::R8G8B8A8_SINT,
1718 DXGI_FORMAT_R8G8B8A8_SINT,
1719 DXGI_FORMAT_R8G8B8A8_SINT,
1720 DXGI_FORMAT_R8G8B8A8_SINT,
1721 DXGI_FORMAT_UNKNOWN,
1722 DXGI_FORMAT_R8G8B8A8_SINT,
1723 GL_RGBA8I,
1724 nullptr);
1725 return info;
1726 }
1727 case GL_RGBA8UI:
1728 {
1729 static constexpr Format info(GL_RGBA8UI,
1730 angle::Format::ID::R8G8B8A8_UINT,
1731 DXGI_FORMAT_R8G8B8A8_UINT,
1732 DXGI_FORMAT_R8G8B8A8_UINT,
1733 DXGI_FORMAT_R8G8B8A8_UINT,
1734 DXGI_FORMAT_UNKNOWN,
1735 DXGI_FORMAT_R8G8B8A8_UINT,
1736 GL_RGBA8UI,
1737 nullptr);
1738 return info;
1739 }
1740 case GL_RGBA8_SNORM:
1741 {
1742 static constexpr Format info(GL_RGBA8_SNORM,
1743 angle::Format::ID::R8G8B8A8_SNORM,
1744 DXGI_FORMAT_R8G8B8A8_SNORM,
1745 DXGI_FORMAT_R8G8B8A8_SNORM,
1746 DXGI_FORMAT_UNKNOWN,
1747 DXGI_FORMAT_UNKNOWN,
1748 DXGI_FORMAT_R8G8B8A8_SNORM,
1749 GL_RGBA8_SNORM,
1750 nullptr);
1751 return info;
1752 }
1753 case GL_SRGB8:
1754 {
1755 static constexpr Format info(GL_SRGB8,
1756 angle::Format::ID::R8G8B8A8_UNORM_SRGB,
1757 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1758 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1759 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1760 DXGI_FORMAT_UNKNOWN,
1761 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1762 GL_SRGB8_ALPHA8,
1763 Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
1764 return info;
1765 }
1766 case GL_SRGB8_ALPHA8:
1767 {
1768 static constexpr Format info(GL_SRGB8_ALPHA8,
1769 angle::Format::ID::R8G8B8A8_UNORM_SRGB,
1770 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1771 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1772 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1773 DXGI_FORMAT_UNKNOWN,
1774 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
1775 GL_SRGB8_ALPHA8,
1776 nullptr);
1777 return info;
1778 }
1779 case GL_STENCIL_INDEX8:
1780 {
1781 if (OnlyFL10Plus(deviceCaps))
1782 {
1783 static constexpr Format info(GL_STENCIL_INDEX8,
1784 angle::Format::ID::D24_UNORM_S8_UINT,
1785 DXGI_FORMAT_R24G8_TYPELESS,
1786 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1787 DXGI_FORMAT_UNKNOWN,
1788 DXGI_FORMAT_D24_UNORM_S8_UINT,
1789 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
1790 GL_RGBA32F,
1791 nullptr);
1792 return info;
1793 }
1794 else
1795 {
1796 static constexpr Format info(GL_STENCIL_INDEX8,
1797 angle::Format::ID::D24_UNORM_S8_UINT,
1798 DXGI_FORMAT_D24_UNORM_S8_UINT,
1799 DXGI_FORMAT_UNKNOWN,
1800 DXGI_FORMAT_UNKNOWN,
1801 DXGI_FORMAT_D24_UNORM_S8_UINT,
1802 DXGI_FORMAT_UNKNOWN,
1803 GL_RGBA32F,
1804 nullptr);
1805 return info;
1806 }
1807 }
1808
1809 default:
1810 break;
1811 }
1812 // clang-format on
1813
1814 UNREACHABLE();
1815 static constexpr Format defaultInfo;
1816 return defaultInfo;
1817 }
1818
1819 } // namespace d3d11
1820
1821 } // namespace rx
1822