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/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(F_MIPGEN | F_RT, F_DS, F_2D | F_3D | F_CUBE | F_MS | F_SAMPLE);
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(0, 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(0, 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(0, 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(0, 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(0, 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(0, 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(F_MIPGEN | F_RT, F_DS, 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(F_MIPGEN | F_RT, F_DS, 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_MIPGEN | F_RT | F_SAMPLE, F_DS, 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_MIPGEN | F_RT | F_SAMPLE, F_DS, 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 } // namespace
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