1 // GENERATED FILE - DO NOT EDIT. See dxgi_support_data.json.
2 //
3 // Copyright 2015 The ANGLE Project Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style license that can be
5 // found in the LICENSE file.
6 //
7 // dxgi_support_table:
8 //   Queries for DXGI support of various texture formats. Depends on DXGI
9 //   version, D3D feature level, and is sometimes guaranteed or optional.
10 //
11 
12 #include "libANGLE/renderer/d3d/d3d11/dxgi_support_table.h"
13 
14 #include "common/debug.h"
15 
16 namespace rx
17 {
18 
19 namespace d3d11
20 {
21 
22 #define F_2D D3D11_FORMAT_SUPPORT_TEXTURE2D
23 #define F_3D D3D11_FORMAT_SUPPORT_TEXTURE3D
24 #define F_CUBE D3D11_FORMAT_SUPPORT_TEXTURECUBE
25 #define F_SAMPLE D3D11_FORMAT_SUPPORT_SHADER_SAMPLE
26 #define F_RT D3D11_FORMAT_SUPPORT_RENDER_TARGET
27 #define F_MS D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET
28 #define F_DS D3D11_FORMAT_SUPPORT_DEPTH_STENCIL
29 #define F_MIPGEN D3D11_FORMAT_SUPPORT_MIP_AUTOGEN
30 
31 namespace
32 {
33 
GetDefaultSupport()34 const DXGISupport &GetDefaultSupport()
35 {
36     static UINT AllSupportFlags =
37         D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_TEXTURE3D |
38         D3D11_FORMAT_SUPPORT_TEXTURECUBE | D3D11_FORMAT_SUPPORT_SHADER_SAMPLE |
39         D3D11_FORMAT_SUPPORT_RENDER_TARGET | D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET |
40         D3D11_FORMAT_SUPPORT_DEPTH_STENCIL | D3D11_FORMAT_SUPPORT_MIP_AUTOGEN;
41     static const DXGISupport defaultSupport(0, 0, AllSupportFlags);
42     return defaultSupport;
43 }
44 
GetDXGISupport_9_3(DXGI_FORMAT dxgiFormat)45 const DXGISupport &GetDXGISupport_9_3(DXGI_FORMAT dxgiFormat)
46 {
47     // clang-format off
48     switch (dxgiFormat)
49     {
50         case DXGI_FORMAT_420_OPAQUE:
51         {
52             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
53             return info;
54         }
55         case DXGI_FORMAT_A8P8:
56         {
57             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
58             return info;
59         }
60         case DXGI_FORMAT_A8_UNORM:
61         {
62             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS, F_MS);
63             return info;
64         }
65         case DXGI_FORMAT_AI44:
66         {
67             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
68             return info;
69         }
70         case DXGI_FORMAT_AYUV:
71         {
72             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
73             return info;
74         }
75         case DXGI_FORMAT_B4G4R4A4_UNORM:
76         {
77             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
78             return info;
79         }
80         case DXGI_FORMAT_B5G5R5A1_UNORM:
81         {
82             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
83             return info;
84         }
85         case DXGI_FORMAT_B5G6R5_UNORM:
86         {
87             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
88             return info;
89         }
90         case DXGI_FORMAT_B8G8R8A8_TYPELESS:
91         {
92             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
93             return info;
94         }
95         case DXGI_FORMAT_B8G8R8A8_UNORM:
96         {
97             static const DXGISupport info(F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_2D | F_3D | F_CUBE | F_MS);
98             return info;
99         }
100         case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
101         {
102             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
103             return info;
104         }
105         case DXGI_FORMAT_B8G8R8X8_TYPELESS:
106         {
107             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
108             return info;
109         }
110         case DXGI_FORMAT_B8G8R8X8_UNORM:
111         {
112             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
113             return info;
114         }
115         case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
116         {
117             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
118             return info;
119         }
120         case DXGI_FORMAT_BC1_TYPELESS:
121         {
122             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
123             return info;
124         }
125         case DXGI_FORMAT_BC1_UNORM:
126         {
127             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
128             return info;
129         }
130         case DXGI_FORMAT_BC1_UNORM_SRGB:
131         {
132             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
133             return info;
134         }
135         case DXGI_FORMAT_BC2_TYPELESS:
136         {
137             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
138             return info;
139         }
140         case DXGI_FORMAT_BC2_UNORM:
141         {
142             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
143             return info;
144         }
145         case DXGI_FORMAT_BC2_UNORM_SRGB:
146         {
147             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
148             return info;
149         }
150         case DXGI_FORMAT_BC3_TYPELESS:
151         {
152             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
153             return info;
154         }
155         case DXGI_FORMAT_BC3_UNORM:
156         {
157             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
158             return info;
159         }
160         case DXGI_FORMAT_BC3_UNORM_SRGB:
161         {
162             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
163             return info;
164         }
165         case DXGI_FORMAT_BC4_SNORM:
166         {
167             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
168             return info;
169         }
170         case DXGI_FORMAT_BC4_TYPELESS:
171         {
172             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
173             return info;
174         }
175         case DXGI_FORMAT_BC4_UNORM:
176         {
177             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
178             return info;
179         }
180         case DXGI_FORMAT_BC5_SNORM:
181         {
182             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
183             return info;
184         }
185         case DXGI_FORMAT_BC5_TYPELESS:
186         {
187             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
188             return info;
189         }
190         case DXGI_FORMAT_BC5_UNORM:
191         {
192             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
193             return info;
194         }
195         case DXGI_FORMAT_BC6H_SF16:
196         {
197             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
198             return info;
199         }
200         case DXGI_FORMAT_BC6H_TYPELESS:
201         {
202             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
203             return info;
204         }
205         case DXGI_FORMAT_BC6H_UF16:
206         {
207             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
208             return info;
209         }
210         case DXGI_FORMAT_BC7_TYPELESS:
211         {
212             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
213             return info;
214         }
215         case DXGI_FORMAT_BC7_UNORM:
216         {
217             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
218             return info;
219         }
220         case DXGI_FORMAT_BC7_UNORM_SRGB:
221         {
222             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
223             return info;
224         }
225         case DXGI_FORMAT_D16_UNORM:
226         {
227             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
228             return info;
229         }
230         case DXGI_FORMAT_D24_UNORM_S8_UINT:
231         {
232             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_RT | F_SAMPLE, F_MS);
233             return info;
234         }
235         case DXGI_FORMAT_D32_FLOAT:
236         {
237             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
238             return info;
239         }
240         case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
241         {
242             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
243             return info;
244         }
245         case DXGI_FORMAT_G8R8_G8B8_UNORM:
246         {
247             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
248             return info;
249         }
250         case DXGI_FORMAT_IA44:
251         {
252             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
253             return info;
254         }
255         case DXGI_FORMAT_NV11:
256         {
257             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
258             return info;
259         }
260         case DXGI_FORMAT_NV12:
261         {
262             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
263             return info;
264         }
265         case DXGI_FORMAT_P010:
266         {
267             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
268             return info;
269         }
270         case DXGI_FORMAT_P016:
271         {
272             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
273             return info;
274         }
275         case DXGI_FORMAT_P8:
276         {
277             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
278             return info;
279         }
280         case DXGI_FORMAT_R10G10B10A2_TYPELESS:
281         {
282             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
283             return info;
284         }
285         case DXGI_FORMAT_R10G10B10A2_UINT:
286         {
287             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
288             return info;
289         }
290         case DXGI_FORMAT_R10G10B10A2_UNORM:
291         {
292             static const DXGISupport info(0, F_DS, F_MS);
293             return info;
294         }
295         case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
296         {
297             static const DXGISupport info(0, F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D);
298             return info;
299         }
300         case DXGI_FORMAT_R11G11B10_FLOAT:
301         {
302             static const DXGISupport info(0, F_DS, F_MS);
303             return info;
304         }
305         case DXGI_FORMAT_R16G16B16A16_FLOAT:
306         {
307             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT, F_DS, F_MS | F_SAMPLE);
308             return info;
309         }
310         case DXGI_FORMAT_R16G16B16A16_SINT:
311         {
312             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
313             return info;
314         }
315         case DXGI_FORMAT_R16G16B16A16_SNORM:
316         {
317             static const DXGISupport info(0, F_DS, F_MS);
318             return info;
319         }
320         case DXGI_FORMAT_R16G16B16A16_TYPELESS:
321         {
322             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
323             return info;
324         }
325         case DXGI_FORMAT_R16G16B16A16_UINT:
326         {
327             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
328             return info;
329         }
330         case DXGI_FORMAT_R16G16B16A16_UNORM:
331         {
332             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
333             return info;
334         }
335         case DXGI_FORMAT_R16G16_FLOAT:
336         {
337             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT, F_DS, F_MS);
338             return info;
339         }
340         case DXGI_FORMAT_R16G16_SINT:
341         {
342             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
343             return info;
344         }
345         case DXGI_FORMAT_R16G16_SNORM:
346         {
347             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT | F_SAMPLE, F_DS, F_MS);
348             return info;
349         }
350         case DXGI_FORMAT_R16G16_TYPELESS:
351         {
352             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
353             return info;
354         }
355         case DXGI_FORMAT_R16G16_UINT:
356         {
357             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
358             return info;
359         }
360         case DXGI_FORMAT_R16G16_UNORM:
361         {
362             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
363             return info;
364         }
365         case DXGI_FORMAT_R16_FLOAT:
366         {
367             static const DXGISupport info(0, F_DS, F_MS);
368             return info;
369         }
370         case DXGI_FORMAT_R16_SINT:
371         {
372             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
373             return info;
374         }
375         case DXGI_FORMAT_R16_SNORM:
376         {
377             static const DXGISupport info(0, F_DS, F_MS);
378             return info;
379         }
380         case DXGI_FORMAT_R16_TYPELESS:
381         {
382             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
383             return info;
384         }
385         case DXGI_FORMAT_R16_UINT:
386         {
387             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
388             return info;
389         }
390         case DXGI_FORMAT_R16_UNORM:
391         {
392             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS, F_MS);
393             return info;
394         }
395         case DXGI_FORMAT_R1_UNORM:
396         {
397             static const DXGISupport info(F_2D, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
398             return info;
399         }
400         case DXGI_FORMAT_R24G8_TYPELESS:
401         {
402             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
403             return info;
404         }
405         case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
406         {
407             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, 0);
408             return info;
409         }
410         case DXGI_FORMAT_R32G32B32A32_FLOAT:
411         {
412             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT, F_DS, F_MS);
413             return info;
414         }
415         case DXGI_FORMAT_R32G32B32A32_SINT:
416         {
417             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
418             return info;
419         }
420         case DXGI_FORMAT_R32G32B32A32_TYPELESS:
421         {
422             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
423             return info;
424         }
425         case DXGI_FORMAT_R32G32B32A32_UINT:
426         {
427             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
428             return info;
429         }
430         case DXGI_FORMAT_R32G32B32_FLOAT:
431         {
432             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN, F_MS | F_RT);
433             return info;
434         }
435         case DXGI_FORMAT_R32G32B32_SINT:
436         {
437             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
438             return info;
439         }
440         case DXGI_FORMAT_R32G32B32_TYPELESS:
441         {
442             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
443             return info;
444         }
445         case DXGI_FORMAT_R32G32B32_UINT:
446         {
447             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
448             return info;
449         }
450         case DXGI_FORMAT_R32G32_FLOAT:
451         {
452             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS, F_MS);
453             return info;
454         }
455         case DXGI_FORMAT_R32G32_SINT:
456         {
457             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
458             return info;
459         }
460         case DXGI_FORMAT_R32G32_TYPELESS:
461         {
462             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
463             return info;
464         }
465         case DXGI_FORMAT_R32G32_UINT:
466         {
467             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
468             return info;
469         }
470         case DXGI_FORMAT_R32G8X24_TYPELESS:
471         {
472             static const DXGISupport info(0, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
473             return info;
474         }
475         case DXGI_FORMAT_R32_FLOAT:
476         {
477             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT, F_DS, F_MS);
478             return info;
479         }
480         case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
481         {
482             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, 0);
483             return info;
484         }
485         case DXGI_FORMAT_R32_SINT:
486         {
487             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
488             return info;
489         }
490         case DXGI_FORMAT_R32_TYPELESS:
491         {
492             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
493             return info;
494         }
495         case DXGI_FORMAT_R32_UINT:
496         {
497             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
498             return info;
499         }
500         case DXGI_FORMAT_R8G8B8A8_SINT:
501         {
502             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
503             return info;
504         }
505         case DXGI_FORMAT_R8G8B8A8_SNORM:
506         {
507             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT | F_SAMPLE, F_DS, F_MS);
508             return info;
509         }
510         case DXGI_FORMAT_R8G8B8A8_TYPELESS:
511         {
512             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
513             return info;
514         }
515         case DXGI_FORMAT_R8G8B8A8_UINT:
516         {
517             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
518             return info;
519         }
520         case DXGI_FORMAT_R8G8B8A8_UNORM:
521         {
522             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
523             return info;
524         }
525         case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
526         {
527             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
528             return info;
529         }
530         case DXGI_FORMAT_R8G8_B8G8_UNORM:
531         {
532             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
533             return info;
534         }
535         case DXGI_FORMAT_R8G8_SINT:
536         {
537             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
538             return info;
539         }
540         case DXGI_FORMAT_R8G8_SNORM:
541         {
542             static const DXGISupport info(F_2D | F_SAMPLE, F_DS, F_MS);
543             return info;
544         }
545         case DXGI_FORMAT_R8G8_TYPELESS:
546         {
547             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
548             return info;
549         }
550         case DXGI_FORMAT_R8G8_UINT:
551         {
552             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
553             return info;
554         }
555         case DXGI_FORMAT_R8G8_UNORM:
556         {
557             static const DXGISupport info(0, F_DS, F_MS | F_RT | F_SAMPLE);
558             return info;
559         }
560         case DXGI_FORMAT_R8_SINT:
561         {
562             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
563             return info;
564         }
565         case DXGI_FORMAT_R8_SNORM:
566         {
567             static const DXGISupport info(0, F_DS, F_MS);
568             return info;
569         }
570         case DXGI_FORMAT_R8_TYPELESS:
571         {
572             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
573             return info;
574         }
575         case DXGI_FORMAT_R8_UINT:
576         {
577             static const DXGISupport info(0, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
578             return info;
579         }
580         case DXGI_FORMAT_R8_UNORM:
581         {
582             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS, F_MS | F_RT);
583             return info;
584         }
585         case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
586         {
587             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
588             return info;
589         }
590         case DXGI_FORMAT_UNKNOWN:
591         {
592             static const DXGISupport info(0, F_2D | F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
593             return info;
594         }
595         case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
596         {
597             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
598             return info;
599         }
600         case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
601         {
602             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
603             return info;
604         }
605         case DXGI_FORMAT_Y210:
606         {
607             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
608             return info;
609         }
610         case DXGI_FORMAT_Y216:
611         {
612             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
613             return info;
614         }
615         case DXGI_FORMAT_Y410:
616         {
617             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
618             return info;
619         }
620         case DXGI_FORMAT_Y416:
621         {
622             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
623             return info;
624         }
625         case DXGI_FORMAT_YUY2:
626         {
627             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
628             return info;
629         }
630 
631         default:
632             UNREACHABLE();
633             return GetDefaultSupport();
634     }
635     // clang-format on
636 }
637 
GetDXGISupport_10_0(DXGI_FORMAT dxgiFormat)638 const DXGISupport &GetDXGISupport_10_0(DXGI_FORMAT dxgiFormat)
639 {
640     // clang-format off
641     switch (dxgiFormat)
642     {
643         case DXGI_FORMAT_420_OPAQUE:
644         {
645             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
646             return info;
647         }
648         case DXGI_FORMAT_A8P8:
649         {
650             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
651             return info;
652         }
653         case DXGI_FORMAT_A8_UNORM:
654         {
655             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
656             return info;
657         }
658         case DXGI_FORMAT_AI44:
659         {
660             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
661             return info;
662         }
663         case DXGI_FORMAT_AYUV:
664         {
665             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
666             return info;
667         }
668         case DXGI_FORMAT_B4G4R4A4_UNORM:
669         {
670             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
671             return info;
672         }
673         case DXGI_FORMAT_B5G5R5A1_UNORM:
674         {
675             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
676             return info;
677         }
678         case DXGI_FORMAT_B5G6R5_UNORM:
679         {
680             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
681             return info;
682         }
683         case DXGI_FORMAT_B8G8R8A8_TYPELESS:
684         {
685             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
686             return info;
687         }
688         case DXGI_FORMAT_B8G8R8A8_UNORM:
689         {
690             static const DXGISupport info(F_MIPGEN, F_DS, F_2D | F_3D | F_CUBE | F_MS | F_RT | F_SAMPLE);
691             return info;
692         }
693         case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
694         {
695             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS | F_SAMPLE);
696             return info;
697         }
698         case DXGI_FORMAT_B8G8R8X8_TYPELESS:
699         {
700             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
701             return info;
702         }
703         case DXGI_FORMAT_B8G8R8X8_UNORM:
704         {
705             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS | F_SAMPLE);
706             return info;
707         }
708         case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
709         {
710             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS | F_SAMPLE);
711             return info;
712         }
713         case DXGI_FORMAT_BC1_TYPELESS:
714         {
715             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
716             return info;
717         }
718         case DXGI_FORMAT_BC1_UNORM:
719         {
720             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
721             return info;
722         }
723         case DXGI_FORMAT_BC1_UNORM_SRGB:
724         {
725             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
726             return info;
727         }
728         case DXGI_FORMAT_BC2_TYPELESS:
729         {
730             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
731             return info;
732         }
733         case DXGI_FORMAT_BC2_UNORM:
734         {
735             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
736             return info;
737         }
738         case DXGI_FORMAT_BC2_UNORM_SRGB:
739         {
740             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
741             return info;
742         }
743         case DXGI_FORMAT_BC3_TYPELESS:
744         {
745             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
746             return info;
747         }
748         case DXGI_FORMAT_BC3_UNORM:
749         {
750             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
751             return info;
752         }
753         case DXGI_FORMAT_BC3_UNORM_SRGB:
754         {
755             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
756             return info;
757         }
758         case DXGI_FORMAT_BC4_SNORM:
759         {
760             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
761             return info;
762         }
763         case DXGI_FORMAT_BC4_TYPELESS:
764         {
765             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
766             return info;
767         }
768         case DXGI_FORMAT_BC4_UNORM:
769         {
770             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
771             return info;
772         }
773         case DXGI_FORMAT_BC5_SNORM:
774         {
775             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
776             return info;
777         }
778         case DXGI_FORMAT_BC5_TYPELESS:
779         {
780             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
781             return info;
782         }
783         case DXGI_FORMAT_BC5_UNORM:
784         {
785             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
786             return info;
787         }
788         case DXGI_FORMAT_BC6H_SF16:
789         {
790             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
791             return info;
792         }
793         case DXGI_FORMAT_BC6H_TYPELESS:
794         {
795             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
796             return info;
797         }
798         case DXGI_FORMAT_BC6H_UF16:
799         {
800             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
801             return info;
802         }
803         case DXGI_FORMAT_BC7_TYPELESS:
804         {
805             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
806             return info;
807         }
808         case DXGI_FORMAT_BC7_UNORM:
809         {
810             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
811             return info;
812         }
813         case DXGI_FORMAT_BC7_UNORM_SRGB:
814         {
815             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
816             return info;
817         }
818         case DXGI_FORMAT_D16_UNORM:
819         {
820             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
821             return info;
822         }
823         case DXGI_FORMAT_D24_UNORM_S8_UINT:
824         {
825             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_RT | F_SAMPLE, F_MS);
826             return info;
827         }
828         case DXGI_FORMAT_D32_FLOAT:
829         {
830             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
831             return info;
832         }
833         case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
834         {
835             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
836             return info;
837         }
838         case DXGI_FORMAT_G8R8_G8B8_UNORM:
839         {
840             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
841             return info;
842         }
843         case DXGI_FORMAT_IA44:
844         {
845             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
846             return info;
847         }
848         case DXGI_FORMAT_NV11:
849         {
850             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
851             return info;
852         }
853         case DXGI_FORMAT_NV12:
854         {
855             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
856             return info;
857         }
858         case DXGI_FORMAT_P010:
859         {
860             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
861             return info;
862         }
863         case DXGI_FORMAT_P016:
864         {
865             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
866             return info;
867         }
868         case DXGI_FORMAT_P8:
869         {
870             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
871             return info;
872         }
873         case DXGI_FORMAT_R10G10B10A2_TYPELESS:
874         {
875             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
876             return info;
877         }
878         case DXGI_FORMAT_R10G10B10A2_UINT:
879         {
880             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
881             return info;
882         }
883         case DXGI_FORMAT_R10G10B10A2_UNORM:
884         {
885             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
886             return info;
887         }
888         case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
889         {
890             static const DXGISupport info(0, F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D);
891             return info;
892         }
893         case DXGI_FORMAT_R11G11B10_FLOAT:
894         {
895             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
896             return info;
897         }
898         case DXGI_FORMAT_R16G16B16A16_FLOAT:
899         {
900             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
901             return info;
902         }
903         case DXGI_FORMAT_R16G16B16A16_SINT:
904         {
905             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
906             return info;
907         }
908         case DXGI_FORMAT_R16G16B16A16_SNORM:
909         {
910             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
911             return info;
912         }
913         case DXGI_FORMAT_R16G16B16A16_TYPELESS:
914         {
915             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
916             return info;
917         }
918         case DXGI_FORMAT_R16G16B16A16_UINT:
919         {
920             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
921             return info;
922         }
923         case DXGI_FORMAT_R16G16B16A16_UNORM:
924         {
925             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
926             return info;
927         }
928         case DXGI_FORMAT_R16G16_FLOAT:
929         {
930             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
931             return info;
932         }
933         case DXGI_FORMAT_R16G16_SINT:
934         {
935             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
936             return info;
937         }
938         case DXGI_FORMAT_R16G16_SNORM:
939         {
940             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
941             return info;
942         }
943         case DXGI_FORMAT_R16G16_TYPELESS:
944         {
945             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
946             return info;
947         }
948         case DXGI_FORMAT_R16G16_UINT:
949         {
950             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
951             return info;
952         }
953         case DXGI_FORMAT_R16G16_UNORM:
954         {
955             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
956             return info;
957         }
958         case DXGI_FORMAT_R16_FLOAT:
959         {
960             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
961             return info;
962         }
963         case DXGI_FORMAT_R16_SINT:
964         {
965             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
966             return info;
967         }
968         case DXGI_FORMAT_R16_SNORM:
969         {
970             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
971             return info;
972         }
973         case DXGI_FORMAT_R16_TYPELESS:
974         {
975             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
976             return info;
977         }
978         case DXGI_FORMAT_R16_UINT:
979         {
980             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
981             return info;
982         }
983         case DXGI_FORMAT_R16_UNORM:
984         {
985             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
986             return info;
987         }
988         case DXGI_FORMAT_R1_UNORM:
989         {
990             static const DXGISupport info(F_2D, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
991             return info;
992         }
993         case DXGI_FORMAT_R24G8_TYPELESS:
994         {
995             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
996             return info;
997         }
998         case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
999         {
1000             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, F_SAMPLE);
1001             return info;
1002         }
1003         case DXGI_FORMAT_R32G32B32A32_FLOAT:
1004         {
1005             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT, F_DS, F_MS | F_SAMPLE);
1006             return info;
1007         }
1008         case DXGI_FORMAT_R32G32B32A32_SINT:
1009         {
1010             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1011             return info;
1012         }
1013         case DXGI_FORMAT_R32G32B32A32_TYPELESS:
1014         {
1015             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1016             return info;
1017         }
1018         case DXGI_FORMAT_R32G32B32A32_UINT:
1019         {
1020             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1021             return info;
1022         }
1023         case DXGI_FORMAT_R32G32B32_FLOAT:
1024         {
1025             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN, F_MS | F_RT);
1026             return info;
1027         }
1028         case DXGI_FORMAT_R32G32B32_SINT:
1029         {
1030             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
1031             return info;
1032         }
1033         case DXGI_FORMAT_R32G32B32_TYPELESS:
1034         {
1035             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1036             return info;
1037         }
1038         case DXGI_FORMAT_R32G32B32_UINT:
1039         {
1040             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
1041             return info;
1042         }
1043         case DXGI_FORMAT_R32G32_FLOAT:
1044         {
1045             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT, F_DS, F_MS | F_SAMPLE);
1046             return info;
1047         }
1048         case DXGI_FORMAT_R32G32_SINT:
1049         {
1050             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1051             return info;
1052         }
1053         case DXGI_FORMAT_R32G32_TYPELESS:
1054         {
1055             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1056             return info;
1057         }
1058         case DXGI_FORMAT_R32G32_UINT:
1059         {
1060             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1061             return info;
1062         }
1063         case DXGI_FORMAT_R32G8X24_TYPELESS:
1064         {
1065             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1066             return info;
1067         }
1068         case DXGI_FORMAT_R32_FLOAT:
1069         {
1070             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT, F_DS, F_MS | F_SAMPLE);
1071             return info;
1072         }
1073         case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
1074         {
1075             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, F_SAMPLE);
1076             return info;
1077         }
1078         case DXGI_FORMAT_R32_SINT:
1079         {
1080             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1081             return info;
1082         }
1083         case DXGI_FORMAT_R32_TYPELESS:
1084         {
1085             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1086             return info;
1087         }
1088         case DXGI_FORMAT_R32_UINT:
1089         {
1090             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1091             return info;
1092         }
1093         case DXGI_FORMAT_R8G8B8A8_SINT:
1094         {
1095             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1096             return info;
1097         }
1098         case DXGI_FORMAT_R8G8B8A8_SNORM:
1099         {
1100             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1101             return info;
1102         }
1103         case DXGI_FORMAT_R8G8B8A8_TYPELESS:
1104         {
1105             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1106             return info;
1107         }
1108         case DXGI_FORMAT_R8G8B8A8_UINT:
1109         {
1110             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1111             return info;
1112         }
1113         case DXGI_FORMAT_R8G8B8A8_UNORM:
1114         {
1115             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1116             return info;
1117         }
1118         case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
1119         {
1120             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1121             return info;
1122         }
1123         case DXGI_FORMAT_R8G8_B8G8_UNORM:
1124         {
1125             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1126             return info;
1127         }
1128         case DXGI_FORMAT_R8G8_SINT:
1129         {
1130             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1131             return info;
1132         }
1133         case DXGI_FORMAT_R8G8_SNORM:
1134         {
1135             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1136             return info;
1137         }
1138         case DXGI_FORMAT_R8G8_TYPELESS:
1139         {
1140             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1141             return info;
1142         }
1143         case DXGI_FORMAT_R8G8_UINT:
1144         {
1145             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1146             return info;
1147         }
1148         case DXGI_FORMAT_R8G8_UNORM:
1149         {
1150             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1151             return info;
1152         }
1153         case DXGI_FORMAT_R8_SINT:
1154         {
1155             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1156             return info;
1157         }
1158         case DXGI_FORMAT_R8_SNORM:
1159         {
1160             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1161             return info;
1162         }
1163         case DXGI_FORMAT_R8_TYPELESS:
1164         {
1165             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1166             return info;
1167         }
1168         case DXGI_FORMAT_R8_UINT:
1169         {
1170             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1171             return info;
1172         }
1173         case DXGI_FORMAT_R8_UNORM:
1174         {
1175             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1176             return info;
1177         }
1178         case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
1179         {
1180             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1181             return info;
1182         }
1183         case DXGI_FORMAT_UNKNOWN:
1184         {
1185             static const DXGISupport info(0, F_2D | F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1186             return info;
1187         }
1188         case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
1189         {
1190             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1191             return info;
1192         }
1193         case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
1194         {
1195             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1196             return info;
1197         }
1198         case DXGI_FORMAT_Y210:
1199         {
1200             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1201             return info;
1202         }
1203         case DXGI_FORMAT_Y216:
1204         {
1205             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1206             return info;
1207         }
1208         case DXGI_FORMAT_Y410:
1209         {
1210             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1211             return info;
1212         }
1213         case DXGI_FORMAT_Y416:
1214         {
1215             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1216             return info;
1217         }
1218         case DXGI_FORMAT_YUY2:
1219         {
1220             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1221             return info;
1222         }
1223 
1224         default:
1225             UNREACHABLE();
1226             return GetDefaultSupport();
1227     }
1228     // clang-format on
1229 }
1230 
GetDXGISupport_10_1(DXGI_FORMAT dxgiFormat)1231 const DXGISupport &GetDXGISupport_10_1(DXGI_FORMAT dxgiFormat)
1232 {
1233     // clang-format off
1234     switch (dxgiFormat)
1235     {
1236         case DXGI_FORMAT_420_OPAQUE:
1237         {
1238             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1239             return info;
1240         }
1241         case DXGI_FORMAT_A8P8:
1242         {
1243             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1244             return info;
1245         }
1246         case DXGI_FORMAT_A8_UNORM:
1247         {
1248             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1249             return info;
1250         }
1251         case DXGI_FORMAT_AI44:
1252         {
1253             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1254             return info;
1255         }
1256         case DXGI_FORMAT_AYUV:
1257         {
1258             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
1259             return info;
1260         }
1261         case DXGI_FORMAT_B4G4R4A4_UNORM:
1262         {
1263             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
1264             return info;
1265         }
1266         case DXGI_FORMAT_B5G5R5A1_UNORM:
1267         {
1268             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
1269             return info;
1270         }
1271         case DXGI_FORMAT_B5G6R5_UNORM:
1272         {
1273             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1274             return info;
1275         }
1276         case DXGI_FORMAT_B8G8R8A8_TYPELESS:
1277         {
1278             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
1279             return info;
1280         }
1281         case DXGI_FORMAT_B8G8R8A8_UNORM:
1282         {
1283             static const DXGISupport info(F_MIPGEN, F_DS, F_2D | F_3D | F_CUBE | F_MS | F_RT | F_SAMPLE);
1284             return info;
1285         }
1286         case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
1287         {
1288             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS | F_SAMPLE);
1289             return info;
1290         }
1291         case DXGI_FORMAT_B8G8R8X8_TYPELESS:
1292         {
1293             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
1294             return info;
1295         }
1296         case DXGI_FORMAT_B8G8R8X8_UNORM:
1297         {
1298             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS | F_SAMPLE);
1299             return info;
1300         }
1301         case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
1302         {
1303             static const DXGISupport info(0, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS | F_SAMPLE);
1304             return info;
1305         }
1306         case DXGI_FORMAT_BC1_TYPELESS:
1307         {
1308             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1309             return info;
1310         }
1311         case DXGI_FORMAT_BC1_UNORM:
1312         {
1313             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1314             return info;
1315         }
1316         case DXGI_FORMAT_BC1_UNORM_SRGB:
1317         {
1318             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1319             return info;
1320         }
1321         case DXGI_FORMAT_BC2_TYPELESS:
1322         {
1323             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1324             return info;
1325         }
1326         case DXGI_FORMAT_BC2_UNORM:
1327         {
1328             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1329             return info;
1330         }
1331         case DXGI_FORMAT_BC2_UNORM_SRGB:
1332         {
1333             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1334             return info;
1335         }
1336         case DXGI_FORMAT_BC3_TYPELESS:
1337         {
1338             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1339             return info;
1340         }
1341         case DXGI_FORMAT_BC3_UNORM:
1342         {
1343             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1344             return info;
1345         }
1346         case DXGI_FORMAT_BC3_UNORM_SRGB:
1347         {
1348             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1349             return info;
1350         }
1351         case DXGI_FORMAT_BC4_SNORM:
1352         {
1353             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1354             return info;
1355         }
1356         case DXGI_FORMAT_BC4_TYPELESS:
1357         {
1358             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1359             return info;
1360         }
1361         case DXGI_FORMAT_BC4_UNORM:
1362         {
1363             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1364             return info;
1365         }
1366         case DXGI_FORMAT_BC5_SNORM:
1367         {
1368             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1369             return info;
1370         }
1371         case DXGI_FORMAT_BC5_TYPELESS:
1372         {
1373             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1374             return info;
1375         }
1376         case DXGI_FORMAT_BC5_UNORM:
1377         {
1378             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1379             return info;
1380         }
1381         case DXGI_FORMAT_BC6H_SF16:
1382         {
1383             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1384             return info;
1385         }
1386         case DXGI_FORMAT_BC6H_TYPELESS:
1387         {
1388             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1389             return info;
1390         }
1391         case DXGI_FORMAT_BC6H_UF16:
1392         {
1393             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1394             return info;
1395         }
1396         case DXGI_FORMAT_BC7_TYPELESS:
1397         {
1398             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1399             return info;
1400         }
1401         case DXGI_FORMAT_BC7_UNORM:
1402         {
1403             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1404             return info;
1405         }
1406         case DXGI_FORMAT_BC7_UNORM_SRGB:
1407         {
1408             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1409             return info;
1410         }
1411         case DXGI_FORMAT_D16_UNORM:
1412         {
1413             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
1414             return info;
1415         }
1416         case DXGI_FORMAT_D24_UNORM_S8_UINT:
1417         {
1418             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_RT | F_SAMPLE, F_MS);
1419             return info;
1420         }
1421         case DXGI_FORMAT_D32_FLOAT:
1422         {
1423             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
1424             return info;
1425         }
1426         case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
1427         {
1428             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
1429             return info;
1430         }
1431         case DXGI_FORMAT_G8R8_G8B8_UNORM:
1432         {
1433             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1434             return info;
1435         }
1436         case DXGI_FORMAT_IA44:
1437         {
1438             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1439             return info;
1440         }
1441         case DXGI_FORMAT_NV11:
1442         {
1443             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
1444             return info;
1445         }
1446         case DXGI_FORMAT_NV12:
1447         {
1448             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
1449             return info;
1450         }
1451         case DXGI_FORMAT_P010:
1452         {
1453             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
1454             return info;
1455         }
1456         case DXGI_FORMAT_P016:
1457         {
1458             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
1459             return info;
1460         }
1461         case DXGI_FORMAT_P8:
1462         {
1463             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1464             return info;
1465         }
1466         case DXGI_FORMAT_R10G10B10A2_TYPELESS:
1467         {
1468             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1469             return info;
1470         }
1471         case DXGI_FORMAT_R10G10B10A2_UINT:
1472         {
1473             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1474             return info;
1475         }
1476         case DXGI_FORMAT_R10G10B10A2_UNORM:
1477         {
1478             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1479             return info;
1480         }
1481         case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
1482         {
1483             static const DXGISupport info(0, F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D);
1484             return info;
1485         }
1486         case DXGI_FORMAT_R11G11B10_FLOAT:
1487         {
1488             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1489             return info;
1490         }
1491         case DXGI_FORMAT_R16G16B16A16_FLOAT:
1492         {
1493             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1494             return info;
1495         }
1496         case DXGI_FORMAT_R16G16B16A16_SINT:
1497         {
1498             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1499             return info;
1500         }
1501         case DXGI_FORMAT_R16G16B16A16_SNORM:
1502         {
1503             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1504             return info;
1505         }
1506         case DXGI_FORMAT_R16G16B16A16_TYPELESS:
1507         {
1508             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1509             return info;
1510         }
1511         case DXGI_FORMAT_R16G16B16A16_UINT:
1512         {
1513             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1514             return info;
1515         }
1516         case DXGI_FORMAT_R16G16B16A16_UNORM:
1517         {
1518             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1519             return info;
1520         }
1521         case DXGI_FORMAT_R16G16_FLOAT:
1522         {
1523             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1524             return info;
1525         }
1526         case DXGI_FORMAT_R16G16_SINT:
1527         {
1528             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1529             return info;
1530         }
1531         case DXGI_FORMAT_R16G16_SNORM:
1532         {
1533             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1534             return info;
1535         }
1536         case DXGI_FORMAT_R16G16_TYPELESS:
1537         {
1538             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1539             return info;
1540         }
1541         case DXGI_FORMAT_R16G16_UINT:
1542         {
1543             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1544             return info;
1545         }
1546         case DXGI_FORMAT_R16G16_UNORM:
1547         {
1548             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1549             return info;
1550         }
1551         case DXGI_FORMAT_R16_FLOAT:
1552         {
1553             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1554             return info;
1555         }
1556         case DXGI_FORMAT_R16_SINT:
1557         {
1558             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1559             return info;
1560         }
1561         case DXGI_FORMAT_R16_SNORM:
1562         {
1563             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1564             return info;
1565         }
1566         case DXGI_FORMAT_R16_TYPELESS:
1567         {
1568             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1569             return info;
1570         }
1571         case DXGI_FORMAT_R16_UINT:
1572         {
1573             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1574             return info;
1575         }
1576         case DXGI_FORMAT_R16_UNORM:
1577         {
1578             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1579             return info;
1580         }
1581         case DXGI_FORMAT_R1_UNORM:
1582         {
1583             static const DXGISupport info(F_2D, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1584             return info;
1585         }
1586         case DXGI_FORMAT_R24G8_TYPELESS:
1587         {
1588             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1589             return info;
1590         }
1591         case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
1592         {
1593             static const DXGISupport info(F_2D | F_CUBE | F_SAMPLE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1594             return info;
1595         }
1596         case DXGI_FORMAT_R32G32B32A32_FLOAT:
1597         {
1598             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1599             return info;
1600         }
1601         case DXGI_FORMAT_R32G32B32A32_SINT:
1602         {
1603             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1604             return info;
1605         }
1606         case DXGI_FORMAT_R32G32B32A32_TYPELESS:
1607         {
1608             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1609             return info;
1610         }
1611         case DXGI_FORMAT_R32G32B32A32_UINT:
1612         {
1613             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1614             return info;
1615         }
1616         case DXGI_FORMAT_R32G32B32_FLOAT:
1617         {
1618             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN, F_MS | F_RT);
1619             return info;
1620         }
1621         case DXGI_FORMAT_R32G32B32_SINT:
1622         {
1623             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
1624             return info;
1625         }
1626         case DXGI_FORMAT_R32G32B32_TYPELESS:
1627         {
1628             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1629             return info;
1630         }
1631         case DXGI_FORMAT_R32G32B32_UINT:
1632         {
1633             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
1634             return info;
1635         }
1636         case DXGI_FORMAT_R32G32_FLOAT:
1637         {
1638             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1639             return info;
1640         }
1641         case DXGI_FORMAT_R32G32_SINT:
1642         {
1643             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1644             return info;
1645         }
1646         case DXGI_FORMAT_R32G32_TYPELESS:
1647         {
1648             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1649             return info;
1650         }
1651         case DXGI_FORMAT_R32G32_UINT:
1652         {
1653             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1654             return info;
1655         }
1656         case DXGI_FORMAT_R32G8X24_TYPELESS:
1657         {
1658             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1659             return info;
1660         }
1661         case DXGI_FORMAT_R32_FLOAT:
1662         {
1663             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1664             return info;
1665         }
1666         case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
1667         {
1668             static const DXGISupport info(F_2D | F_CUBE | F_SAMPLE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1669             return info;
1670         }
1671         case DXGI_FORMAT_R32_SINT:
1672         {
1673             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1674             return info;
1675         }
1676         case DXGI_FORMAT_R32_TYPELESS:
1677         {
1678             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1679             return info;
1680         }
1681         case DXGI_FORMAT_R32_UINT:
1682         {
1683             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1684             return info;
1685         }
1686         case DXGI_FORMAT_R8G8B8A8_SINT:
1687         {
1688             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1689             return info;
1690         }
1691         case DXGI_FORMAT_R8G8B8A8_SNORM:
1692         {
1693             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1694             return info;
1695         }
1696         case DXGI_FORMAT_R8G8B8A8_TYPELESS:
1697         {
1698             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1699             return info;
1700         }
1701         case DXGI_FORMAT_R8G8B8A8_UINT:
1702         {
1703             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1704             return info;
1705         }
1706         case DXGI_FORMAT_R8G8B8A8_UNORM:
1707         {
1708             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1709             return info;
1710         }
1711         case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
1712         {
1713             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1714             return info;
1715         }
1716         case DXGI_FORMAT_R8G8_B8G8_UNORM:
1717         {
1718             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1719             return info;
1720         }
1721         case DXGI_FORMAT_R8G8_SINT:
1722         {
1723             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1724             return info;
1725         }
1726         case DXGI_FORMAT_R8G8_SNORM:
1727         {
1728             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1729             return info;
1730         }
1731         case DXGI_FORMAT_R8G8_TYPELESS:
1732         {
1733             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1734             return info;
1735         }
1736         case DXGI_FORMAT_R8G8_UINT:
1737         {
1738             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1739             return info;
1740         }
1741         case DXGI_FORMAT_R8G8_UNORM:
1742         {
1743             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1744             return info;
1745         }
1746         case DXGI_FORMAT_R8_SINT:
1747         {
1748             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1749             return info;
1750         }
1751         case DXGI_FORMAT_R8_SNORM:
1752         {
1753             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1754             return info;
1755         }
1756         case DXGI_FORMAT_R8_TYPELESS:
1757         {
1758             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1759             return info;
1760         }
1761         case DXGI_FORMAT_R8_UINT:
1762         {
1763             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
1764             return info;
1765         }
1766         case DXGI_FORMAT_R8_UNORM:
1767         {
1768             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1769             return info;
1770         }
1771         case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
1772         {
1773             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1774             return info;
1775         }
1776         case DXGI_FORMAT_UNKNOWN:
1777         {
1778             static const DXGISupport info(0, F_2D | F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1779             return info;
1780         }
1781         case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
1782         {
1783             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1784             return info;
1785         }
1786         case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
1787         {
1788             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1789             return info;
1790         }
1791         case DXGI_FORMAT_Y210:
1792         {
1793             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1794             return info;
1795         }
1796         case DXGI_FORMAT_Y216:
1797         {
1798             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1799             return info;
1800         }
1801         case DXGI_FORMAT_Y410:
1802         {
1803             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1804             return info;
1805         }
1806         case DXGI_FORMAT_Y416:
1807         {
1808             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1809             return info;
1810         }
1811         case DXGI_FORMAT_YUY2:
1812         {
1813             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
1814             return info;
1815         }
1816 
1817         default:
1818             UNREACHABLE();
1819             return GetDefaultSupport();
1820     }
1821     // clang-format on
1822 }
1823 
GetDXGISupport_11_0(DXGI_FORMAT dxgiFormat)1824 const DXGISupport &GetDXGISupport_11_0(DXGI_FORMAT dxgiFormat)
1825 {
1826     // clang-format off
1827     switch (dxgiFormat)
1828     {
1829         case DXGI_FORMAT_420_OPAQUE:
1830         {
1831             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1832             return info;
1833         }
1834         case DXGI_FORMAT_A8P8:
1835         {
1836             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1837             return info;
1838         }
1839         case DXGI_FORMAT_A8_UNORM:
1840         {
1841             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1842             return info;
1843         }
1844         case DXGI_FORMAT_AI44:
1845         {
1846             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1847             return info;
1848         }
1849         case DXGI_FORMAT_AYUV:
1850         {
1851             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
1852             return info;
1853         }
1854         case DXGI_FORMAT_B4G4R4A4_UNORM:
1855         {
1856             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
1857             return info;
1858         }
1859         case DXGI_FORMAT_B5G5R5A1_UNORM:
1860         {
1861             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
1862             return info;
1863         }
1864         case DXGI_FORMAT_B5G6R5_UNORM:
1865         {
1866             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
1867             return info;
1868         }
1869         case DXGI_FORMAT_B8G8R8A8_TYPELESS:
1870         {
1871             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
1872             return info;
1873         }
1874         case DXGI_FORMAT_B8G8R8A8_UNORM:
1875         {
1876             static const DXGISupport info(F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_2D | F_3D | F_CUBE | F_MS);
1877             return info;
1878         }
1879         case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
1880         {
1881             static const DXGISupport info(F_RT | F_SAMPLE, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
1882             return info;
1883         }
1884         case DXGI_FORMAT_B8G8R8X8_TYPELESS:
1885         {
1886             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
1887             return info;
1888         }
1889         case DXGI_FORMAT_B8G8R8X8_UNORM:
1890         {
1891             static const DXGISupport info(F_RT | F_SAMPLE, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
1892             return info;
1893         }
1894         case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
1895         {
1896             static const DXGISupport info(F_RT | F_SAMPLE, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
1897             return info;
1898         }
1899         case DXGI_FORMAT_BC1_TYPELESS:
1900         {
1901             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1902             return info;
1903         }
1904         case DXGI_FORMAT_BC1_UNORM:
1905         {
1906             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1907             return info;
1908         }
1909         case DXGI_FORMAT_BC1_UNORM_SRGB:
1910         {
1911             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1912             return info;
1913         }
1914         case DXGI_FORMAT_BC2_TYPELESS:
1915         {
1916             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1917             return info;
1918         }
1919         case DXGI_FORMAT_BC2_UNORM:
1920         {
1921             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1922             return info;
1923         }
1924         case DXGI_FORMAT_BC2_UNORM_SRGB:
1925         {
1926             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1927             return info;
1928         }
1929         case DXGI_FORMAT_BC3_TYPELESS:
1930         {
1931             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1932             return info;
1933         }
1934         case DXGI_FORMAT_BC3_UNORM:
1935         {
1936             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1937             return info;
1938         }
1939         case DXGI_FORMAT_BC3_UNORM_SRGB:
1940         {
1941             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1942             return info;
1943         }
1944         case DXGI_FORMAT_BC4_SNORM:
1945         {
1946             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1947             return info;
1948         }
1949         case DXGI_FORMAT_BC4_TYPELESS:
1950         {
1951             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1952             return info;
1953         }
1954         case DXGI_FORMAT_BC4_UNORM:
1955         {
1956             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1957             return info;
1958         }
1959         case DXGI_FORMAT_BC5_SNORM:
1960         {
1961             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1962             return info;
1963         }
1964         case DXGI_FORMAT_BC5_TYPELESS:
1965         {
1966             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1967             return info;
1968         }
1969         case DXGI_FORMAT_BC5_UNORM:
1970         {
1971             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1972             return info;
1973         }
1974         case DXGI_FORMAT_BC6H_SF16:
1975         {
1976             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1977             return info;
1978         }
1979         case DXGI_FORMAT_BC6H_TYPELESS:
1980         {
1981             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1982             return info;
1983         }
1984         case DXGI_FORMAT_BC6H_UF16:
1985         {
1986             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1987             return info;
1988         }
1989         case DXGI_FORMAT_BC7_TYPELESS:
1990         {
1991             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
1992             return info;
1993         }
1994         case DXGI_FORMAT_BC7_UNORM:
1995         {
1996             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
1997             return info;
1998         }
1999         case DXGI_FORMAT_BC7_UNORM_SRGB:
2000         {
2001             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2002             return info;
2003         }
2004         case DXGI_FORMAT_D16_UNORM:
2005         {
2006             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
2007             return info;
2008         }
2009         case DXGI_FORMAT_D24_UNORM_S8_UINT:
2010         {
2011             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_RT | F_SAMPLE, F_MS);
2012             return info;
2013         }
2014         case DXGI_FORMAT_D32_FLOAT:
2015         {
2016             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
2017             return info;
2018         }
2019         case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
2020         {
2021             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
2022             return info;
2023         }
2024         case DXGI_FORMAT_G8R8_G8B8_UNORM:
2025         {
2026             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2027             return info;
2028         }
2029         case DXGI_FORMAT_IA44:
2030         {
2031             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2032             return info;
2033         }
2034         case DXGI_FORMAT_NV11:
2035         {
2036             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2037             return info;
2038         }
2039         case DXGI_FORMAT_NV12:
2040         {
2041             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2042             return info;
2043         }
2044         case DXGI_FORMAT_P010:
2045         {
2046             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2047             return info;
2048         }
2049         case DXGI_FORMAT_P016:
2050         {
2051             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2052             return info;
2053         }
2054         case DXGI_FORMAT_P8:
2055         {
2056             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2057             return info;
2058         }
2059         case DXGI_FORMAT_R10G10B10A2_TYPELESS:
2060         {
2061             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2062             return info;
2063         }
2064         case DXGI_FORMAT_R10G10B10A2_UINT:
2065         {
2066             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2067             return info;
2068         }
2069         case DXGI_FORMAT_R10G10B10A2_UNORM:
2070         {
2071             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2072             return info;
2073         }
2074         case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
2075         {
2076             static const DXGISupport info(0, F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D);
2077             return info;
2078         }
2079         case DXGI_FORMAT_R11G11B10_FLOAT:
2080         {
2081             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2082             return info;
2083         }
2084         case DXGI_FORMAT_R16G16B16A16_FLOAT:
2085         {
2086             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2087             return info;
2088         }
2089         case DXGI_FORMAT_R16G16B16A16_SINT:
2090         {
2091             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2092             return info;
2093         }
2094         case DXGI_FORMAT_R16G16B16A16_SNORM:
2095         {
2096             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2097             return info;
2098         }
2099         case DXGI_FORMAT_R16G16B16A16_TYPELESS:
2100         {
2101             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2102             return info;
2103         }
2104         case DXGI_FORMAT_R16G16B16A16_UINT:
2105         {
2106             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2107             return info;
2108         }
2109         case DXGI_FORMAT_R16G16B16A16_UNORM:
2110         {
2111             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2112             return info;
2113         }
2114         case DXGI_FORMAT_R16G16_FLOAT:
2115         {
2116             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2117             return info;
2118         }
2119         case DXGI_FORMAT_R16G16_SINT:
2120         {
2121             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2122             return info;
2123         }
2124         case DXGI_FORMAT_R16G16_SNORM:
2125         {
2126             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2127             return info;
2128         }
2129         case DXGI_FORMAT_R16G16_TYPELESS:
2130         {
2131             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2132             return info;
2133         }
2134         case DXGI_FORMAT_R16G16_UINT:
2135         {
2136             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2137             return info;
2138         }
2139         case DXGI_FORMAT_R16G16_UNORM:
2140         {
2141             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2142             return info;
2143         }
2144         case DXGI_FORMAT_R16_FLOAT:
2145         {
2146             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2147             return info;
2148         }
2149         case DXGI_FORMAT_R16_SINT:
2150         {
2151             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2152             return info;
2153         }
2154         case DXGI_FORMAT_R16_SNORM:
2155         {
2156             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2157             return info;
2158         }
2159         case DXGI_FORMAT_R16_TYPELESS:
2160         {
2161             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2162             return info;
2163         }
2164         case DXGI_FORMAT_R16_UINT:
2165         {
2166             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2167             return info;
2168         }
2169         case DXGI_FORMAT_R16_UNORM:
2170         {
2171             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2172             return info;
2173         }
2174         case DXGI_FORMAT_R1_UNORM:
2175         {
2176             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2177             return info;
2178         }
2179         case DXGI_FORMAT_R24G8_TYPELESS:
2180         {
2181             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2182             return info;
2183         }
2184         case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
2185         {
2186             static const DXGISupport info(F_2D | F_CUBE | F_SAMPLE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2187             return info;
2188         }
2189         case DXGI_FORMAT_R32G32B32A32_FLOAT:
2190         {
2191             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2192             return info;
2193         }
2194         case DXGI_FORMAT_R32G32B32A32_SINT:
2195         {
2196             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2197             return info;
2198         }
2199         case DXGI_FORMAT_R32G32B32A32_TYPELESS:
2200         {
2201             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2202             return info;
2203         }
2204         case DXGI_FORMAT_R32G32B32A32_UINT:
2205         {
2206             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2207             return info;
2208         }
2209         case DXGI_FORMAT_R32G32B32_FLOAT:
2210         {
2211             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN, F_MS | F_RT);
2212             return info;
2213         }
2214         case DXGI_FORMAT_R32G32B32_SINT:
2215         {
2216             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
2217             return info;
2218         }
2219         case DXGI_FORMAT_R32G32B32_TYPELESS:
2220         {
2221             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2222             return info;
2223         }
2224         case DXGI_FORMAT_R32G32B32_UINT:
2225         {
2226             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
2227             return info;
2228         }
2229         case DXGI_FORMAT_R32G32_FLOAT:
2230         {
2231             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2232             return info;
2233         }
2234         case DXGI_FORMAT_R32G32_SINT:
2235         {
2236             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2237             return info;
2238         }
2239         case DXGI_FORMAT_R32G32_TYPELESS:
2240         {
2241             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2242             return info;
2243         }
2244         case DXGI_FORMAT_R32G32_UINT:
2245         {
2246             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2247             return info;
2248         }
2249         case DXGI_FORMAT_R32G8X24_TYPELESS:
2250         {
2251             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2252             return info;
2253         }
2254         case DXGI_FORMAT_R32_FLOAT:
2255         {
2256             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2257             return info;
2258         }
2259         case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
2260         {
2261             static const DXGISupport info(F_2D | F_CUBE | F_SAMPLE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2262             return info;
2263         }
2264         case DXGI_FORMAT_R32_SINT:
2265         {
2266             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2267             return info;
2268         }
2269         case DXGI_FORMAT_R32_TYPELESS:
2270         {
2271             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2272             return info;
2273         }
2274         case DXGI_FORMAT_R32_UINT:
2275         {
2276             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2277             return info;
2278         }
2279         case DXGI_FORMAT_R8G8B8A8_SINT:
2280         {
2281             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2282             return info;
2283         }
2284         case DXGI_FORMAT_R8G8B8A8_SNORM:
2285         {
2286             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2287             return info;
2288         }
2289         case DXGI_FORMAT_R8G8B8A8_TYPELESS:
2290         {
2291             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2292             return info;
2293         }
2294         case DXGI_FORMAT_R8G8B8A8_UINT:
2295         {
2296             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2297             return info;
2298         }
2299         case DXGI_FORMAT_R8G8B8A8_UNORM:
2300         {
2301             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2302             return info;
2303         }
2304         case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
2305         {
2306             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2307             return info;
2308         }
2309         case DXGI_FORMAT_R8G8_B8G8_UNORM:
2310         {
2311             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2312             return info;
2313         }
2314         case DXGI_FORMAT_R8G8_SINT:
2315         {
2316             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2317             return info;
2318         }
2319         case DXGI_FORMAT_R8G8_SNORM:
2320         {
2321             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2322             return info;
2323         }
2324         case DXGI_FORMAT_R8G8_TYPELESS:
2325         {
2326             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2327             return info;
2328         }
2329         case DXGI_FORMAT_R8G8_UINT:
2330         {
2331             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2332             return info;
2333         }
2334         case DXGI_FORMAT_R8G8_UNORM:
2335         {
2336             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2337             return info;
2338         }
2339         case DXGI_FORMAT_R8_SINT:
2340         {
2341             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2342             return info;
2343         }
2344         case DXGI_FORMAT_R8_SNORM:
2345         {
2346             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2347             return info;
2348         }
2349         case DXGI_FORMAT_R8_TYPELESS:
2350         {
2351             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2352             return info;
2353         }
2354         case DXGI_FORMAT_R8_UINT:
2355         {
2356             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2357             return info;
2358         }
2359         case DXGI_FORMAT_R8_UNORM:
2360         {
2361             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2362             return info;
2363         }
2364         case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
2365         {
2366             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2367             return info;
2368         }
2369         case DXGI_FORMAT_UNKNOWN:
2370         {
2371             static const DXGISupport info(0, F_2D | F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2372             return info;
2373         }
2374         case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
2375         {
2376             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2377             return info;
2378         }
2379         case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
2380         {
2381             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2382             return info;
2383         }
2384         case DXGI_FORMAT_Y210:
2385         {
2386             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2387             return info;
2388         }
2389         case DXGI_FORMAT_Y216:
2390         {
2391             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2392             return info;
2393         }
2394         case DXGI_FORMAT_Y410:
2395         {
2396             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2397             return info;
2398         }
2399         case DXGI_FORMAT_Y416:
2400         {
2401             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2402             return info;
2403         }
2404         case DXGI_FORMAT_YUY2:
2405         {
2406             static const DXGISupport info(0, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2407             return info;
2408         }
2409 
2410         default:
2411             UNREACHABLE();
2412             return GetDefaultSupport();
2413     }
2414     // clang-format on
2415 }
2416 
GetDXGISupport_11_1(DXGI_FORMAT dxgiFormat)2417 const DXGISupport &GetDXGISupport_11_1(DXGI_FORMAT dxgiFormat)
2418 {
2419     // clang-format off
2420     switch (dxgiFormat)
2421     {
2422         case DXGI_FORMAT_420_OPAQUE:
2423         {
2424             static const DXGISupport info(F_2D, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2425             return info;
2426         }
2427         case DXGI_FORMAT_A8P8:
2428         {
2429             static const DXGISupport info(F_2D, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2430             return info;
2431         }
2432         case DXGI_FORMAT_A8_UNORM:
2433         {
2434             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2435             return info;
2436         }
2437         case DXGI_FORMAT_AI44:
2438         {
2439             static const DXGISupport info(F_2D, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2440             return info;
2441         }
2442         case DXGI_FORMAT_AYUV:
2443         {
2444             static const DXGISupport info(F_2D | F_RT | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2445             return info;
2446         }
2447         case DXGI_FORMAT_B4G4R4A4_UNORM:
2448         {
2449             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
2450             return info;
2451         }
2452         case DXGI_FORMAT_B5G5R5A1_UNORM:
2453         {
2454             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_SAMPLE, F_DS, F_MS | F_RT);
2455             return info;
2456         }
2457         case DXGI_FORMAT_B5G6R5_UNORM:
2458         {
2459             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2460             return info;
2461         }
2462         case DXGI_FORMAT_B8G8R8A8_TYPELESS:
2463         {
2464             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
2465             return info;
2466         }
2467         case DXGI_FORMAT_B8G8R8A8_UNORM:
2468         {
2469             static const DXGISupport info(F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_2D | F_3D | F_CUBE | F_MS);
2470             return info;
2471         }
2472         case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
2473         {
2474             static const DXGISupport info(F_RT | F_SAMPLE, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
2475             return info;
2476         }
2477         case DXGI_FORMAT_B8G8R8X8_TYPELESS:
2478         {
2479             static const DXGISupport info(0, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D | F_CUBE);
2480             return info;
2481         }
2482         case DXGI_FORMAT_B8G8R8X8_UNORM:
2483         {
2484             static const DXGISupport info(F_RT | F_SAMPLE, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
2485             return info;
2486         }
2487         case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
2488         {
2489             static const DXGISupport info(F_RT | F_SAMPLE, F_DS | F_MIPGEN, F_2D | F_3D | F_CUBE | F_MS);
2490             return info;
2491         }
2492         case DXGI_FORMAT_BC1_TYPELESS:
2493         {
2494             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2495             return info;
2496         }
2497         case DXGI_FORMAT_BC1_UNORM:
2498         {
2499             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2500             return info;
2501         }
2502         case DXGI_FORMAT_BC1_UNORM_SRGB:
2503         {
2504             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2505             return info;
2506         }
2507         case DXGI_FORMAT_BC2_TYPELESS:
2508         {
2509             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2510             return info;
2511         }
2512         case DXGI_FORMAT_BC2_UNORM:
2513         {
2514             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2515             return info;
2516         }
2517         case DXGI_FORMAT_BC2_UNORM_SRGB:
2518         {
2519             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2520             return info;
2521         }
2522         case DXGI_FORMAT_BC3_TYPELESS:
2523         {
2524             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2525             return info;
2526         }
2527         case DXGI_FORMAT_BC3_UNORM:
2528         {
2529             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2530             return info;
2531         }
2532         case DXGI_FORMAT_BC3_UNORM_SRGB:
2533         {
2534             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2535             return info;
2536         }
2537         case DXGI_FORMAT_BC4_SNORM:
2538         {
2539             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2540             return info;
2541         }
2542         case DXGI_FORMAT_BC4_TYPELESS:
2543         {
2544             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2545             return info;
2546         }
2547         case DXGI_FORMAT_BC4_UNORM:
2548         {
2549             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2550             return info;
2551         }
2552         case DXGI_FORMAT_BC5_SNORM:
2553         {
2554             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2555             return info;
2556         }
2557         case DXGI_FORMAT_BC5_TYPELESS:
2558         {
2559             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2560             return info;
2561         }
2562         case DXGI_FORMAT_BC5_UNORM:
2563         {
2564             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2565             return info;
2566         }
2567         case DXGI_FORMAT_BC6H_SF16:
2568         {
2569             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2570             return info;
2571         }
2572         case DXGI_FORMAT_BC6H_TYPELESS:
2573         {
2574             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2575             return info;
2576         }
2577         case DXGI_FORMAT_BC6H_UF16:
2578         {
2579             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2580             return info;
2581         }
2582         case DXGI_FORMAT_BC7_TYPELESS:
2583         {
2584             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2585             return info;
2586         }
2587         case DXGI_FORMAT_BC7_UNORM:
2588         {
2589             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2590             return info;
2591         }
2592         case DXGI_FORMAT_BC7_UNORM_SRGB:
2593         {
2594             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2595             return info;
2596         }
2597         case DXGI_FORMAT_D16_UNORM:
2598         {
2599             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
2600             return info;
2601         }
2602         case DXGI_FORMAT_D24_UNORM_S8_UINT:
2603         {
2604             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_RT | F_SAMPLE, F_MS);
2605             return info;
2606         }
2607         case DXGI_FORMAT_D32_FLOAT:
2608         {
2609             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
2610             return info;
2611         }
2612         case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
2613         {
2614             static const DXGISupport info(F_2D | F_CUBE | F_DS, F_3D | F_MIPGEN | F_RT | F_SAMPLE, F_MS);
2615             return info;
2616         }
2617         case DXGI_FORMAT_G8R8_G8B8_UNORM:
2618         {
2619             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2620             return info;
2621         }
2622         case DXGI_FORMAT_IA44:
2623         {
2624             static const DXGISupport info(F_2D, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2625             return info;
2626         }
2627         case DXGI_FORMAT_NV11:
2628         {
2629             static const DXGISupport info(F_2D | F_RT | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2630             return info;
2631         }
2632         case DXGI_FORMAT_NV12:
2633         {
2634             static const DXGISupport info(F_2D | F_RT | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2635             return info;
2636         }
2637         case DXGI_FORMAT_P010:
2638         {
2639             static const DXGISupport info(F_2D | F_RT | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2640             return info;
2641         }
2642         case DXGI_FORMAT_P016:
2643         {
2644             static const DXGISupport info(F_2D | F_RT | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN, F_MS);
2645             return info;
2646         }
2647         case DXGI_FORMAT_P8:
2648         {
2649             static const DXGISupport info(F_2D, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2650             return info;
2651         }
2652         case DXGI_FORMAT_R10G10B10A2_TYPELESS:
2653         {
2654             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2655             return info;
2656         }
2657         case DXGI_FORMAT_R10G10B10A2_UINT:
2658         {
2659             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2660             return info;
2661         }
2662         case DXGI_FORMAT_R10G10B10A2_UNORM:
2663         {
2664             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2665             return info;
2666         }
2667         case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
2668         {
2669             static const DXGISupport info(0, F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, F_2D | F_3D);
2670             return info;
2671         }
2672         case DXGI_FORMAT_R11G11B10_FLOAT:
2673         {
2674             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2675             return info;
2676         }
2677         case DXGI_FORMAT_R16G16B16A16_FLOAT:
2678         {
2679             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2680             return info;
2681         }
2682         case DXGI_FORMAT_R16G16B16A16_SINT:
2683         {
2684             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2685             return info;
2686         }
2687         case DXGI_FORMAT_R16G16B16A16_SNORM:
2688         {
2689             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2690             return info;
2691         }
2692         case DXGI_FORMAT_R16G16B16A16_TYPELESS:
2693         {
2694             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2695             return info;
2696         }
2697         case DXGI_FORMAT_R16G16B16A16_UINT:
2698         {
2699             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2700             return info;
2701         }
2702         case DXGI_FORMAT_R16G16B16A16_UNORM:
2703         {
2704             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2705             return info;
2706         }
2707         case DXGI_FORMAT_R16G16_FLOAT:
2708         {
2709             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2710             return info;
2711         }
2712         case DXGI_FORMAT_R16G16_SINT:
2713         {
2714             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2715             return info;
2716         }
2717         case DXGI_FORMAT_R16G16_SNORM:
2718         {
2719             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2720             return info;
2721         }
2722         case DXGI_FORMAT_R16G16_TYPELESS:
2723         {
2724             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2725             return info;
2726         }
2727         case DXGI_FORMAT_R16G16_UINT:
2728         {
2729             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2730             return info;
2731         }
2732         case DXGI_FORMAT_R16G16_UNORM:
2733         {
2734             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2735             return info;
2736         }
2737         case DXGI_FORMAT_R16_FLOAT:
2738         {
2739             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2740             return info;
2741         }
2742         case DXGI_FORMAT_R16_SINT:
2743         {
2744             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2745             return info;
2746         }
2747         case DXGI_FORMAT_R16_SNORM:
2748         {
2749             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2750             return info;
2751         }
2752         case DXGI_FORMAT_R16_TYPELESS:
2753         {
2754             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2755             return info;
2756         }
2757         case DXGI_FORMAT_R16_UINT:
2758         {
2759             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2760             return info;
2761         }
2762         case DXGI_FORMAT_R16_UNORM:
2763         {
2764             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2765             return info;
2766         }
2767         case DXGI_FORMAT_R1_UNORM:
2768         {
2769             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2770             return info;
2771         }
2772         case DXGI_FORMAT_R24G8_TYPELESS:
2773         {
2774             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2775             return info;
2776         }
2777         case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
2778         {
2779             static const DXGISupport info(F_2D | F_CUBE | F_SAMPLE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2780             return info;
2781         }
2782         case DXGI_FORMAT_R32G32B32A32_FLOAT:
2783         {
2784             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2785             return info;
2786         }
2787         case DXGI_FORMAT_R32G32B32A32_SINT:
2788         {
2789             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2790             return info;
2791         }
2792         case DXGI_FORMAT_R32G32B32A32_TYPELESS:
2793         {
2794             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2795             return info;
2796         }
2797         case DXGI_FORMAT_R32G32B32A32_UINT:
2798         {
2799             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2800             return info;
2801         }
2802         case DXGI_FORMAT_R32G32B32_FLOAT:
2803         {
2804             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN, F_MS | F_RT);
2805             return info;
2806         }
2807         case DXGI_FORMAT_R32G32B32_SINT:
2808         {
2809             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
2810             return info;
2811         }
2812         case DXGI_FORMAT_R32G32B32_TYPELESS:
2813         {
2814             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2815             return info;
2816         }
2817         case DXGI_FORMAT_R32G32B32_UINT:
2818         {
2819             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_SAMPLE, F_MS | F_RT);
2820             return info;
2821         }
2822         case DXGI_FORMAT_R32G32_FLOAT:
2823         {
2824             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2825             return info;
2826         }
2827         case DXGI_FORMAT_R32G32_SINT:
2828         {
2829             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2830             return info;
2831         }
2832         case DXGI_FORMAT_R32G32_TYPELESS:
2833         {
2834             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2835             return info;
2836         }
2837         case DXGI_FORMAT_R32G32_UINT:
2838         {
2839             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2840             return info;
2841         }
2842         case DXGI_FORMAT_R32G8X24_TYPELESS:
2843         {
2844             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2845             return info;
2846         }
2847         case DXGI_FORMAT_R32_FLOAT:
2848         {
2849             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2850             return info;
2851         }
2852         case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
2853         {
2854             static const DXGISupport info(F_2D | F_CUBE | F_SAMPLE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2855             return info;
2856         }
2857         case DXGI_FORMAT_R32_SINT:
2858         {
2859             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2860             return info;
2861         }
2862         case DXGI_FORMAT_R32_TYPELESS:
2863         {
2864             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2865             return info;
2866         }
2867         case DXGI_FORMAT_R32_UINT:
2868         {
2869             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2870             return info;
2871         }
2872         case DXGI_FORMAT_R8G8B8A8_SINT:
2873         {
2874             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2875             return info;
2876         }
2877         case DXGI_FORMAT_R8G8B8A8_SNORM:
2878         {
2879             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2880             return info;
2881         }
2882         case DXGI_FORMAT_R8G8B8A8_TYPELESS:
2883         {
2884             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2885             return info;
2886         }
2887         case DXGI_FORMAT_R8G8B8A8_UINT:
2888         {
2889             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2890             return info;
2891         }
2892         case DXGI_FORMAT_R8G8B8A8_UNORM:
2893         {
2894             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2895             return info;
2896         }
2897         case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
2898         {
2899             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2900             return info;
2901         }
2902         case DXGI_FORMAT_R8G8_B8G8_UNORM:
2903         {
2904             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2905             return info;
2906         }
2907         case DXGI_FORMAT_R8G8_SINT:
2908         {
2909             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2910             return info;
2911         }
2912         case DXGI_FORMAT_R8G8_SNORM:
2913         {
2914             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2915             return info;
2916         }
2917         case DXGI_FORMAT_R8G8_TYPELESS:
2918         {
2919             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2920             return info;
2921         }
2922         case DXGI_FORMAT_R8G8_UINT:
2923         {
2924             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2925             return info;
2926         }
2927         case DXGI_FORMAT_R8G8_UNORM:
2928         {
2929             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2930             return info;
2931         }
2932         case DXGI_FORMAT_R8_SINT:
2933         {
2934             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2935             return info;
2936         }
2937         case DXGI_FORMAT_R8_SNORM:
2938         {
2939             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2940             return info;
2941         }
2942         case DXGI_FORMAT_R8_TYPELESS:
2943         {
2944             static const DXGISupport info(F_2D | F_3D | F_CUBE, F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2945             return info;
2946         }
2947         case DXGI_FORMAT_R8_UINT:
2948         {
2949             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_RT, F_DS | F_MIPGEN | F_SAMPLE, F_MS);
2950             return info;
2951         }
2952         case DXGI_FORMAT_R8_UNORM:
2953         {
2954             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_MIPGEN | F_RT | F_SAMPLE, F_DS, F_MS);
2955             return info;
2956         }
2957         case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
2958         {
2959             static const DXGISupport info(F_2D | F_3D | F_CUBE | F_SAMPLE, F_DS | F_MIPGEN | F_MS | F_RT, 0);
2960             return info;
2961         }
2962         case DXGI_FORMAT_UNKNOWN:
2963         {
2964             static const DXGISupport info(0, F_2D | F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2965             return info;
2966         }
2967         case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
2968         {
2969             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2970             return info;
2971         }
2972         case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
2973         {
2974             static const DXGISupport info(F_2D | F_CUBE, F_3D | F_DS | F_MIPGEN | F_MS | F_RT | F_SAMPLE, 0);
2975             return info;
2976         }
2977         case DXGI_FORMAT_Y210:
2978         {
2979             static const DXGISupport info(F_2D | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2980             return info;
2981         }
2982         case DXGI_FORMAT_Y216:
2983         {
2984             static const DXGISupport info(F_2D | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2985             return info;
2986         }
2987         case DXGI_FORMAT_Y410:
2988         {
2989             static const DXGISupport info(F_2D | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2990             return info;
2991         }
2992         case DXGI_FORMAT_Y416:
2993         {
2994             static const DXGISupport info(F_2D | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
2995             return info;
2996         }
2997         case DXGI_FORMAT_YUY2:
2998         {
2999             static const DXGISupport info(F_2D | F_SAMPLE, F_3D | F_CUBE | F_DS | F_MIPGEN | F_MS | F_RT, 0);
3000             return info;
3001         }
3002 
3003         default:
3004             UNREACHABLE();
3005             return GetDefaultSupport();
3006     }
3007     // clang-format on
3008 }
3009 
3010 }
3011 
3012 #undef F_2D
3013 #undef F_3D
3014 #undef F_CUBE
3015 #undef F_SAMPLE
3016 #undef F_RT
3017 #undef F_MS
3018 #undef F_DS
3019 #undef F_MIPGEN
3020 
GetDXGISupport(DXGI_FORMAT dxgiFormat,D3D_FEATURE_LEVEL featureLevel)3021 const DXGISupport &GetDXGISupport(DXGI_FORMAT dxgiFormat, D3D_FEATURE_LEVEL featureLevel)
3022 {
3023     switch (featureLevel)
3024     {
3025         case D3D_FEATURE_LEVEL_9_3:
3026             return GetDXGISupport_9_3(dxgiFormat);
3027         case D3D_FEATURE_LEVEL_10_0:
3028             return GetDXGISupport_10_0(dxgiFormat);
3029         case D3D_FEATURE_LEVEL_10_1:
3030             return GetDXGISupport_10_1(dxgiFormat);
3031         case D3D_FEATURE_LEVEL_11_0:
3032             return GetDXGISupport_11_0(dxgiFormat);
3033         case D3D_FEATURE_LEVEL_11_1:
3034             return GetDXGISupport_11_1(dxgiFormat);
3035         default:
3036             return GetDefaultSupport();
3037     }
3038 }
3039 
3040 } // namespace d3d11
3041 
3042 } // namespace rx
3043