1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_dxgi_format_table.py using data from dxgi_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 // DXGI format info:
9 //   Determining metadata about a DXGI format.
10 
11 #include "libANGLE/renderer/Format.h"
12 
13 using namespace angle;
14 
15 namespace rx
16 {
17 
18 namespace d3d11
19 {
20 
GetComponentType(DXGI_FORMAT dxgiFormat)21 GLenum GetComponentType(DXGI_FORMAT dxgiFormat)
22 {
23     switch (dxgiFormat)
24     {
25         case DXGI_FORMAT_420_OPAQUE:
26             break;
27         case DXGI_FORMAT_A8P8:
28             break;
29         case DXGI_FORMAT_A8_UNORM:
30             return GL_UNSIGNED_NORMALIZED;
31         case DXGI_FORMAT_AI44:
32             break;
33         case DXGI_FORMAT_AYUV:
34             break;
35         case DXGI_FORMAT_B4G4R4A4_UNORM:
36             return GL_UNSIGNED_NORMALIZED;
37         case DXGI_FORMAT_B5G5R5A1_UNORM:
38             return GL_UNSIGNED_NORMALIZED;
39         case DXGI_FORMAT_B5G6R5_UNORM:
40             return GL_UNSIGNED_NORMALIZED;
41         case DXGI_FORMAT_B8G8R8A8_TYPELESS:
42             break;
43         case DXGI_FORMAT_B8G8R8A8_UNORM:
44             return GL_UNSIGNED_NORMALIZED;
45         case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
46             return GL_UNSIGNED_NORMALIZED;
47         case DXGI_FORMAT_B8G8R8X8_TYPELESS:
48             break;
49         case DXGI_FORMAT_B8G8R8X8_UNORM:
50             return GL_UNSIGNED_NORMALIZED;
51         case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
52             return GL_UNSIGNED_NORMALIZED;
53         case DXGI_FORMAT_BC1_TYPELESS:
54             break;
55         case DXGI_FORMAT_BC1_UNORM:
56             return GL_UNSIGNED_NORMALIZED;
57         case DXGI_FORMAT_BC1_UNORM_SRGB:
58             return GL_UNSIGNED_NORMALIZED;
59         case DXGI_FORMAT_BC2_TYPELESS:
60             break;
61         case DXGI_FORMAT_BC2_UNORM:
62             return GL_UNSIGNED_NORMALIZED;
63         case DXGI_FORMAT_BC2_UNORM_SRGB:
64             return GL_UNSIGNED_NORMALIZED;
65         case DXGI_FORMAT_BC3_TYPELESS:
66             break;
67         case DXGI_FORMAT_BC3_UNORM:
68             return GL_UNSIGNED_NORMALIZED;
69         case DXGI_FORMAT_BC3_UNORM_SRGB:
70             return GL_UNSIGNED_NORMALIZED;
71         case DXGI_FORMAT_BC4_SNORM:
72             return GL_SIGNED_NORMALIZED;
73         case DXGI_FORMAT_BC4_TYPELESS:
74             break;
75         case DXGI_FORMAT_BC4_UNORM:
76             return GL_UNSIGNED_NORMALIZED;
77         case DXGI_FORMAT_BC5_SNORM:
78             return GL_SIGNED_NORMALIZED;
79         case DXGI_FORMAT_BC5_TYPELESS:
80             break;
81         case DXGI_FORMAT_BC5_UNORM:
82             return GL_UNSIGNED_NORMALIZED;
83         case DXGI_FORMAT_BC6H_SF16:
84             break;
85         case DXGI_FORMAT_BC6H_TYPELESS:
86             break;
87         case DXGI_FORMAT_BC6H_UF16:
88             break;
89         case DXGI_FORMAT_BC7_TYPELESS:
90             break;
91         case DXGI_FORMAT_BC7_UNORM:
92             return GL_UNSIGNED_NORMALIZED;
93         case DXGI_FORMAT_BC7_UNORM_SRGB:
94             return GL_UNSIGNED_NORMALIZED;
95         case DXGI_FORMAT_D16_UNORM:
96             return GL_UNSIGNED_NORMALIZED;
97         case DXGI_FORMAT_D24_UNORM_S8_UINT:
98             break;
99         case DXGI_FORMAT_D32_FLOAT:
100             return GL_FLOAT;
101         case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
102             break;
103         case DXGI_FORMAT_G8R8_G8B8_UNORM:
104             return GL_UNSIGNED_NORMALIZED;
105         case DXGI_FORMAT_IA44:
106             break;
107         case DXGI_FORMAT_NV11:
108             break;
109         case DXGI_FORMAT_NV12:
110             break;
111         case DXGI_FORMAT_P010:
112             break;
113         case DXGI_FORMAT_P016:
114             break;
115         case DXGI_FORMAT_P8:
116             break;
117         case DXGI_FORMAT_R10G10B10A2_TYPELESS:
118             break;
119         case DXGI_FORMAT_R10G10B10A2_UINT:
120             return GL_UNSIGNED_INT;
121         case DXGI_FORMAT_R10G10B10A2_UNORM:
122             return GL_UNSIGNED_NORMALIZED;
123         case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
124             return GL_UNSIGNED_NORMALIZED;
125         case DXGI_FORMAT_R11G11B10_FLOAT:
126             return GL_FLOAT;
127         case DXGI_FORMAT_R16G16B16A16_FLOAT:
128             return GL_FLOAT;
129         case DXGI_FORMAT_R16G16B16A16_SINT:
130             return GL_INT;
131         case DXGI_FORMAT_R16G16B16A16_SNORM:
132             return GL_SIGNED_NORMALIZED;
133         case DXGI_FORMAT_R16G16B16A16_TYPELESS:
134             break;
135         case DXGI_FORMAT_R16G16B16A16_UINT:
136             return GL_UNSIGNED_INT;
137         case DXGI_FORMAT_R16G16B16A16_UNORM:
138             return GL_UNSIGNED_NORMALIZED;
139         case DXGI_FORMAT_R16G16_FLOAT:
140             return GL_FLOAT;
141         case DXGI_FORMAT_R16G16_SINT:
142             return GL_INT;
143         case DXGI_FORMAT_R16G16_SNORM:
144             return GL_SIGNED_NORMALIZED;
145         case DXGI_FORMAT_R16G16_TYPELESS:
146             break;
147         case DXGI_FORMAT_R16G16_UINT:
148             return GL_UNSIGNED_INT;
149         case DXGI_FORMAT_R16G16_UNORM:
150             return GL_UNSIGNED_NORMALIZED;
151         case DXGI_FORMAT_R16_FLOAT:
152             return GL_FLOAT;
153         case DXGI_FORMAT_R16_SINT:
154             return GL_INT;
155         case DXGI_FORMAT_R16_SNORM:
156             return GL_SIGNED_NORMALIZED;
157         case DXGI_FORMAT_R16_TYPELESS:
158             break;
159         case DXGI_FORMAT_R16_UINT:
160             return GL_UNSIGNED_INT;
161         case DXGI_FORMAT_R16_UNORM:
162             return GL_UNSIGNED_NORMALIZED;
163         case DXGI_FORMAT_R1_UNORM:
164             return GL_UNSIGNED_NORMALIZED;
165         case DXGI_FORMAT_R24G8_TYPELESS:
166             break;
167         case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
168             return GL_UNSIGNED_NORMALIZED;
169         case DXGI_FORMAT_R32G32B32A32_FLOAT:
170             return GL_FLOAT;
171         case DXGI_FORMAT_R32G32B32A32_SINT:
172             return GL_INT;
173         case DXGI_FORMAT_R32G32B32A32_TYPELESS:
174             break;
175         case DXGI_FORMAT_R32G32B32A32_UINT:
176             return GL_UNSIGNED_INT;
177         case DXGI_FORMAT_R32G32B32_FLOAT:
178             return GL_FLOAT;
179         case DXGI_FORMAT_R32G32B32_SINT:
180             return GL_INT;
181         case DXGI_FORMAT_R32G32B32_TYPELESS:
182             break;
183         case DXGI_FORMAT_R32G32B32_UINT:
184             return GL_UNSIGNED_INT;
185         case DXGI_FORMAT_R32G32_FLOAT:
186             return GL_FLOAT;
187         case DXGI_FORMAT_R32G32_SINT:
188             return GL_INT;
189         case DXGI_FORMAT_R32G32_TYPELESS:
190             break;
191         case DXGI_FORMAT_R32G32_UINT:
192             return GL_UNSIGNED_INT;
193         case DXGI_FORMAT_R32G8X24_TYPELESS:
194             break;
195         case DXGI_FORMAT_R32_FLOAT:
196             return GL_FLOAT;
197         case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
198             return GL_FLOAT;
199         case DXGI_FORMAT_R32_SINT:
200             return GL_INT;
201         case DXGI_FORMAT_R32_TYPELESS:
202             break;
203         case DXGI_FORMAT_R32_UINT:
204             return GL_UNSIGNED_INT;
205         case DXGI_FORMAT_R8G8B8A8_SINT:
206             return GL_INT;
207         case DXGI_FORMAT_R8G8B8A8_SNORM:
208             return GL_SIGNED_NORMALIZED;
209         case DXGI_FORMAT_R8G8B8A8_TYPELESS:
210             break;
211         case DXGI_FORMAT_R8G8B8A8_UINT:
212             return GL_UNSIGNED_INT;
213         case DXGI_FORMAT_R8G8B8A8_UNORM:
214             return GL_UNSIGNED_NORMALIZED;
215         case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
216             return GL_UNSIGNED_NORMALIZED;
217         case DXGI_FORMAT_R8G8_B8G8_UNORM:
218             return GL_UNSIGNED_NORMALIZED;
219         case DXGI_FORMAT_R8G8_SINT:
220             return GL_INT;
221         case DXGI_FORMAT_R8G8_SNORM:
222             return GL_SIGNED_NORMALIZED;
223         case DXGI_FORMAT_R8G8_TYPELESS:
224             break;
225         case DXGI_FORMAT_R8G8_UINT:
226             return GL_UNSIGNED_INT;
227         case DXGI_FORMAT_R8G8_UNORM:
228             return GL_UNSIGNED_NORMALIZED;
229         case DXGI_FORMAT_R8_SINT:
230             return GL_INT;
231         case DXGI_FORMAT_R8_SNORM:
232             return GL_SIGNED_NORMALIZED;
233         case DXGI_FORMAT_R8_TYPELESS:
234             break;
235         case DXGI_FORMAT_R8_UINT:
236             return GL_UNSIGNED_INT;
237         case DXGI_FORMAT_R8_UNORM:
238             return GL_UNSIGNED_NORMALIZED;
239         case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
240             return GL_FLOAT;
241         case DXGI_FORMAT_UNKNOWN:
242             break;
243         case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
244             return GL_UNSIGNED_INT;
245         case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
246             return GL_UNSIGNED_INT;
247         case DXGI_FORMAT_Y210:
248             break;
249         case DXGI_FORMAT_Y216:
250             break;
251         case DXGI_FORMAT_Y410:
252             break;
253         case DXGI_FORMAT_Y416:
254             break;
255         case DXGI_FORMAT_YUY2:
256             break;
257         default:
258             break;
259     }
260 
261     UNREACHABLE();
262     return GL_NONE;
263 }
264 
265 }  // namespace d3d11
266 
267 namespace d3d11_angle
268 {
269 
GetFormat(DXGI_FORMAT dxgiFormat)270 const Format &GetFormat(DXGI_FORMAT dxgiFormat)
271 {
272     switch (dxgiFormat)
273     {
274         case DXGI_FORMAT_420_OPAQUE:
275             break;
276         case DXGI_FORMAT_A8P8:
277             break;
278         case DXGI_FORMAT_A8_UNORM:
279             return Format::Get(Format::ID::A8_UNORM);
280         case DXGI_FORMAT_AI44:
281             break;
282         case DXGI_FORMAT_AYUV:
283             break;
284         case DXGI_FORMAT_B4G4R4A4_UNORM:
285             return Format::Get(Format::ID::B4G4R4A4_UNORM);
286         case DXGI_FORMAT_B5G5R5A1_UNORM:
287             return Format::Get(Format::ID::B5G5R5A1_UNORM);
288         case DXGI_FORMAT_B5G6R5_UNORM:
289             return Format::Get(Format::ID::B5G6R5_UNORM);
290         case DXGI_FORMAT_B8G8R8A8_TYPELESS:
291             break;
292         case DXGI_FORMAT_B8G8R8A8_UNORM:
293             return Format::Get(Format::ID::B8G8R8A8_UNORM);
294         case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
295             return Format::Get(Format::ID::B8G8R8A8_UNORM_SRGB);
296         case DXGI_FORMAT_B8G8R8X8_TYPELESS:
297             break;
298         case DXGI_FORMAT_B8G8R8X8_UNORM:
299             return Format::Get(Format::ID::B8G8R8X8_UNORM);
300         case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
301             break;
302         case DXGI_FORMAT_BC1_TYPELESS:
303             break;
304         case DXGI_FORMAT_BC1_UNORM:
305             return Format::Get(Format::ID::BC1_RGBA_UNORM_BLOCK);
306         case DXGI_FORMAT_BC1_UNORM_SRGB:
307             return Format::Get(Format::ID::BC1_RGBA_UNORM_SRGB_BLOCK);
308         case DXGI_FORMAT_BC2_TYPELESS:
309             break;
310         case DXGI_FORMAT_BC2_UNORM:
311             return Format::Get(Format::ID::BC2_RGBA_UNORM_BLOCK);
312         case DXGI_FORMAT_BC2_UNORM_SRGB:
313             return Format::Get(Format::ID::BC2_RGBA_UNORM_SRGB_BLOCK);
314         case DXGI_FORMAT_BC3_TYPELESS:
315             break;
316         case DXGI_FORMAT_BC3_UNORM:
317             return Format::Get(Format::ID::BC3_RGBA_UNORM_BLOCK);
318         case DXGI_FORMAT_BC3_UNORM_SRGB:
319             return Format::Get(Format::ID::BC3_RGBA_UNORM_SRGB_BLOCK);
320         case DXGI_FORMAT_BC4_SNORM:
321             break;
322         case DXGI_FORMAT_BC4_TYPELESS:
323             break;
324         case DXGI_FORMAT_BC4_UNORM:
325             break;
326         case DXGI_FORMAT_BC5_SNORM:
327             break;
328         case DXGI_FORMAT_BC5_TYPELESS:
329             break;
330         case DXGI_FORMAT_BC5_UNORM:
331             break;
332         case DXGI_FORMAT_BC6H_SF16:
333             break;
334         case DXGI_FORMAT_BC6H_TYPELESS:
335             break;
336         case DXGI_FORMAT_BC6H_UF16:
337             break;
338         case DXGI_FORMAT_BC7_TYPELESS:
339             break;
340         case DXGI_FORMAT_BC7_UNORM:
341             break;
342         case DXGI_FORMAT_BC7_UNORM_SRGB:
343             break;
344         case DXGI_FORMAT_D16_UNORM:
345             return Format::Get(Format::ID::D16_UNORM);
346         case DXGI_FORMAT_D24_UNORM_S8_UINT:
347             return Format::Get(Format::ID::D24_UNORM_S8_UINT);
348         case DXGI_FORMAT_D32_FLOAT:
349             return Format::Get(Format::ID::D32_FLOAT);
350         case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
351             return Format::Get(Format::ID::D32_FLOAT_S8X24_UINT);
352         case DXGI_FORMAT_G8R8_G8B8_UNORM:
353             break;
354         case DXGI_FORMAT_IA44:
355             break;
356         case DXGI_FORMAT_NV11:
357             break;
358         case DXGI_FORMAT_NV12:
359             break;
360         case DXGI_FORMAT_P010:
361             break;
362         case DXGI_FORMAT_P016:
363             break;
364         case DXGI_FORMAT_P8:
365             break;
366         case DXGI_FORMAT_R10G10B10A2_TYPELESS:
367             break;
368         case DXGI_FORMAT_R10G10B10A2_UINT:
369             return Format::Get(Format::ID::R10G10B10A2_UINT);
370         case DXGI_FORMAT_R10G10B10A2_UNORM:
371             return Format::Get(Format::ID::R10G10B10A2_UNORM);
372         case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
373             break;
374         case DXGI_FORMAT_R11G11B10_FLOAT:
375             return Format::Get(Format::ID::R11G11B10_FLOAT);
376         case DXGI_FORMAT_R16G16B16A16_FLOAT:
377             return Format::Get(Format::ID::R16G16B16A16_FLOAT);
378         case DXGI_FORMAT_R16G16B16A16_SINT:
379             return Format::Get(Format::ID::R16G16B16A16_SINT);
380         case DXGI_FORMAT_R16G16B16A16_SNORM:
381             return Format::Get(Format::ID::R16G16B16A16_SNORM);
382         case DXGI_FORMAT_R16G16B16A16_TYPELESS:
383             break;
384         case DXGI_FORMAT_R16G16B16A16_UINT:
385             return Format::Get(Format::ID::R16G16B16A16_UINT);
386         case DXGI_FORMAT_R16G16B16A16_UNORM:
387             return Format::Get(Format::ID::R16G16B16A16_UNORM);
388         case DXGI_FORMAT_R16G16_FLOAT:
389             return Format::Get(Format::ID::R16G16_FLOAT);
390         case DXGI_FORMAT_R16G16_SINT:
391             return Format::Get(Format::ID::R16G16_SINT);
392         case DXGI_FORMAT_R16G16_SNORM:
393             return Format::Get(Format::ID::R16G16_SNORM);
394         case DXGI_FORMAT_R16G16_TYPELESS:
395             break;
396         case DXGI_FORMAT_R16G16_UINT:
397             return Format::Get(Format::ID::R16G16_UINT);
398         case DXGI_FORMAT_R16G16_UNORM:
399             return Format::Get(Format::ID::R16G16_UNORM);
400         case DXGI_FORMAT_R16_FLOAT:
401             return Format::Get(Format::ID::R16_FLOAT);
402         case DXGI_FORMAT_R16_SINT:
403             return Format::Get(Format::ID::R16_SINT);
404         case DXGI_FORMAT_R16_SNORM:
405             return Format::Get(Format::ID::R16_SNORM);
406         case DXGI_FORMAT_R16_TYPELESS:
407             break;
408         case DXGI_FORMAT_R16_UINT:
409             return Format::Get(Format::ID::R16_UINT);
410         case DXGI_FORMAT_R16_UNORM:
411             return Format::Get(Format::ID::R16_UNORM);
412         case DXGI_FORMAT_R1_UNORM:
413             break;
414         case DXGI_FORMAT_R24G8_TYPELESS:
415             break;
416         case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
417             break;
418         case DXGI_FORMAT_R32G32B32A32_FLOAT:
419             return Format::Get(Format::ID::R32G32B32A32_FLOAT);
420         case DXGI_FORMAT_R32G32B32A32_SINT:
421             return Format::Get(Format::ID::R32G32B32A32_SINT);
422         case DXGI_FORMAT_R32G32B32A32_TYPELESS:
423             break;
424         case DXGI_FORMAT_R32G32B32A32_UINT:
425             return Format::Get(Format::ID::R32G32B32A32_UINT);
426         case DXGI_FORMAT_R32G32B32_FLOAT:
427             return Format::Get(Format::ID::R32G32B32_FLOAT);
428         case DXGI_FORMAT_R32G32B32_SINT:
429             return Format::Get(Format::ID::R32G32B32_SINT);
430         case DXGI_FORMAT_R32G32B32_TYPELESS:
431             break;
432         case DXGI_FORMAT_R32G32B32_UINT:
433             return Format::Get(Format::ID::R32G32B32_UINT);
434         case DXGI_FORMAT_R32G32_FLOAT:
435             return Format::Get(Format::ID::R32G32_FLOAT);
436         case DXGI_FORMAT_R32G32_SINT:
437             return Format::Get(Format::ID::R32G32_SINT);
438         case DXGI_FORMAT_R32G32_TYPELESS:
439             break;
440         case DXGI_FORMAT_R32G32_UINT:
441             return Format::Get(Format::ID::R32G32_UINT);
442         case DXGI_FORMAT_R32G8X24_TYPELESS:
443             break;
444         case DXGI_FORMAT_R32_FLOAT:
445             return Format::Get(Format::ID::R32_FLOAT);
446         case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
447             break;
448         case DXGI_FORMAT_R32_SINT:
449             return Format::Get(Format::ID::R32_SINT);
450         case DXGI_FORMAT_R32_TYPELESS:
451             break;
452         case DXGI_FORMAT_R32_UINT:
453             return Format::Get(Format::ID::R32_UINT);
454         case DXGI_FORMAT_R8G8B8A8_SINT:
455             return Format::Get(Format::ID::R8G8B8A8_SINT);
456         case DXGI_FORMAT_R8G8B8A8_SNORM:
457             return Format::Get(Format::ID::R8G8B8A8_SNORM);
458         case DXGI_FORMAT_R8G8B8A8_TYPELESS:
459             break;
460         case DXGI_FORMAT_R8G8B8A8_UINT:
461             return Format::Get(Format::ID::R8G8B8A8_UINT);
462         case DXGI_FORMAT_R8G8B8A8_UNORM:
463             return Format::Get(Format::ID::R8G8B8A8_UNORM);
464         case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
465             return Format::Get(Format::ID::R8G8B8A8_UNORM_SRGB);
466         case DXGI_FORMAT_R8G8_B8G8_UNORM:
467             break;
468         case DXGI_FORMAT_R8G8_SINT:
469             return Format::Get(Format::ID::R8G8_SINT);
470         case DXGI_FORMAT_R8G8_SNORM:
471             return Format::Get(Format::ID::R8G8_SNORM);
472         case DXGI_FORMAT_R8G8_TYPELESS:
473             break;
474         case DXGI_FORMAT_R8G8_UINT:
475             return Format::Get(Format::ID::R8G8_UINT);
476         case DXGI_FORMAT_R8G8_UNORM:
477             return Format::Get(Format::ID::R8G8_UNORM);
478         case DXGI_FORMAT_R8_SINT:
479             return Format::Get(Format::ID::R8_SINT);
480         case DXGI_FORMAT_R8_SNORM:
481             return Format::Get(Format::ID::R8_SNORM);
482         case DXGI_FORMAT_R8_TYPELESS:
483             break;
484         case DXGI_FORMAT_R8_UINT:
485             return Format::Get(Format::ID::R8_UINT);
486         case DXGI_FORMAT_R8_UNORM:
487             return Format::Get(Format::ID::R8_UNORM);
488         case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
489             return Format::Get(Format::ID::R9G9B9E5_SHAREDEXP);
490         case DXGI_FORMAT_UNKNOWN:
491             return Format::Get(Format::ID::NONE);
492         case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
493             break;
494         case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
495             break;
496         case DXGI_FORMAT_Y210:
497             break;
498         case DXGI_FORMAT_Y216:
499             break;
500         case DXGI_FORMAT_Y410:
501             break;
502         case DXGI_FORMAT_Y416:
503             break;
504         case DXGI_FORMAT_YUY2:
505             break;
506         default:
507             break;
508     }
509 
510     UNREACHABLE();
511     return Format::Get(Format::ID::NONE);
512 }
513 
514 }  // namespace d3d11_angle
515 
516 }  // namespace rx
517