tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

dxgi_support_table_autogen.cpp (112144B)


      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 
     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 
     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 
    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 
   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 
   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 
   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 
   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