Home | History | Annotate | Download | only in core
      1 /****************************************************************************
      2 * Copyright (C) 2016 Intel Corporation.   All Rights Reserved.
      3 *
      4 * Permission is hereby granted, free of charge, to any person obtaining a
      5 * copy of this software and associated documentation files (the "Software"),
      6 * to deal in the Software without restriction, including without limitation
      7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      8 * and/or sell copies of the Software, and to permit persons to whom the
      9 * Software is furnished to do so, subject to the following conditions:
     10 *
     11 * The above copyright notice and this permission notice (including the next
     12 * paragraph) shall be included in all copies or substantial portions of the
     13 * Software.
     14 *
     15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
     21 * IN THE SOFTWARE.
     22 *
     23 * @file format_traits.h
     24 *
     25 * @brief Format Traits.  auto-generated file
     26 *
     27 * DO NOT EDIT
     28 *
     29 ******************************************************************************/
     30 #pragma once
     31 
     32 #include "format_types.h"
     33 #include "format_utils.h"
     34 
     35 //////////////////////////////////////////////////////////////////////////
     36 /// FormatSwizzle - Component swizzle selects
     37 //////////////////////////////////////////////////////////////////////////
     38 template<uint32_t comp0 = 0, uint32_t comp1 = 0, uint32_t comp2 = 0, uint32_t comp3 = 0>
     39 struct FormatSwizzle
     40 {
     41     // Return swizzle select for component.
     42     INLINE static uint32_t swizzle(uint32_t c)
     43     {
     44         static const uint32_t s[4] = { comp0, comp1, comp2, comp3 };
     45         return s[c];
     46     }
     47 };
     48 
     49 //////////////////////////////////////////////////////////////////////////
     50 /// FormatTraits - Format traits
     51 //////////////////////////////////////////////////////////////////////////
     52 template<SWR_FORMAT format>
     53 struct FormatTraits :
     54     ComponentTraits<SWR_TYPE_UNKNOWN, 0>,
     55     FormatSwizzle<0>,
     56     Defaults<0, 0, 0, 0>
     57 {
     58     static const uint32_t bpp{ 0 };
     59     static const uint32_t numComps{ 0 };
     60     static const bool hasAlpha{ false };
     61     static const uint32_t alphaComp{ 0 };
     62 
     63     static const bool isSRGB{ false };
     64     static const bool isBC{ false };
     65     static const bool isSubsampled{ false };
     66     static const uint32_t bcWidth{ 1 };
     67     static const uint32_t bcHeight{ 1 };
     68 };
     69 
     70 //////////////////////////////////////////////////////////////////////////
     71 /// FormatTraits<R32G32B32A32_FLOAT> - Format traits specialization for R32G32B32A32_FLOAT
     72 //////////////////////////////////////////////////////////////////////////
     73 template<> struct FormatTraits<R32G32B32A32_FLOAT> :
     74     ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
     75     FormatSwizzle<0, 1, 2, 3>,
     76     Defaults<0, 0, 0, 0x3f800000>
     77 {
     78     static const uint32_t bpp{ 128 };
     79     static const uint32_t numComps{ 4 };
     80     static const bool hasAlpha{ true };
     81     static const uint32_t alphaComp{ 3 };
     82     static const bool isSRGB{ false };
     83     static const bool isBC{ false };
     84     static const bool isSubsampled{ false };
     85     static const uint32_t bcWidth{ 1 };
     86     static const uint32_t bcHeight{ 1 };
     87 
     88     typedef Transpose32_32_32_32    TransposeT;
     89     typedef Format4<32, 32, 32, 32> FormatT;
     90 };
     91 
     92 //////////////////////////////////////////////////////////////////////////
     93 /// FormatTraits<R32G32B32A32_SINT> - Format traits specialization for R32G32B32A32_SINT
     94 //////////////////////////////////////////////////////////////////////////
     95 template<> struct FormatTraits<R32G32B32A32_SINT> :
     96     ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>,
     97     FormatSwizzle<0, 1, 2, 3>,
     98     Defaults<0, 0, 0, 0x1>
     99 {
    100     static const uint32_t bpp{ 128 };
    101     static const uint32_t numComps{ 4 };
    102     static const bool hasAlpha{ true };
    103     static const uint32_t alphaComp{ 3 };
    104     static const bool isSRGB{ false };
    105     static const bool isBC{ false };
    106     static const bool isSubsampled{ false };
    107     static const uint32_t bcWidth{ 1 };
    108     static const uint32_t bcHeight{ 1 };
    109 
    110     typedef Transpose32_32_32_32    TransposeT;
    111     typedef Format4<32, 32, 32, 32> FormatT;
    112 };
    113 
    114 //////////////////////////////////////////////////////////////////////////
    115 /// FormatTraits<R32G32B32A32_UINT> - Format traits specialization for R32G32B32A32_UINT
    116 //////////////////////////////////////////////////////////////////////////
    117 template<> struct FormatTraits<R32G32B32A32_UINT> :
    118     ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>,
    119     FormatSwizzle<0, 1, 2, 3>,
    120     Defaults<0, 0, 0, 0x1>
    121 {
    122     static const uint32_t bpp{ 128 };
    123     static const uint32_t numComps{ 4 };
    124     static const bool hasAlpha{ true };
    125     static const uint32_t alphaComp{ 3 };
    126     static const bool isSRGB{ false };
    127     static const bool isBC{ false };
    128     static const bool isSubsampled{ false };
    129     static const uint32_t bcWidth{ 1 };
    130     static const uint32_t bcHeight{ 1 };
    131 
    132     typedef Transpose32_32_32_32    TransposeT;
    133     typedef Format4<32, 32, 32, 32> FormatT;
    134 };
    135 
    136 //////////////////////////////////////////////////////////////////////////
    137 /// FormatTraits<R64G64_FLOAT> - Format traits specialization for R64G64_FLOAT
    138 //////////////////////////////////////////////////////////////////////////
    139 template<> struct FormatTraits<R64G64_FLOAT> :
    140     ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>,
    141     FormatSwizzle<0, 1>,
    142     Defaults<0, 0, 0, 0x3f800000>
    143 {
    144     static const uint32_t bpp{ 128 };
    145     static const uint32_t numComps{ 2 };
    146     static const bool hasAlpha{ false };
    147     static const uint32_t alphaComp{ 0 };
    148     static const bool isSRGB{ false };
    149     static const bool isBC{ false };
    150     static const bool isSubsampled{ false };
    151     static const uint32_t bcWidth{ 1 };
    152     static const uint32_t bcHeight{ 1 };
    153 
    154     typedef Transpose64_64  TransposeT;
    155     typedef Format2<64, 64> FormatT;
    156 };
    157 
    158 //////////////////////////////////////////////////////////////////////////
    159 /// FormatTraits<R32G32B32X32_FLOAT> - Format traits specialization for R32G32B32X32_FLOAT
    160 //////////////////////////////////////////////////////////////////////////
    161 template<> struct FormatTraits<R32G32B32X32_FLOAT> :
    162     ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_UNUSED, 32>,
    163     FormatSwizzle<0, 1, 2, 3>,
    164     Defaults<0, 0, 0, 0x3f800000>
    165 {
    166     static const uint32_t bpp{ 128 };
    167     static const uint32_t numComps{ 3 };
    168     static const bool hasAlpha{ false };
    169     static const uint32_t alphaComp{ 0 };
    170     static const bool isSRGB{ false };
    171     static const bool isBC{ false };
    172     static const bool isSubsampled{ false };
    173     static const uint32_t bcWidth{ 1 };
    174     static const uint32_t bcHeight{ 1 };
    175 
    176     typedef Transpose32_32_32_32    TransposeT;
    177     typedef Format4<32, 32, 32, 32> FormatT;
    178 };
    179 
    180 //////////////////////////////////////////////////////////////////////////
    181 /// FormatTraits<R32G32B32A32_SSCALED> - Format traits specialization for R32G32B32A32_SSCALED
    182 //////////////////////////////////////////////////////////////////////////
    183 template<> struct FormatTraits<R32G32B32A32_SSCALED> :
    184     ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>,
    185     FormatSwizzle<0, 1, 2, 3>,
    186     Defaults<0, 0, 0, 0x3f800000>
    187 {
    188     static const uint32_t bpp{ 128 };
    189     static const uint32_t numComps{ 4 };
    190     static const bool hasAlpha{ true };
    191     static const uint32_t alphaComp{ 3 };
    192     static const bool isSRGB{ false };
    193     static const bool isBC{ false };
    194     static const bool isSubsampled{ false };
    195     static const uint32_t bcWidth{ 1 };
    196     static const uint32_t bcHeight{ 1 };
    197 
    198     typedef Transpose32_32_32_32    TransposeT;
    199     typedef Format4<32, 32, 32, 32> FormatT;
    200 };
    201 
    202 //////////////////////////////////////////////////////////////////////////
    203 /// FormatTraits<R32G32B32A32_USCALED> - Format traits specialization for R32G32B32A32_USCALED
    204 //////////////////////////////////////////////////////////////////////////
    205 template<> struct FormatTraits<R32G32B32A32_USCALED> :
    206     ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>,
    207     FormatSwizzle<0, 1, 2, 3>,
    208     Defaults<0, 0, 0, 0x3f800000>
    209 {
    210     static const uint32_t bpp{ 128 };
    211     static const uint32_t numComps{ 4 };
    212     static const bool hasAlpha{ true };
    213     static const uint32_t alphaComp{ 3 };
    214     static const bool isSRGB{ false };
    215     static const bool isBC{ false };
    216     static const bool isSubsampled{ false };
    217     static const uint32_t bcWidth{ 1 };
    218     static const uint32_t bcHeight{ 1 };
    219 
    220     typedef Transpose32_32_32_32    TransposeT;
    221     typedef Format4<32, 32, 32, 32> FormatT;
    222 };
    223 
    224 //////////////////////////////////////////////////////////////////////////
    225 /// FormatTraits<R32G32B32A32_SFIXED> - Format traits specialization for R32G32B32A32_SFIXED
    226 //////////////////////////////////////////////////////////////////////////
    227 template<> struct FormatTraits<R32G32B32A32_SFIXED> :
    228     ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>,
    229     FormatSwizzle<0, 1, 2, 3>,
    230     Defaults<0, 0, 0, 0x3f800000>
    231 {
    232     static const uint32_t bpp{ 128 };
    233     static const uint32_t numComps{ 4 };
    234     static const bool hasAlpha{ true };
    235     static const uint32_t alphaComp{ 3 };
    236     static const bool isSRGB{ false };
    237     static const bool isBC{ false };
    238     static const bool isSubsampled{ false };
    239     static const uint32_t bcWidth{ 1 };
    240     static const uint32_t bcHeight{ 1 };
    241 
    242     typedef Transpose32_32_32_32    TransposeT;
    243     typedef Format4<32, 32, 32, 32> FormatT;
    244 };
    245 
    246 //////////////////////////////////////////////////////////////////////////
    247 /// FormatTraits<R32G32B32_FLOAT> - Format traits specialization for R32G32B32_FLOAT
    248 //////////////////////////////////////////////////////////////////////////
    249 template<> struct FormatTraits<R32G32B32_FLOAT> :
    250     ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
    251     FormatSwizzle<0, 1, 2>,
    252     Defaults<0, 0, 0, 0x3f800000>
    253 {
    254     static const uint32_t bpp{ 96 };
    255     static const uint32_t numComps{ 3 };
    256     static const bool hasAlpha{ false };
    257     static const uint32_t alphaComp{ 0 };
    258     static const bool isSRGB{ false };
    259     static const bool isBC{ false };
    260     static const bool isSubsampled{ false };
    261     static const uint32_t bcWidth{ 1 };
    262     static const uint32_t bcHeight{ 1 };
    263 
    264     typedef Transpose32_32_32   TransposeT;
    265     typedef Format3<32, 32, 32> FormatT;
    266 };
    267 
    268 //////////////////////////////////////////////////////////////////////////
    269 /// FormatTraits<R32G32B32_SINT> - Format traits specialization for R32G32B32_SINT
    270 //////////////////////////////////////////////////////////////////////////
    271 template<> struct FormatTraits<R32G32B32_SINT> :
    272     ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>,
    273     FormatSwizzle<0, 1, 2>,
    274     Defaults<0, 0, 0, 0x1>
    275 {
    276     static const uint32_t bpp{ 96 };
    277     static const uint32_t numComps{ 3 };
    278     static const bool hasAlpha{ false };
    279     static const uint32_t alphaComp{ 0 };
    280     static const bool isSRGB{ false };
    281     static const bool isBC{ false };
    282     static const bool isSubsampled{ false };
    283     static const uint32_t bcWidth{ 1 };
    284     static const uint32_t bcHeight{ 1 };
    285 
    286     typedef Transpose32_32_32   TransposeT;
    287     typedef Format3<32, 32, 32> FormatT;
    288 };
    289 
    290 //////////////////////////////////////////////////////////////////////////
    291 /// FormatTraits<R32G32B32_UINT> - Format traits specialization for R32G32B32_UINT
    292 //////////////////////////////////////////////////////////////////////////
    293 template<> struct FormatTraits<R32G32B32_UINT> :
    294     ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>,
    295     FormatSwizzle<0, 1, 2>,
    296     Defaults<0, 0, 0, 0x1>
    297 {
    298     static const uint32_t bpp{ 96 };
    299     static const uint32_t numComps{ 3 };
    300     static const bool hasAlpha{ false };
    301     static const uint32_t alphaComp{ 0 };
    302     static const bool isSRGB{ false };
    303     static const bool isBC{ false };
    304     static const bool isSubsampled{ false };
    305     static const uint32_t bcWidth{ 1 };
    306     static const uint32_t bcHeight{ 1 };
    307 
    308     typedef Transpose32_32_32   TransposeT;
    309     typedef Format3<32, 32, 32> FormatT;
    310 };
    311 
    312 //////////////////////////////////////////////////////////////////////////
    313 /// FormatTraits<R32G32B32_SSCALED> - Format traits specialization for R32G32B32_SSCALED
    314 //////////////////////////////////////////////////////////////////////////
    315 template<> struct FormatTraits<R32G32B32_SSCALED> :
    316     ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>,
    317     FormatSwizzle<0, 1, 2>,
    318     Defaults<0, 0, 0, 0x3f800000>
    319 {
    320     static const uint32_t bpp{ 96 };
    321     static const uint32_t numComps{ 3 };
    322     static const bool hasAlpha{ false };
    323     static const uint32_t alphaComp{ 0 };
    324     static const bool isSRGB{ false };
    325     static const bool isBC{ false };
    326     static const bool isSubsampled{ false };
    327     static const uint32_t bcWidth{ 1 };
    328     static const uint32_t bcHeight{ 1 };
    329 
    330     typedef Transpose32_32_32   TransposeT;
    331     typedef Format3<32, 32, 32> FormatT;
    332 };
    333 
    334 //////////////////////////////////////////////////////////////////////////
    335 /// FormatTraits<R32G32B32_USCALED> - Format traits specialization for R32G32B32_USCALED
    336 //////////////////////////////////////////////////////////////////////////
    337 template<> struct FormatTraits<R32G32B32_USCALED> :
    338     ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>,
    339     FormatSwizzle<0, 1, 2>,
    340     Defaults<0, 0, 0, 0x3f800000>
    341 {
    342     static const uint32_t bpp{ 96 };
    343     static const uint32_t numComps{ 3 };
    344     static const bool hasAlpha{ false };
    345     static const uint32_t alphaComp{ 0 };
    346     static const bool isSRGB{ false };
    347     static const bool isBC{ false };
    348     static const bool isSubsampled{ false };
    349     static const uint32_t bcWidth{ 1 };
    350     static const uint32_t bcHeight{ 1 };
    351 
    352     typedef Transpose32_32_32   TransposeT;
    353     typedef Format3<32, 32, 32> FormatT;
    354 };
    355 
    356 //////////////////////////////////////////////////////////////////////////
    357 /// FormatTraits<R32G32B32_SFIXED> - Format traits specialization for R32G32B32_SFIXED
    358 //////////////////////////////////////////////////////////////////////////
    359 template<> struct FormatTraits<R32G32B32_SFIXED> :
    360     ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>,
    361     FormatSwizzle<0, 1, 2>,
    362     Defaults<0, 0, 0, 0x3f800000>
    363 {
    364     static const uint32_t bpp{ 96 };
    365     static const uint32_t numComps{ 3 };
    366     static const bool hasAlpha{ false };
    367     static const uint32_t alphaComp{ 0 };
    368     static const bool isSRGB{ false };
    369     static const bool isBC{ false };
    370     static const bool isSubsampled{ false };
    371     static const uint32_t bcWidth{ 1 };
    372     static const uint32_t bcHeight{ 1 };
    373 
    374     typedef Transpose32_32_32   TransposeT;
    375     typedef Format3<32, 32, 32> FormatT;
    376 };
    377 
    378 //////////////////////////////////////////////////////////////////////////
    379 /// FormatTraits<R16G16B16A16_UNORM> - Format traits specialization for R16G16B16A16_UNORM
    380 //////////////////////////////////////////////////////////////////////////
    381 template<> struct FormatTraits<R16G16B16A16_UNORM> :
    382     ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>,
    383     FormatSwizzle<0, 1, 2, 3>,
    384     Defaults<0, 0, 0, 0x3f800000>
    385 {
    386     static const uint32_t bpp{ 64 };
    387     static const uint32_t numComps{ 4 };
    388     static const bool hasAlpha{ true };
    389     static const uint32_t alphaComp{ 3 };
    390     static const bool isSRGB{ false };
    391     static const bool isBC{ false };
    392     static const bool isSubsampled{ false };
    393     static const uint32_t bcWidth{ 1 };
    394     static const uint32_t bcHeight{ 1 };
    395 
    396     typedef Transpose16_16_16_16    TransposeT;
    397     typedef Format4<16, 16, 16, 16> FormatT;
    398 };
    399 
    400 //////////////////////////////////////////////////////////////////////////
    401 /// FormatTraits<R16G16B16A16_SNORM> - Format traits specialization for R16G16B16A16_SNORM
    402 //////////////////////////////////////////////////////////////////////////
    403 template<> struct FormatTraits<R16G16B16A16_SNORM> :
    404     ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>,
    405     FormatSwizzle<0, 1, 2, 3>,
    406     Defaults<0, 0, 0, 0x3f800000>
    407 {
    408     static const uint32_t bpp{ 64 };
    409     static const uint32_t numComps{ 4 };
    410     static const bool hasAlpha{ true };
    411     static const uint32_t alphaComp{ 3 };
    412     static const bool isSRGB{ false };
    413     static const bool isBC{ false };
    414     static const bool isSubsampled{ false };
    415     static const uint32_t bcWidth{ 1 };
    416     static const uint32_t bcHeight{ 1 };
    417 
    418     typedef Transpose16_16_16_16    TransposeT;
    419     typedef Format4<16, 16, 16, 16> FormatT;
    420 };
    421 
    422 //////////////////////////////////////////////////////////////////////////
    423 /// FormatTraits<R16G16B16A16_SINT> - Format traits specialization for R16G16B16A16_SINT
    424 //////////////////////////////////////////////////////////////////////////
    425 template<> struct FormatTraits<R16G16B16A16_SINT> :
    426     ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>,
    427     FormatSwizzle<0, 1, 2, 3>,
    428     Defaults<0, 0, 0, 0x1>
    429 {
    430     static const uint32_t bpp{ 64 };
    431     static const uint32_t numComps{ 4 };
    432     static const bool hasAlpha{ true };
    433     static const uint32_t alphaComp{ 3 };
    434     static const bool isSRGB{ false };
    435     static const bool isBC{ false };
    436     static const bool isSubsampled{ false };
    437     static const uint32_t bcWidth{ 1 };
    438     static const uint32_t bcHeight{ 1 };
    439 
    440     typedef Transpose16_16_16_16    TransposeT;
    441     typedef Format4<16, 16, 16, 16> FormatT;
    442 };
    443 
    444 //////////////////////////////////////////////////////////////////////////
    445 /// FormatTraits<R16G16B16A16_UINT> - Format traits specialization for R16G16B16A16_UINT
    446 //////////////////////////////////////////////////////////////////////////
    447 template<> struct FormatTraits<R16G16B16A16_UINT> :
    448     ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>,
    449     FormatSwizzle<0, 1, 2, 3>,
    450     Defaults<0, 0, 0, 0x1>
    451 {
    452     static const uint32_t bpp{ 64 };
    453     static const uint32_t numComps{ 4 };
    454     static const bool hasAlpha{ true };
    455     static const uint32_t alphaComp{ 3 };
    456     static const bool isSRGB{ false };
    457     static const bool isBC{ false };
    458     static const bool isSubsampled{ false };
    459     static const uint32_t bcWidth{ 1 };
    460     static const uint32_t bcHeight{ 1 };
    461 
    462     typedef Transpose16_16_16_16    TransposeT;
    463     typedef Format4<16, 16, 16, 16> FormatT;
    464 };
    465 
    466 //////////////////////////////////////////////////////////////////////////
    467 /// FormatTraits<R16G16B16A16_FLOAT> - Format traits specialization for R16G16B16A16_FLOAT
    468 //////////////////////////////////////////////////////////////////////////
    469 template<> struct FormatTraits<R16G16B16A16_FLOAT> :
    470     ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>,
    471     FormatSwizzle<0, 1, 2, 3>,
    472     Defaults<0, 0, 0, 0x3f800000>
    473 {
    474     static const uint32_t bpp{ 64 };
    475     static const uint32_t numComps{ 4 };
    476     static const bool hasAlpha{ true };
    477     static const uint32_t alphaComp{ 3 };
    478     static const bool isSRGB{ false };
    479     static const bool isBC{ false };
    480     static const bool isSubsampled{ false };
    481     static const uint32_t bcWidth{ 1 };
    482     static const uint32_t bcHeight{ 1 };
    483 
    484     typedef Transpose16_16_16_16    TransposeT;
    485     typedef Format4<16, 16, 16, 16> FormatT;
    486 };
    487 
    488 //////////////////////////////////////////////////////////////////////////
    489 /// FormatTraits<R32G32_FLOAT> - Format traits specialization for R32G32_FLOAT
    490 //////////////////////////////////////////////////////////////////////////
    491 template<> struct FormatTraits<R32G32_FLOAT> :
    492     ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
    493     FormatSwizzle<0, 1>,
    494     Defaults<0, 0, 0, 0x3f800000>
    495 {
    496     static const uint32_t bpp{ 64 };
    497     static const uint32_t numComps{ 2 };
    498     static const bool hasAlpha{ false };
    499     static const uint32_t alphaComp{ 0 };
    500     static const bool isSRGB{ false };
    501     static const bool isBC{ false };
    502     static const bool isSubsampled{ false };
    503     static const uint32_t bcWidth{ 1 };
    504     static const uint32_t bcHeight{ 1 };
    505 
    506     typedef Transpose32_32  TransposeT;
    507     typedef Format2<32, 32> FormatT;
    508 };
    509 
    510 //////////////////////////////////////////////////////////////////////////
    511 /// FormatTraits<R32G32_SINT> - Format traits specialization for R32G32_SINT
    512 //////////////////////////////////////////////////////////////////////////
    513 template<> struct FormatTraits<R32G32_SINT> :
    514     ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>,
    515     FormatSwizzle<0, 1>,
    516     Defaults<0, 0, 0, 0x1>
    517 {
    518     static const uint32_t bpp{ 64 };
    519     static const uint32_t numComps{ 2 };
    520     static const bool hasAlpha{ false };
    521     static const uint32_t alphaComp{ 0 };
    522     static const bool isSRGB{ false };
    523     static const bool isBC{ false };
    524     static const bool isSubsampled{ false };
    525     static const uint32_t bcWidth{ 1 };
    526     static const uint32_t bcHeight{ 1 };
    527 
    528     typedef Transpose32_32  TransposeT;
    529     typedef Format2<32, 32> FormatT;
    530 };
    531 
    532 //////////////////////////////////////////////////////////////////////////
    533 /// FormatTraits<R32G32_UINT> - Format traits specialization for R32G32_UINT
    534 //////////////////////////////////////////////////////////////////////////
    535 template<> struct FormatTraits<R32G32_UINT> :
    536     ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>,
    537     FormatSwizzle<0, 1>,
    538     Defaults<0, 0, 0, 0x1>
    539 {
    540     static const uint32_t bpp{ 64 };
    541     static const uint32_t numComps{ 2 };
    542     static const bool hasAlpha{ false };
    543     static const uint32_t alphaComp{ 0 };
    544     static const bool isSRGB{ false };
    545     static const bool isBC{ false };
    546     static const bool isSubsampled{ false };
    547     static const uint32_t bcWidth{ 1 };
    548     static const uint32_t bcHeight{ 1 };
    549 
    550     typedef Transpose32_32  TransposeT;
    551     typedef Format2<32, 32> FormatT;
    552 };
    553 
    554 //////////////////////////////////////////////////////////////////////////
    555 /// FormatTraits<R32_FLOAT_X8X24_TYPELESS> - Format traits specialization for R32_FLOAT_X8X24_TYPELESS
    556 //////////////////////////////////////////////////////////////////////////
    557 template<> struct FormatTraits<R32_FLOAT_X8X24_TYPELESS> :
    558     ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_UNUSED, 32>,
    559     FormatSwizzle<0, 1>,
    560     Defaults<0, 0, 0, 0x3f800000>
    561 {
    562     static const uint32_t bpp{ 64 };
    563     static const uint32_t numComps{ 1 };
    564     static const bool hasAlpha{ false };
    565     static const uint32_t alphaComp{ 3 };
    566     static const bool isSRGB{ false };
    567     static const bool isBC{ false };
    568     static const bool isSubsampled{ false };
    569     static const uint32_t bcWidth{ 1 };
    570     static const uint32_t bcHeight{ 1 };
    571 
    572     typedef Transpose32_32  TransposeT;
    573     typedef Format2<32, 32> FormatT;
    574 };
    575 
    576 //////////////////////////////////////////////////////////////////////////
    577 /// FormatTraits<X32_TYPELESS_G8X24_UINT> - Format traits specialization for X32_TYPELESS_G8X24_UINT
    578 //////////////////////////////////////////////////////////////////////////
    579 template<> struct FormatTraits<X32_TYPELESS_G8X24_UINT> :
    580     ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UNUSED, 32>,
    581     FormatSwizzle<0, 1>,
    582     Defaults<0, 0, 0, 0x1>
    583 {
    584     static const uint32_t bpp{ 64 };
    585     static const uint32_t numComps{ 1 };
    586     static const bool hasAlpha{ false };
    587     static const uint32_t alphaComp{ 3 };
    588     static const bool isSRGB{ false };
    589     static const bool isBC{ false };
    590     static const bool isSubsampled{ false };
    591     static const uint32_t bcWidth{ 1 };
    592     static const uint32_t bcHeight{ 1 };
    593 
    594     typedef Transpose32_32  TransposeT;
    595     typedef Format2<32, 32> FormatT;
    596 };
    597 
    598 //////////////////////////////////////////////////////////////////////////
    599 /// FormatTraits<L32A32_FLOAT> - Format traits specialization for L32A32_FLOAT
    600 //////////////////////////////////////////////////////////////////////////
    601 template<> struct FormatTraits<L32A32_FLOAT> :
    602     ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
    603     FormatSwizzle<0, 3>,
    604     Defaults<0, 0, 0, 0x3f800000>
    605 {
    606     static const uint32_t bpp{ 64 };
    607     static const uint32_t numComps{ 2 };
    608     static const bool hasAlpha{ true };
    609     static const uint32_t alphaComp{ 1 };
    610     static const bool isSRGB{ false };
    611     static const bool isBC{ false };
    612     static const bool isSubsampled{ false };
    613     static const uint32_t bcWidth{ 1 };
    614     static const uint32_t bcHeight{ 1 };
    615 
    616     typedef Transpose32_32  TransposeT;
    617     typedef Format2<32, 32> FormatT;
    618 };
    619 
    620 //////////////////////////////////////////////////////////////////////////
    621 /// FormatTraits<R64_FLOAT> - Format traits specialization for R64_FLOAT
    622 //////////////////////////////////////////////////////////////////////////
    623 template<> struct FormatTraits<R64_FLOAT> :
    624     ComponentTraits<SWR_TYPE_FLOAT, 64>,
    625     FormatSwizzle<0>,
    626     Defaults<0, 0, 0, 0x3f800000>
    627 {
    628     static const uint32_t bpp{ 64 };
    629     static const uint32_t numComps{ 1 };
    630     static const bool hasAlpha{ false };
    631     static const uint32_t alphaComp{ 0 };
    632     static const bool isSRGB{ false };
    633     static const bool isBC{ false };
    634     static const bool isSubsampled{ false };
    635     static const uint32_t bcWidth{ 1 };
    636     static const uint32_t bcHeight{ 1 };
    637 
    638     typedef TransposeSingleComponent<64> TransposeT;
    639     typedef Format1<64>                  FormatT;
    640 };
    641 
    642 //////////////////////////////////////////////////////////////////////////
    643 /// FormatTraits<R16G16B16X16_UNORM> - Format traits specialization for R16G16B16X16_UNORM
    644 //////////////////////////////////////////////////////////////////////////
    645 template<> struct FormatTraits<R16G16B16X16_UNORM> :
    646     ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNUSED, 16>,
    647     FormatSwizzle<0, 1, 2, 3>,
    648     Defaults<0, 0, 0, 0x3f800000>
    649 {
    650     static const uint32_t bpp{ 64 };
    651     static const uint32_t numComps{ 3 };
    652     static const bool hasAlpha{ false };
    653     static const uint32_t alphaComp{ 0 };
    654     static const bool isSRGB{ false };
    655     static const bool isBC{ false };
    656     static const bool isSubsampled{ false };
    657     static const uint32_t bcWidth{ 1 };
    658     static const uint32_t bcHeight{ 1 };
    659 
    660     typedef Transpose16_16_16_16    TransposeT;
    661     typedef Format4<16, 16, 16, 16> FormatT;
    662 };
    663 
    664 //////////////////////////////////////////////////////////////////////////
    665 /// FormatTraits<R16G16B16X16_FLOAT> - Format traits specialization for R16G16B16X16_FLOAT
    666 //////////////////////////////////////////////////////////////////////////
    667 template<> struct FormatTraits<R16G16B16X16_FLOAT> :
    668     ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_UNUSED, 16>,
    669     FormatSwizzle<0, 1, 2, 3>,
    670     Defaults<0, 0, 0, 0x3f800000>
    671 {
    672     static const uint32_t bpp{ 64 };
    673     static const uint32_t numComps{ 3 };
    674     static const bool hasAlpha{ false };
    675     static const uint32_t alphaComp{ 0 };
    676     static const bool isSRGB{ false };
    677     static const bool isBC{ false };
    678     static const bool isSubsampled{ false };
    679     static const uint32_t bcWidth{ 1 };
    680     static const uint32_t bcHeight{ 1 };
    681 
    682     typedef Transpose16_16_16_16    TransposeT;
    683     typedef Format4<16, 16, 16, 16> FormatT;
    684 };
    685 
    686 //////////////////////////////////////////////////////////////////////////
    687 /// FormatTraits<L32X32_FLOAT> - Format traits specialization for L32X32_FLOAT
    688 //////////////////////////////////////////////////////////////////////////
    689 template<> struct FormatTraits<L32X32_FLOAT> :
    690     ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
    691     FormatSwizzle<0, 3>,
    692     Defaults<0, 0, 0, 0x3f800000>
    693 {
    694     static const uint32_t bpp{ 64 };
    695     static const uint32_t numComps{ 2 };
    696     static const bool hasAlpha{ false };
    697     static const uint32_t alphaComp{ 0 };
    698     static const bool isSRGB{ false };
    699     static const bool isBC{ false };
    700     static const bool isSubsampled{ false };
    701     static const uint32_t bcWidth{ 1 };
    702     static const uint32_t bcHeight{ 1 };
    703 
    704     typedef Transpose32_32  TransposeT;
    705     typedef Format2<32, 32> FormatT;
    706 };
    707 
    708 //////////////////////////////////////////////////////////////////////////
    709 /// FormatTraits<I32X32_FLOAT> - Format traits specialization for I32X32_FLOAT
    710 //////////////////////////////////////////////////////////////////////////
    711 template<> struct FormatTraits<I32X32_FLOAT> :
    712     ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
    713     FormatSwizzle<0, 3>,
    714     Defaults<0, 0, 0, 0x3f800000>
    715 {
    716     static const uint32_t bpp{ 64 };
    717     static const uint32_t numComps{ 2 };
    718     static const bool hasAlpha{ false };
    719     static const uint32_t alphaComp{ 0 };
    720     static const bool isSRGB{ false };
    721     static const bool isBC{ false };
    722     static const bool isSubsampled{ false };
    723     static const uint32_t bcWidth{ 1 };
    724     static const uint32_t bcHeight{ 1 };
    725 
    726     typedef Transpose32_32  TransposeT;
    727     typedef Format2<32, 32> FormatT;
    728 };
    729 
    730 //////////////////////////////////////////////////////////////////////////
    731 /// FormatTraits<R16G16B16A16_SSCALED> - Format traits specialization for R16G16B16A16_SSCALED
    732 //////////////////////////////////////////////////////////////////////////
    733 template<> struct FormatTraits<R16G16B16A16_SSCALED> :
    734     ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>,
    735     FormatSwizzle<0, 1, 2, 3>,
    736     Defaults<0, 0, 0, 0x3f800000>
    737 {
    738     static const uint32_t bpp{ 64 };
    739     static const uint32_t numComps{ 4 };
    740     static const bool hasAlpha{ true };
    741     static const uint32_t alphaComp{ 3 };
    742     static const bool isSRGB{ false };
    743     static const bool isBC{ false };
    744     static const bool isSubsampled{ false };
    745     static const uint32_t bcWidth{ 1 };
    746     static const uint32_t bcHeight{ 1 };
    747 
    748     typedef Transpose16_16_16_16    TransposeT;
    749     typedef Format4<16, 16, 16, 16> FormatT;
    750 };
    751 
    752 //////////////////////////////////////////////////////////////////////////
    753 /// FormatTraits<R16G16B16A16_USCALED> - Format traits specialization for R16G16B16A16_USCALED
    754 //////////////////////////////////////////////////////////////////////////
    755 template<> struct FormatTraits<R16G16B16A16_USCALED> :
    756     ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>,
    757     FormatSwizzle<0, 1, 2, 3>,
    758     Defaults<0, 0, 0, 0x3f800000>
    759 {
    760     static const uint32_t bpp{ 64 };
    761     static const uint32_t numComps{ 4 };
    762     static const bool hasAlpha{ true };
    763     static const uint32_t alphaComp{ 3 };
    764     static const bool isSRGB{ false };
    765     static const bool isBC{ false };
    766     static const bool isSubsampled{ false };
    767     static const uint32_t bcWidth{ 1 };
    768     static const uint32_t bcHeight{ 1 };
    769 
    770     typedef Transpose16_16_16_16    TransposeT;
    771     typedef Format4<16, 16, 16, 16> FormatT;
    772 };
    773 
    774 //////////////////////////////////////////////////////////////////////////
    775 /// FormatTraits<R32G32_SSCALED> - Format traits specialization for R32G32_SSCALED
    776 //////////////////////////////////////////////////////////////////////////
    777 template<> struct FormatTraits<R32G32_SSCALED> :
    778     ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>,
    779     FormatSwizzle<0, 1>,
    780     Defaults<0, 0, 0, 0x3f800000>
    781 {
    782     static const uint32_t bpp{ 64 };
    783     static const uint32_t numComps{ 2 };
    784     static const bool hasAlpha{ false };
    785     static const uint32_t alphaComp{ 0 };
    786     static const bool isSRGB{ false };
    787     static const bool isBC{ false };
    788     static const bool isSubsampled{ false };
    789     static const uint32_t bcWidth{ 1 };
    790     static const uint32_t bcHeight{ 1 };
    791 
    792     typedef Transpose32_32  TransposeT;
    793     typedef Format2<32, 32> FormatT;
    794 };
    795 
    796 //////////////////////////////////////////////////////////////////////////
    797 /// FormatTraits<R32G32_USCALED> - Format traits specialization for R32G32_USCALED
    798 //////////////////////////////////////////////////////////////////////////
    799 template<> struct FormatTraits<R32G32_USCALED> :
    800     ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>,
    801     FormatSwizzle<0, 1>,
    802     Defaults<0, 0, 0, 0x3f800000>
    803 {
    804     static const uint32_t bpp{ 64 };
    805     static const uint32_t numComps{ 2 };
    806     static const bool hasAlpha{ false };
    807     static const uint32_t alphaComp{ 0 };
    808     static const bool isSRGB{ false };
    809     static const bool isBC{ false };
    810     static const bool isSubsampled{ false };
    811     static const uint32_t bcWidth{ 1 };
    812     static const uint32_t bcHeight{ 1 };
    813 
    814     typedef Transpose32_32  TransposeT;
    815     typedef Format2<32, 32> FormatT;
    816 };
    817 
    818 //////////////////////////////////////////////////////////////////////////
    819 /// FormatTraits<R32G32_SFIXED> - Format traits specialization for R32G32_SFIXED
    820 //////////////////////////////////////////////////////////////////////////
    821 template<> struct FormatTraits<R32G32_SFIXED> :
    822     ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>,
    823     FormatSwizzle<0, 1>,
    824     Defaults<0, 0, 0, 0x3f800000>
    825 {
    826     static const uint32_t bpp{ 64 };
    827     static const uint32_t numComps{ 2 };
    828     static const bool hasAlpha{ false };
    829     static const uint32_t alphaComp{ 0 };
    830     static const bool isSRGB{ false };
    831     static const bool isBC{ false };
    832     static const bool isSubsampled{ false };
    833     static const uint32_t bcWidth{ 1 };
    834     static const uint32_t bcHeight{ 1 };
    835 
    836     typedef Transpose32_32  TransposeT;
    837     typedef Format2<32, 32> FormatT;
    838 };
    839 
    840 //////////////////////////////////////////////////////////////////////////
    841 /// FormatTraits<B8G8R8A8_UNORM> - Format traits specialization for B8G8R8A8_UNORM
    842 //////////////////////////////////////////////////////////////////////////
    843 template<> struct FormatTraits<B8G8R8A8_UNORM> :
    844     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
    845     FormatSwizzle<2, 1, 0, 3>,
    846     Defaults<0, 0, 0, 0x3f800000>
    847 {
    848     static const uint32_t bpp{ 32 };
    849     static const uint32_t numComps{ 4 };
    850     static const bool hasAlpha{ true };
    851     static const uint32_t alphaComp{ 3 };
    852     static const bool isSRGB{ false };
    853     static const bool isBC{ false };
    854     static const bool isSubsampled{ false };
    855     static const uint32_t bcWidth{ 1 };
    856     static const uint32_t bcHeight{ 1 };
    857 
    858     typedef Transpose8_8_8_8    TransposeT;
    859     typedef Format4<8, 8, 8, 8> FormatT;
    860 };
    861 
    862 //////////////////////////////////////////////////////////////////////////
    863 /// FormatTraits<B8G8R8A8_UNORM_SRGB> - Format traits specialization for B8G8R8A8_UNORM_SRGB
    864 //////////////////////////////////////////////////////////////////////////
    865 template<> struct FormatTraits<B8G8R8A8_UNORM_SRGB> :
    866     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
    867     FormatSwizzle<2, 1, 0, 3>,
    868     Defaults<0, 0, 0, 0x3f800000>
    869 {
    870     static const uint32_t bpp{ 32 };
    871     static const uint32_t numComps{ 4 };
    872     static const bool hasAlpha{ true };
    873     static const uint32_t alphaComp{ 3 };
    874     static const bool isSRGB{ true };
    875     static const bool isBC{ false };
    876     static const bool isSubsampled{ false };
    877     static const uint32_t bcWidth{ 1 };
    878     static const uint32_t bcHeight{ 1 };
    879 
    880     typedef Transpose8_8_8_8    TransposeT;
    881     typedef Format4<8, 8, 8, 8> FormatT;
    882 };
    883 
    884 //////////////////////////////////////////////////////////////////////////
    885 /// FormatTraits<R10G10B10A2_UNORM> - Format traits specialization for R10G10B10A2_UNORM
    886 //////////////////////////////////////////////////////////////////////////
    887 template<> struct FormatTraits<R10G10B10A2_UNORM> :
    888     ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>,
    889     FormatSwizzle<0, 1, 2, 3>,
    890     Defaults<0, 0, 0, 0x3f800000>
    891 {
    892     static const uint32_t bpp{ 32 };
    893     static const uint32_t numComps{ 4 };
    894     static const bool hasAlpha{ true };
    895     static const uint32_t alphaComp{ 3 };
    896     static const bool isSRGB{ false };
    897     static const bool isBC{ false };
    898     static const bool isSubsampled{ false };
    899     static const uint32_t bcWidth{ 1 };
    900     static const uint32_t bcHeight{ 1 };
    901 
    902     typedef Transpose10_10_10_2    TransposeT;
    903     typedef Format4<10, 10, 10, 2> FormatT;
    904 };
    905 
    906 //////////////////////////////////////////////////////////////////////////
    907 /// FormatTraits<R10G10B10A2_UNORM_SRGB> - Format traits specialization for R10G10B10A2_UNORM_SRGB
    908 //////////////////////////////////////////////////////////////////////////
    909 template<> struct FormatTraits<R10G10B10A2_UNORM_SRGB> :
    910     ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>,
    911     FormatSwizzle<0, 1, 2, 3>,
    912     Defaults<0, 0, 0, 0x3f800000>
    913 {
    914     static const uint32_t bpp{ 32 };
    915     static const uint32_t numComps{ 4 };
    916     static const bool hasAlpha{ true };
    917     static const uint32_t alphaComp{ 3 };
    918     static const bool isSRGB{ true };
    919     static const bool isBC{ false };
    920     static const bool isSubsampled{ false };
    921     static const uint32_t bcWidth{ 1 };
    922     static const uint32_t bcHeight{ 1 };
    923 
    924     typedef Transpose10_10_10_2    TransposeT;
    925     typedef Format4<10, 10, 10, 2> FormatT;
    926 };
    927 
    928 //////////////////////////////////////////////////////////////////////////
    929 /// FormatTraits<R10G10B10A2_UINT> - Format traits specialization for R10G10B10A2_UINT
    930 //////////////////////////////////////////////////////////////////////////
    931 template<> struct FormatTraits<R10G10B10A2_UINT> :
    932     ComponentTraits<SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 2>,
    933     FormatSwizzle<0, 1, 2, 3>,
    934     Defaults<0, 0, 0, 0x1>
    935 {
    936     static const uint32_t bpp{ 32 };
    937     static const uint32_t numComps{ 4 };
    938     static const bool hasAlpha{ true };
    939     static const uint32_t alphaComp{ 3 };
    940     static const bool isSRGB{ false };
    941     static const bool isBC{ false };
    942     static const bool isSubsampled{ false };
    943     static const uint32_t bcWidth{ 1 };
    944     static const uint32_t bcHeight{ 1 };
    945 
    946     typedef Transpose10_10_10_2    TransposeT;
    947     typedef Format4<10, 10, 10, 2> FormatT;
    948 };
    949 
    950 //////////////////////////////////////////////////////////////////////////
    951 /// FormatTraits<R8G8B8A8_UNORM> - Format traits specialization for R8G8B8A8_UNORM
    952 //////////////////////////////////////////////////////////////////////////
    953 template<> struct FormatTraits<R8G8B8A8_UNORM> :
    954     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
    955     FormatSwizzle<0, 1, 2, 3>,
    956     Defaults<0, 0, 0, 0x3f800000>
    957 {
    958     static const uint32_t bpp{ 32 };
    959     static const uint32_t numComps{ 4 };
    960     static const bool hasAlpha{ true };
    961     static const uint32_t alphaComp{ 3 };
    962     static const bool isSRGB{ false };
    963     static const bool isBC{ false };
    964     static const bool isSubsampled{ false };
    965     static const uint32_t bcWidth{ 1 };
    966     static const uint32_t bcHeight{ 1 };
    967 
    968     typedef Transpose8_8_8_8    TransposeT;
    969     typedef Format4<8, 8, 8, 8> FormatT;
    970 };
    971 
    972 //////////////////////////////////////////////////////////////////////////
    973 /// FormatTraits<R8G8B8A8_UNORM_SRGB> - Format traits specialization for R8G8B8A8_UNORM_SRGB
    974 //////////////////////////////////////////////////////////////////////////
    975 template<> struct FormatTraits<R8G8B8A8_UNORM_SRGB> :
    976     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
    977     FormatSwizzle<0, 1, 2, 3>,
    978     Defaults<0, 0, 0, 0x3f800000>
    979 {
    980     static const uint32_t bpp{ 32 };
    981     static const uint32_t numComps{ 4 };
    982     static const bool hasAlpha{ true };
    983     static const uint32_t alphaComp{ 3 };
    984     static const bool isSRGB{ true };
    985     static const bool isBC{ false };
    986     static const bool isSubsampled{ false };
    987     static const uint32_t bcWidth{ 1 };
    988     static const uint32_t bcHeight{ 1 };
    989 
    990     typedef Transpose8_8_8_8    TransposeT;
    991     typedef Format4<8, 8, 8, 8> FormatT;
    992 };
    993 
    994 //////////////////////////////////////////////////////////////////////////
    995 /// FormatTraits<R8G8B8A8_SNORM> - Format traits specialization for R8G8B8A8_SNORM
    996 //////////////////////////////////////////////////////////////////////////
    997 template<> struct FormatTraits<R8G8B8A8_SNORM> :
    998     ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>,
    999     FormatSwizzle<0, 1, 2, 3>,
   1000     Defaults<0, 0, 0, 0x3f800000>
   1001 {
   1002     static const uint32_t bpp{ 32 };
   1003     static const uint32_t numComps{ 4 };
   1004     static const bool hasAlpha{ true };
   1005     static const uint32_t alphaComp{ 3 };
   1006     static const bool isSRGB{ false };
   1007     static const bool isBC{ false };
   1008     static const bool isSubsampled{ false };
   1009     static const uint32_t bcWidth{ 1 };
   1010     static const uint32_t bcHeight{ 1 };
   1011 
   1012     typedef Transpose8_8_8_8    TransposeT;
   1013     typedef Format4<8, 8, 8, 8> FormatT;
   1014 };
   1015 
   1016 //////////////////////////////////////////////////////////////////////////
   1017 /// FormatTraits<R8G8B8A8_SINT> - Format traits specialization for R8G8B8A8_SINT
   1018 //////////////////////////////////////////////////////////////////////////
   1019 template<> struct FormatTraits<R8G8B8A8_SINT> :
   1020     ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>,
   1021     FormatSwizzle<0, 1, 2, 3>,
   1022     Defaults<0, 0, 0, 0x1>
   1023 {
   1024     static const uint32_t bpp{ 32 };
   1025     static const uint32_t numComps{ 4 };
   1026     static const bool hasAlpha{ true };
   1027     static const uint32_t alphaComp{ 3 };
   1028     static const bool isSRGB{ false };
   1029     static const bool isBC{ false };
   1030     static const bool isSubsampled{ false };
   1031     static const uint32_t bcWidth{ 1 };
   1032     static const uint32_t bcHeight{ 1 };
   1033 
   1034     typedef Transpose8_8_8_8    TransposeT;
   1035     typedef Format4<8, 8, 8, 8> FormatT;
   1036 };
   1037 
   1038 //////////////////////////////////////////////////////////////////////////
   1039 /// FormatTraits<R8G8B8A8_UINT> - Format traits specialization for R8G8B8A8_UINT
   1040 //////////////////////////////////////////////////////////////////////////
   1041 template<> struct FormatTraits<R8G8B8A8_UINT> :
   1042     ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
   1043     FormatSwizzle<0, 1, 2, 3>,
   1044     Defaults<0, 0, 0, 0x1>
   1045 {
   1046     static const uint32_t bpp{ 32 };
   1047     static const uint32_t numComps{ 4 };
   1048     static const bool hasAlpha{ true };
   1049     static const uint32_t alphaComp{ 3 };
   1050     static const bool isSRGB{ false };
   1051     static const bool isBC{ false };
   1052     static const bool isSubsampled{ false };
   1053     static const uint32_t bcWidth{ 1 };
   1054     static const uint32_t bcHeight{ 1 };
   1055 
   1056     typedef Transpose8_8_8_8    TransposeT;
   1057     typedef Format4<8, 8, 8, 8> FormatT;
   1058 };
   1059 
   1060 //////////////////////////////////////////////////////////////////////////
   1061 /// FormatTraits<R16G16_UNORM> - Format traits specialization for R16G16_UNORM
   1062 //////////////////////////////////////////////////////////////////////////
   1063 template<> struct FormatTraits<R16G16_UNORM> :
   1064     ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>,
   1065     FormatSwizzle<0, 1>,
   1066     Defaults<0, 0, 0, 0x3f800000>
   1067 {
   1068     static const uint32_t bpp{ 32 };
   1069     static const uint32_t numComps{ 2 };
   1070     static const bool hasAlpha{ false };
   1071     static const uint32_t alphaComp{ 0 };
   1072     static const bool isSRGB{ false };
   1073     static const bool isBC{ false };
   1074     static const bool isSubsampled{ false };
   1075     static const uint32_t bcWidth{ 1 };
   1076     static const uint32_t bcHeight{ 1 };
   1077 
   1078     typedef Transpose16_16  TransposeT;
   1079     typedef Format2<16, 16> FormatT;
   1080 };
   1081 
   1082 //////////////////////////////////////////////////////////////////////////
   1083 /// FormatTraits<R16G16_SNORM> - Format traits specialization for R16G16_SNORM
   1084 //////////////////////////////////////////////////////////////////////////
   1085 template<> struct FormatTraits<R16G16_SNORM> :
   1086     ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>,
   1087     FormatSwizzle<0, 1>,
   1088     Defaults<0, 0, 0, 0x3f800000>
   1089 {
   1090     static const uint32_t bpp{ 32 };
   1091     static const uint32_t numComps{ 2 };
   1092     static const bool hasAlpha{ false };
   1093     static const uint32_t alphaComp{ 0 };
   1094     static const bool isSRGB{ false };
   1095     static const bool isBC{ false };
   1096     static const bool isSubsampled{ false };
   1097     static const uint32_t bcWidth{ 1 };
   1098     static const uint32_t bcHeight{ 1 };
   1099 
   1100     typedef Transpose16_16  TransposeT;
   1101     typedef Format2<16, 16> FormatT;
   1102 };
   1103 
   1104 //////////////////////////////////////////////////////////////////////////
   1105 /// FormatTraits<R16G16_SINT> - Format traits specialization for R16G16_SINT
   1106 //////////////////////////////////////////////////////////////////////////
   1107 template<> struct FormatTraits<R16G16_SINT> :
   1108     ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>,
   1109     FormatSwizzle<0, 1>,
   1110     Defaults<0, 0, 0, 0x1>
   1111 {
   1112     static const uint32_t bpp{ 32 };
   1113     static const uint32_t numComps{ 2 };
   1114     static const bool hasAlpha{ false };
   1115     static const uint32_t alphaComp{ 0 };
   1116     static const bool isSRGB{ false };
   1117     static const bool isBC{ false };
   1118     static const bool isSubsampled{ false };
   1119     static const uint32_t bcWidth{ 1 };
   1120     static const uint32_t bcHeight{ 1 };
   1121 
   1122     typedef Transpose16_16  TransposeT;
   1123     typedef Format2<16, 16> FormatT;
   1124 };
   1125 
   1126 //////////////////////////////////////////////////////////////////////////
   1127 /// FormatTraits<R16G16_UINT> - Format traits specialization for R16G16_UINT
   1128 //////////////////////////////////////////////////////////////////////////
   1129 template<> struct FormatTraits<R16G16_UINT> :
   1130     ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>,
   1131     FormatSwizzle<0, 1>,
   1132     Defaults<0, 0, 0, 0x1>
   1133 {
   1134     static const uint32_t bpp{ 32 };
   1135     static const uint32_t numComps{ 2 };
   1136     static const bool hasAlpha{ false };
   1137     static const uint32_t alphaComp{ 0 };
   1138     static const bool isSRGB{ false };
   1139     static const bool isBC{ false };
   1140     static const bool isSubsampled{ false };
   1141     static const uint32_t bcWidth{ 1 };
   1142     static const uint32_t bcHeight{ 1 };
   1143 
   1144     typedef Transpose16_16  TransposeT;
   1145     typedef Format2<16, 16> FormatT;
   1146 };
   1147 
   1148 //////////////////////////////////////////////////////////////////////////
   1149 /// FormatTraits<R16G16_FLOAT> - Format traits specialization for R16G16_FLOAT
   1150 //////////////////////////////////////////////////////////////////////////
   1151 template<> struct FormatTraits<R16G16_FLOAT> :
   1152     ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>,
   1153     FormatSwizzle<0, 1>,
   1154     Defaults<0, 0, 0, 0x3f800000>
   1155 {
   1156     static const uint32_t bpp{ 32 };
   1157     static const uint32_t numComps{ 2 };
   1158     static const bool hasAlpha{ false };
   1159     static const uint32_t alphaComp{ 0 };
   1160     static const bool isSRGB{ false };
   1161     static const bool isBC{ false };
   1162     static const bool isSubsampled{ false };
   1163     static const uint32_t bcWidth{ 1 };
   1164     static const uint32_t bcHeight{ 1 };
   1165 
   1166     typedef Transpose16_16  TransposeT;
   1167     typedef Format2<16, 16> FormatT;
   1168 };
   1169 
   1170 //////////////////////////////////////////////////////////////////////////
   1171 /// FormatTraits<B10G10R10A2_UNORM> - Format traits specialization for B10G10R10A2_UNORM
   1172 //////////////////////////////////////////////////////////////////////////
   1173 template<> struct FormatTraits<B10G10R10A2_UNORM> :
   1174     ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>,
   1175     FormatSwizzle<2, 1, 0, 3>,
   1176     Defaults<0, 0, 0, 0x3f800000>
   1177 {
   1178     static const uint32_t bpp{ 32 };
   1179     static const uint32_t numComps{ 4 };
   1180     static const bool hasAlpha{ true };
   1181     static const uint32_t alphaComp{ 3 };
   1182     static const bool isSRGB{ false };
   1183     static const bool isBC{ false };
   1184     static const bool isSubsampled{ false };
   1185     static const uint32_t bcWidth{ 1 };
   1186     static const uint32_t bcHeight{ 1 };
   1187 
   1188     typedef Transpose10_10_10_2    TransposeT;
   1189     typedef Format4<10, 10, 10, 2> FormatT;
   1190 };
   1191 
   1192 //////////////////////////////////////////////////////////////////////////
   1193 /// FormatTraits<B10G10R10A2_UNORM_SRGB> - Format traits specialization for B10G10R10A2_UNORM_SRGB
   1194 //////////////////////////////////////////////////////////////////////////
   1195 template<> struct FormatTraits<B10G10R10A2_UNORM_SRGB> :
   1196     ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>,
   1197     FormatSwizzle<2, 1, 0, 3>,
   1198     Defaults<0, 0, 0, 0x3f800000>
   1199 {
   1200     static const uint32_t bpp{ 32 };
   1201     static const uint32_t numComps{ 4 };
   1202     static const bool hasAlpha{ true };
   1203     static const uint32_t alphaComp{ 3 };
   1204     static const bool isSRGB{ true };
   1205     static const bool isBC{ false };
   1206     static const bool isSubsampled{ false };
   1207     static const uint32_t bcWidth{ 1 };
   1208     static const uint32_t bcHeight{ 1 };
   1209 
   1210     typedef Transpose10_10_10_2    TransposeT;
   1211     typedef Format4<10, 10, 10, 2> FormatT;
   1212 };
   1213 
   1214 //////////////////////////////////////////////////////////////////////////
   1215 /// FormatTraits<R11G11B10_FLOAT> - Format traits specialization for R11G11B10_FLOAT
   1216 //////////////////////////////////////////////////////////////////////////
   1217 template<> struct FormatTraits<R11G11B10_FLOAT> :
   1218     ComponentTraits<SWR_TYPE_FLOAT, 11, SWR_TYPE_FLOAT, 11, SWR_TYPE_FLOAT, 10>,
   1219     FormatSwizzle<0, 1, 2>,
   1220     Defaults<0, 0, 0, 0x3f800000>
   1221 {
   1222     static const uint32_t bpp{ 32 };
   1223     static const uint32_t numComps{ 3 };
   1224     static const bool hasAlpha{ false };
   1225     static const uint32_t alphaComp{ 0 };
   1226     static const bool isSRGB{ false };
   1227     static const bool isBC{ false };
   1228     static const bool isSubsampled{ false };
   1229     static const uint32_t bcWidth{ 1 };
   1230     static const uint32_t bcHeight{ 1 };
   1231 
   1232     typedef Transpose11_11_10   TransposeT;
   1233     typedef Format3<11, 11, 10> FormatT;
   1234 };
   1235 
   1236 //////////////////////////////////////////////////////////////////////////
   1237 /// FormatTraits<R10G10B10_FLOAT_A2_UNORM> - Format traits specialization for R10G10B10_FLOAT_A2_UNORM
   1238 //////////////////////////////////////////////////////////////////////////
   1239 template<> struct FormatTraits<R10G10B10_FLOAT_A2_UNORM> :
   1240     ComponentTraits<SWR_TYPE_FLOAT, 10, SWR_TYPE_FLOAT, 10, SWR_TYPE_FLOAT, 10, SWR_TYPE_UNORM, 2>,
   1241     FormatSwizzle<0, 1, 2, 3>,
   1242     Defaults<0, 0, 0, 0x3f800000>
   1243 {
   1244     static const uint32_t bpp{ 32 };
   1245     static const uint32_t numComps{ 4 };
   1246     static const bool hasAlpha{ true };
   1247     static const uint32_t alphaComp{ 3 };
   1248     static const bool isSRGB{ false };
   1249     static const bool isBC{ false };
   1250     static const bool isSubsampled{ false };
   1251     static const uint32_t bcWidth{ 1 };
   1252     static const uint32_t bcHeight{ 1 };
   1253 
   1254     typedef Transpose10_10_10_2    TransposeT;
   1255     typedef Format4<10, 10, 10, 2> FormatT;
   1256 };
   1257 
   1258 //////////////////////////////////////////////////////////////////////////
   1259 /// FormatTraits<R32_SINT> - Format traits specialization for R32_SINT
   1260 //////////////////////////////////////////////////////////////////////////
   1261 template<> struct FormatTraits<R32_SINT> :
   1262     ComponentTraits<SWR_TYPE_SINT, 32>,
   1263     FormatSwizzle<0>,
   1264     Defaults<0, 0, 0, 0x1>
   1265 {
   1266     static const uint32_t bpp{ 32 };
   1267     static const uint32_t numComps{ 1 };
   1268     static const bool hasAlpha{ false };
   1269     static const uint32_t alphaComp{ 0 };
   1270     static const bool isSRGB{ false };
   1271     static const bool isBC{ false };
   1272     static const bool isSubsampled{ false };
   1273     static const uint32_t bcWidth{ 1 };
   1274     static const uint32_t bcHeight{ 1 };
   1275 
   1276     typedef TransposeSingleComponent<32> TransposeT;
   1277     typedef Format1<32>                  FormatT;
   1278 };
   1279 
   1280 //////////////////////////////////////////////////////////////////////////
   1281 /// FormatTraits<R32_UINT> - Format traits specialization for R32_UINT
   1282 //////////////////////////////////////////////////////////////////////////
   1283 template<> struct FormatTraits<R32_UINT> :
   1284     ComponentTraits<SWR_TYPE_UINT, 32>,
   1285     FormatSwizzle<0>,
   1286     Defaults<0, 0, 0, 0x1>
   1287 {
   1288     static const uint32_t bpp{ 32 };
   1289     static const uint32_t numComps{ 1 };
   1290     static const bool hasAlpha{ false };
   1291     static const uint32_t alphaComp{ 0 };
   1292     static const bool isSRGB{ false };
   1293     static const bool isBC{ false };
   1294     static const bool isSubsampled{ false };
   1295     static const uint32_t bcWidth{ 1 };
   1296     static const uint32_t bcHeight{ 1 };
   1297 
   1298     typedef TransposeSingleComponent<32> TransposeT;
   1299     typedef Format1<32>                  FormatT;
   1300 };
   1301 
   1302 //////////////////////////////////////////////////////////////////////////
   1303 /// FormatTraits<R32_FLOAT> - Format traits specialization for R32_FLOAT
   1304 //////////////////////////////////////////////////////////////////////////
   1305 template<> struct FormatTraits<R32_FLOAT> :
   1306     ComponentTraits<SWR_TYPE_FLOAT, 32>,
   1307     FormatSwizzle<0>,
   1308     Defaults<0, 0, 0, 0x3f800000>
   1309 {
   1310     static const uint32_t bpp{ 32 };
   1311     static const uint32_t numComps{ 1 };
   1312     static const bool hasAlpha{ false };
   1313     static const uint32_t alphaComp{ 0 };
   1314     static const bool isSRGB{ false };
   1315     static const bool isBC{ false };
   1316     static const bool isSubsampled{ false };
   1317     static const uint32_t bcWidth{ 1 };
   1318     static const uint32_t bcHeight{ 1 };
   1319 
   1320     typedef TransposeSingleComponent<32> TransposeT;
   1321     typedef Format1<32>                  FormatT;
   1322 };
   1323 
   1324 //////////////////////////////////////////////////////////////////////////
   1325 /// FormatTraits<R24_UNORM_X8_TYPELESS> - Format traits specialization for R24_UNORM_X8_TYPELESS
   1326 //////////////////////////////////////////////////////////////////////////
   1327 template<> struct FormatTraits<R24_UNORM_X8_TYPELESS> :
   1328     ComponentTraits<SWR_TYPE_UNORM, 24>,
   1329     FormatSwizzle<0>,
   1330     Defaults<0, 0, 0, 0x3f800000>
   1331 {
   1332     static const uint32_t bpp{ 32 };
   1333     static const uint32_t numComps{ 1 };
   1334     static const bool hasAlpha{ false };
   1335     static const uint32_t alphaComp{ 3 };
   1336     static const bool isSRGB{ false };
   1337     static const bool isBC{ false };
   1338     static const bool isSubsampled{ false };
   1339     static const uint32_t bcWidth{ 1 };
   1340     static const uint32_t bcHeight{ 1 };
   1341 
   1342     typedef TransposeSingleComponent<32> TransposeT;
   1343     typedef Format1<24>                  FormatT;
   1344 };
   1345 
   1346 //////////////////////////////////////////////////////////////////////////
   1347 /// FormatTraits<X24_TYPELESS_G8_UINT> - Format traits specialization for X24_TYPELESS_G8_UINT
   1348 //////////////////////////////////////////////////////////////////////////
   1349 template<> struct FormatTraits<X24_TYPELESS_G8_UINT> :
   1350     ComponentTraits<SWR_TYPE_UINT, 32>,
   1351     FormatSwizzle<1>,
   1352     Defaults<0, 0, 0, 0x1>
   1353 {
   1354     static const uint32_t bpp{ 32 };
   1355     static const uint32_t numComps{ 1 };
   1356     static const bool hasAlpha{ false };
   1357     static const uint32_t alphaComp{ 3 };
   1358     static const bool isSRGB{ false };
   1359     static const bool isBC{ false };
   1360     static const bool isSubsampled{ false };
   1361     static const uint32_t bcWidth{ 1 };
   1362     static const uint32_t bcHeight{ 1 };
   1363 
   1364     typedef TransposeSingleComponent<32> TransposeT;
   1365     typedef Format1<32>                  FormatT;
   1366 };
   1367 
   1368 //////////////////////////////////////////////////////////////////////////
   1369 /// FormatTraits<L32_UNORM> - Format traits specialization for L32_UNORM
   1370 //////////////////////////////////////////////////////////////////////////
   1371 template<> struct FormatTraits<L32_UNORM> :
   1372     ComponentTraits<SWR_TYPE_UNORM, 32>,
   1373     FormatSwizzle<0>,
   1374     Defaults<0, 0, 0, 0x3f800000>
   1375 {
   1376     static const uint32_t bpp{ 32 };
   1377     static const uint32_t numComps{ 1 };
   1378     static const bool hasAlpha{ false };
   1379     static const uint32_t alphaComp{ 0 };
   1380     static const bool isSRGB{ false };
   1381     static const bool isBC{ false };
   1382     static const bool isSubsampled{ false };
   1383     static const uint32_t bcWidth{ 1 };
   1384     static const uint32_t bcHeight{ 1 };
   1385 
   1386     typedef TransposeSingleComponent<32> TransposeT;
   1387     typedef Format1<32>                  FormatT;
   1388 };
   1389 
   1390 //////////////////////////////////////////////////////////////////////////
   1391 /// FormatTraits<L16A16_UNORM> - Format traits specialization for L16A16_UNORM
   1392 //////////////////////////////////////////////////////////////////////////
   1393 template<> struct FormatTraits<L16A16_UNORM> :
   1394     ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>,
   1395     FormatSwizzle<0, 3>,
   1396     Defaults<0, 0, 0, 0x3f800000>
   1397 {
   1398     static const uint32_t bpp{ 32 };
   1399     static const uint32_t numComps{ 2 };
   1400     static const bool hasAlpha{ true };
   1401     static const uint32_t alphaComp{ 1 };
   1402     static const bool isSRGB{ false };
   1403     static const bool isBC{ false };
   1404     static const bool isSubsampled{ false };
   1405     static const uint32_t bcWidth{ 1 };
   1406     static const uint32_t bcHeight{ 1 };
   1407 
   1408     typedef Transpose16_16  TransposeT;
   1409     typedef Format2<16, 16> FormatT;
   1410 };
   1411 
   1412 //////////////////////////////////////////////////////////////////////////
   1413 /// FormatTraits<I24X8_UNORM> - Format traits specialization for I24X8_UNORM
   1414 //////////////////////////////////////////////////////////////////////////
   1415 template<> struct FormatTraits<I24X8_UNORM> :
   1416     ComponentTraits<SWR_TYPE_UNORM, 24, SWR_TYPE_UNORM, 8>,
   1417     FormatSwizzle<0, 3>,
   1418     Defaults<0, 0, 0, 0x3f800000>
   1419 {
   1420     static const uint32_t bpp{ 32 };
   1421     static const uint32_t numComps{ 2 };
   1422     static const bool hasAlpha{ false };
   1423     static const uint32_t alphaComp{ 0 };
   1424     static const bool isSRGB{ false };
   1425     static const bool isBC{ false };
   1426     static const bool isSubsampled{ false };
   1427     static const uint32_t bcWidth{ 1 };
   1428     static const uint32_t bcHeight{ 1 };
   1429 
   1430     typedef Transpose24_8  TransposeT;
   1431     typedef Format2<24, 8> FormatT;
   1432 };
   1433 
   1434 //////////////////////////////////////////////////////////////////////////
   1435 /// FormatTraits<L24X8_UNORM> - Format traits specialization for L24X8_UNORM
   1436 //////////////////////////////////////////////////////////////////////////
   1437 template<> struct FormatTraits<L24X8_UNORM> :
   1438     ComponentTraits<SWR_TYPE_UNORM, 24, SWR_TYPE_UNORM, 8>,
   1439     FormatSwizzle<0, 3>,
   1440     Defaults<0, 0, 0, 0x3f800000>
   1441 {
   1442     static const uint32_t bpp{ 32 };
   1443     static const uint32_t numComps{ 2 };
   1444     static const bool hasAlpha{ false };
   1445     static const uint32_t alphaComp{ 0 };
   1446     static const bool isSRGB{ false };
   1447     static const bool isBC{ false };
   1448     static const bool isSubsampled{ false };
   1449     static const uint32_t bcWidth{ 1 };
   1450     static const uint32_t bcHeight{ 1 };
   1451 
   1452     typedef Transpose24_8  TransposeT;
   1453     typedef Format2<24, 8> FormatT;
   1454 };
   1455 
   1456 //////////////////////////////////////////////////////////////////////////
   1457 /// FormatTraits<I32_FLOAT> - Format traits specialization for I32_FLOAT
   1458 //////////////////////////////////////////////////////////////////////////
   1459 template<> struct FormatTraits<I32_FLOAT> :
   1460     ComponentTraits<SWR_TYPE_FLOAT, 32>,
   1461     FormatSwizzle<0>,
   1462     Defaults<0, 0, 0, 0x3f800000>
   1463 {
   1464     static const uint32_t bpp{ 32 };
   1465     static const uint32_t numComps{ 1 };
   1466     static const bool hasAlpha{ false };
   1467     static const uint32_t alphaComp{ 0 };
   1468     static const bool isSRGB{ false };
   1469     static const bool isBC{ false };
   1470     static const bool isSubsampled{ false };
   1471     static const uint32_t bcWidth{ 1 };
   1472     static const uint32_t bcHeight{ 1 };
   1473 
   1474     typedef TransposeSingleComponent<32> TransposeT;
   1475     typedef Format1<32>                  FormatT;
   1476 };
   1477 
   1478 //////////////////////////////////////////////////////////////////////////
   1479 /// FormatTraits<L32_FLOAT> - Format traits specialization for L32_FLOAT
   1480 //////////////////////////////////////////////////////////////////////////
   1481 template<> struct FormatTraits<L32_FLOAT> :
   1482     ComponentTraits<SWR_TYPE_FLOAT, 32>,
   1483     FormatSwizzle<0>,
   1484     Defaults<0, 0, 0, 0x3f800000>
   1485 {
   1486     static const uint32_t bpp{ 32 };
   1487     static const uint32_t numComps{ 1 };
   1488     static const bool hasAlpha{ false };
   1489     static const uint32_t alphaComp{ 0 };
   1490     static const bool isSRGB{ false };
   1491     static const bool isBC{ false };
   1492     static const bool isSubsampled{ false };
   1493     static const uint32_t bcWidth{ 1 };
   1494     static const uint32_t bcHeight{ 1 };
   1495 
   1496     typedef TransposeSingleComponent<32> TransposeT;
   1497     typedef Format1<32>                  FormatT;
   1498 };
   1499 
   1500 //////////////////////////////////////////////////////////////////////////
   1501 /// FormatTraits<A32_FLOAT> - Format traits specialization for A32_FLOAT
   1502 //////////////////////////////////////////////////////////////////////////
   1503 template<> struct FormatTraits<A32_FLOAT> :
   1504     ComponentTraits<SWR_TYPE_FLOAT, 32>,
   1505     FormatSwizzle<3>,
   1506     Defaults<0, 0, 0, 0x3f800000>
   1507 {
   1508     static const uint32_t bpp{ 32 };
   1509     static const uint32_t numComps{ 1 };
   1510     static const bool hasAlpha{ true };
   1511     static const uint32_t alphaComp{ 0 };
   1512     static const bool isSRGB{ false };
   1513     static const bool isBC{ false };
   1514     static const bool isSubsampled{ false };
   1515     static const uint32_t bcWidth{ 1 };
   1516     static const uint32_t bcHeight{ 1 };
   1517 
   1518     typedef TransposeSingleComponent<32> TransposeT;
   1519     typedef Format1<32>                  FormatT;
   1520 };
   1521 
   1522 //////////////////////////////////////////////////////////////////////////
   1523 /// FormatTraits<B8G8R8X8_UNORM> - Format traits specialization for B8G8R8X8_UNORM
   1524 //////////////////////////////////////////////////////////////////////////
   1525 template<> struct FormatTraits<B8G8R8X8_UNORM> :
   1526     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>,
   1527     FormatSwizzle<2, 1, 0, 3>,
   1528     Defaults<0, 0, 0, 0x3f800000>
   1529 {
   1530     static const uint32_t bpp{ 32 };
   1531     static const uint32_t numComps{ 3 };
   1532     static const bool hasAlpha{ false };
   1533     static const uint32_t alphaComp{ 0 };
   1534     static const bool isSRGB{ false };
   1535     static const bool isBC{ false };
   1536     static const bool isSubsampled{ false };
   1537     static const uint32_t bcWidth{ 1 };
   1538     static const uint32_t bcHeight{ 1 };
   1539 
   1540     typedef Transpose8_8_8_8    TransposeT;
   1541     typedef Format4<8, 8, 8, 8> FormatT;
   1542 };
   1543 
   1544 //////////////////////////////////////////////////////////////////////////
   1545 /// FormatTraits<B8G8R8X8_UNORM_SRGB> - Format traits specialization for B8G8R8X8_UNORM_SRGB
   1546 //////////////////////////////////////////////////////////////////////////
   1547 template<> struct FormatTraits<B8G8R8X8_UNORM_SRGB> :
   1548     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>,
   1549     FormatSwizzle<2, 1, 0, 3>,
   1550     Defaults<0, 0, 0, 0x3f800000>
   1551 {
   1552     static const uint32_t bpp{ 32 };
   1553     static const uint32_t numComps{ 3 };
   1554     static const bool hasAlpha{ false };
   1555     static const uint32_t alphaComp{ 0 };
   1556     static const bool isSRGB{ true };
   1557     static const bool isBC{ false };
   1558     static const bool isSubsampled{ false };
   1559     static const uint32_t bcWidth{ 1 };
   1560     static const uint32_t bcHeight{ 1 };
   1561 
   1562     typedef Transpose8_8_8_8    TransposeT;
   1563     typedef Format4<8, 8, 8, 8> FormatT;
   1564 };
   1565 
   1566 //////////////////////////////////////////////////////////////////////////
   1567 /// FormatTraits<R8G8B8X8_UNORM> - Format traits specialization for R8G8B8X8_UNORM
   1568 //////////////////////////////////////////////////////////////////////////
   1569 template<> struct FormatTraits<R8G8B8X8_UNORM> :
   1570     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>,
   1571     FormatSwizzle<0, 1, 2, 3>,
   1572     Defaults<0, 0, 0, 0x3f800000>
   1573 {
   1574     static const uint32_t bpp{ 32 };
   1575     static const uint32_t numComps{ 3 };
   1576     static const bool hasAlpha{ false };
   1577     static const uint32_t alphaComp{ 0 };
   1578     static const bool isSRGB{ false };
   1579     static const bool isBC{ false };
   1580     static const bool isSubsampled{ false };
   1581     static const uint32_t bcWidth{ 1 };
   1582     static const uint32_t bcHeight{ 1 };
   1583 
   1584     typedef Transpose8_8_8_8    TransposeT;
   1585     typedef Format4<8, 8, 8, 8> FormatT;
   1586 };
   1587 
   1588 //////////////////////////////////////////////////////////////////////////
   1589 /// FormatTraits<R8G8B8X8_UNORM_SRGB> - Format traits specialization for R8G8B8X8_UNORM_SRGB
   1590 //////////////////////////////////////////////////////////////////////////
   1591 template<> struct FormatTraits<R8G8B8X8_UNORM_SRGB> :
   1592     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>,
   1593     FormatSwizzle<0, 1, 2, 3>,
   1594     Defaults<0, 0, 0, 0x3f800000>
   1595 {
   1596     static const uint32_t bpp{ 32 };
   1597     static const uint32_t numComps{ 3 };
   1598     static const bool hasAlpha{ false };
   1599     static const uint32_t alphaComp{ 0 };
   1600     static const bool isSRGB{ true };
   1601     static const bool isBC{ false };
   1602     static const bool isSubsampled{ false };
   1603     static const uint32_t bcWidth{ 1 };
   1604     static const uint32_t bcHeight{ 1 };
   1605 
   1606     typedef Transpose8_8_8_8    TransposeT;
   1607     typedef Format4<8, 8, 8, 8> FormatT;
   1608 };
   1609 
   1610 //////////////////////////////////////////////////////////////////////////
   1611 /// FormatTraits<R9G9B9E5_SHAREDEXP> - Format traits specialization for R9G9B9E5_SHAREDEXP
   1612 //////////////////////////////////////////////////////////////////////////
   1613 template<> struct FormatTraits<R9G9B9E5_SHAREDEXP> :
   1614     ComponentTraits<SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 5>,
   1615     FormatSwizzle<0, 1, 2, 3>,
   1616     Defaults<0, 0, 0, 0x1>
   1617 {
   1618     static const uint32_t bpp{ 32 };
   1619     static const uint32_t numComps{ 4 };
   1620     static const bool hasAlpha{ false };
   1621     static const uint32_t alphaComp{ 3 };
   1622     static const bool isSRGB{ false };
   1623     static const bool isBC{ false };
   1624     static const bool isSubsampled{ false };
   1625     static const uint32_t bcWidth{ 1 };
   1626     static const uint32_t bcHeight{ 1 };
   1627 
   1628     typedef Transpose9_9_9_5    TransposeT;
   1629     typedef Format4<9, 9, 9, 5> FormatT;
   1630 };
   1631 
   1632 //////////////////////////////////////////////////////////////////////////
   1633 /// FormatTraits<B10G10R10X2_UNORM> - Format traits specialization for B10G10R10X2_UNORM
   1634 //////////////////////////////////////////////////////////////////////////
   1635 template<> struct FormatTraits<B10G10R10X2_UNORM> :
   1636     ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNUSED, 2>,
   1637     FormatSwizzle<2, 1, 0, 3>,
   1638     Defaults<0, 0, 0, 0x3f800000>
   1639 {
   1640     static const uint32_t bpp{ 32 };
   1641     static const uint32_t numComps{ 3 };
   1642     static const bool hasAlpha{ false };
   1643     static const uint32_t alphaComp{ 0 };
   1644     static const bool isSRGB{ false };
   1645     static const bool isBC{ false };
   1646     static const bool isSubsampled{ false };
   1647     static const uint32_t bcWidth{ 1 };
   1648     static const uint32_t bcHeight{ 1 };
   1649 
   1650     typedef Transpose10_10_10_2    TransposeT;
   1651     typedef Format4<10, 10, 10, 2> FormatT;
   1652 };
   1653 
   1654 //////////////////////////////////////////////////////////////////////////
   1655 /// FormatTraits<L16A16_FLOAT> - Format traits specialization for L16A16_FLOAT
   1656 //////////////////////////////////////////////////////////////////////////
   1657 template<> struct FormatTraits<L16A16_FLOAT> :
   1658     ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>,
   1659     FormatSwizzle<0, 3>,
   1660     Defaults<0, 0, 0, 0x3f800000>
   1661 {
   1662     static const uint32_t bpp{ 32 };
   1663     static const uint32_t numComps{ 2 };
   1664     static const bool hasAlpha{ true };
   1665     static const uint32_t alphaComp{ 1 };
   1666     static const bool isSRGB{ false };
   1667     static const bool isBC{ false };
   1668     static const bool isSubsampled{ false };
   1669     static const uint32_t bcWidth{ 1 };
   1670     static const uint32_t bcHeight{ 1 };
   1671 
   1672     typedef Transpose16_16  TransposeT;
   1673     typedef Format2<16, 16> FormatT;
   1674 };
   1675 
   1676 //////////////////////////////////////////////////////////////////////////
   1677 /// FormatTraits<R10G10B10X2_USCALED> - Format traits specialization for R10G10B10X2_USCALED
   1678 //////////////////////////////////////////////////////////////////////////
   1679 template<> struct FormatTraits<R10G10B10X2_USCALED> :
   1680     ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_UNUSED, 2>,
   1681     FormatSwizzle<0, 1, 2, 3>,
   1682     Defaults<0, 0, 0, 0x3f800000>
   1683 {
   1684     static const uint32_t bpp{ 32 };
   1685     static const uint32_t numComps{ 3 };
   1686     static const bool hasAlpha{ false };
   1687     static const uint32_t alphaComp{ 0 };
   1688     static const bool isSRGB{ false };
   1689     static const bool isBC{ false };
   1690     static const bool isSubsampled{ false };
   1691     static const uint32_t bcWidth{ 1 };
   1692     static const uint32_t bcHeight{ 1 };
   1693 
   1694     typedef Transpose10_10_10_2    TransposeT;
   1695     typedef Format4<10, 10, 10, 2> FormatT;
   1696 };
   1697 
   1698 //////////////////////////////////////////////////////////////////////////
   1699 /// FormatTraits<R8G8B8A8_SSCALED> - Format traits specialization for R8G8B8A8_SSCALED
   1700 //////////////////////////////////////////////////////////////////////////
   1701 template<> struct FormatTraits<R8G8B8A8_SSCALED> :
   1702     ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>,
   1703     FormatSwizzle<0, 1, 2, 3>,
   1704     Defaults<0, 0, 0, 0x3f800000>
   1705 {
   1706     static const uint32_t bpp{ 32 };
   1707     static const uint32_t numComps{ 4 };
   1708     static const bool hasAlpha{ true };
   1709     static const uint32_t alphaComp{ 3 };
   1710     static const bool isSRGB{ false };
   1711     static const bool isBC{ false };
   1712     static const bool isSubsampled{ false };
   1713     static const uint32_t bcWidth{ 1 };
   1714     static const uint32_t bcHeight{ 1 };
   1715 
   1716     typedef Transpose8_8_8_8    TransposeT;
   1717     typedef Format4<8, 8, 8, 8> FormatT;
   1718 };
   1719 
   1720 //////////////////////////////////////////////////////////////////////////
   1721 /// FormatTraits<R8G8B8A8_USCALED> - Format traits specialization for R8G8B8A8_USCALED
   1722 //////////////////////////////////////////////////////////////////////////
   1723 template<> struct FormatTraits<R8G8B8A8_USCALED> :
   1724     ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>,
   1725     FormatSwizzle<0, 1, 2, 3>,
   1726     Defaults<0, 0, 0, 0x3f800000>
   1727 {
   1728     static const uint32_t bpp{ 32 };
   1729     static const uint32_t numComps{ 4 };
   1730     static const bool hasAlpha{ true };
   1731     static const uint32_t alphaComp{ 3 };
   1732     static const bool isSRGB{ false };
   1733     static const bool isBC{ false };
   1734     static const bool isSubsampled{ false };
   1735     static const uint32_t bcWidth{ 1 };
   1736     static const uint32_t bcHeight{ 1 };
   1737 
   1738     typedef Transpose8_8_8_8    TransposeT;
   1739     typedef Format4<8, 8, 8, 8> FormatT;
   1740 };
   1741 
   1742 //////////////////////////////////////////////////////////////////////////
   1743 /// FormatTraits<R16G16_SSCALED> - Format traits specialization for R16G16_SSCALED
   1744 //////////////////////////////////////////////////////////////////////////
   1745 template<> struct FormatTraits<R16G16_SSCALED> :
   1746     ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>,
   1747     FormatSwizzle<0, 1>,
   1748     Defaults<0, 0, 0, 0x3f800000>
   1749 {
   1750     static const uint32_t bpp{ 32 };
   1751     static const uint32_t numComps{ 2 };
   1752     static const bool hasAlpha{ false };
   1753     static const uint32_t alphaComp{ 0 };
   1754     static const bool isSRGB{ false };
   1755     static const bool isBC{ false };
   1756     static const bool isSubsampled{ false };
   1757     static const uint32_t bcWidth{ 1 };
   1758     static const uint32_t bcHeight{ 1 };
   1759 
   1760     typedef Transpose16_16  TransposeT;
   1761     typedef Format2<16, 16> FormatT;
   1762 };
   1763 
   1764 //////////////////////////////////////////////////////////////////////////
   1765 /// FormatTraits<R16G16_USCALED> - Format traits specialization for R16G16_USCALED
   1766 //////////////////////////////////////////////////////////////////////////
   1767 template<> struct FormatTraits<R16G16_USCALED> :
   1768     ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>,
   1769     FormatSwizzle<0, 1>,
   1770     Defaults<0, 0, 0, 0x3f800000>
   1771 {
   1772     static const uint32_t bpp{ 32 };
   1773     static const uint32_t numComps{ 2 };
   1774     static const bool hasAlpha{ false };
   1775     static const uint32_t alphaComp{ 0 };
   1776     static const bool isSRGB{ false };
   1777     static const bool isBC{ false };
   1778     static const bool isSubsampled{ false };
   1779     static const uint32_t bcWidth{ 1 };
   1780     static const uint32_t bcHeight{ 1 };
   1781 
   1782     typedef Transpose16_16  TransposeT;
   1783     typedef Format2<16, 16> FormatT;
   1784 };
   1785 
   1786 //////////////////////////////////////////////////////////////////////////
   1787 /// FormatTraits<R32_SSCALED> - Format traits specialization for R32_SSCALED
   1788 //////////////////////////////////////////////////////////////////////////
   1789 template<> struct FormatTraits<R32_SSCALED> :
   1790     ComponentTraits<SWR_TYPE_SSCALED, 32>,
   1791     FormatSwizzle<0>,
   1792     Defaults<0, 0, 0, 0x3f800000>
   1793 {
   1794     static const uint32_t bpp{ 32 };
   1795     static const uint32_t numComps{ 1 };
   1796     static const bool hasAlpha{ false };
   1797     static const uint32_t alphaComp{ 0 };
   1798     static const bool isSRGB{ false };
   1799     static const bool isBC{ false };
   1800     static const bool isSubsampled{ false };
   1801     static const uint32_t bcWidth{ 1 };
   1802     static const uint32_t bcHeight{ 1 };
   1803 
   1804     typedef TransposeSingleComponent<32> TransposeT;
   1805     typedef Format1<32>                  FormatT;
   1806 };
   1807 
   1808 //////////////////////////////////////////////////////////////////////////
   1809 /// FormatTraits<R32_USCALED> - Format traits specialization for R32_USCALED
   1810 //////////////////////////////////////////////////////////////////////////
   1811 template<> struct FormatTraits<R32_USCALED> :
   1812     ComponentTraits<SWR_TYPE_USCALED, 32>,
   1813     FormatSwizzle<0>,
   1814     Defaults<0, 0, 0, 0x3f800000>
   1815 {
   1816     static const uint32_t bpp{ 32 };
   1817     static const uint32_t numComps{ 1 };
   1818     static const bool hasAlpha{ false };
   1819     static const uint32_t alphaComp{ 0 };
   1820     static const bool isSRGB{ false };
   1821     static const bool isBC{ false };
   1822     static const bool isSubsampled{ false };
   1823     static const uint32_t bcWidth{ 1 };
   1824     static const uint32_t bcHeight{ 1 };
   1825 
   1826     typedef TransposeSingleComponent<32> TransposeT;
   1827     typedef Format1<32>                  FormatT;
   1828 };
   1829 
   1830 //////////////////////////////////////////////////////////////////////////
   1831 /// FormatTraits<B5G6R5_UNORM> - Format traits specialization for B5G6R5_UNORM
   1832 //////////////////////////////////////////////////////////////////////////
   1833 template<> struct FormatTraits<B5G6R5_UNORM> :
   1834     ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 6, SWR_TYPE_UNORM, 5>,
   1835     FormatSwizzle<2, 1, 0>,
   1836     Defaults<0, 0, 0, 0x3f800000>
   1837 {
   1838     static const uint32_t bpp{ 16 };
   1839     static const uint32_t numComps{ 3 };
   1840     static const bool hasAlpha{ false };
   1841     static const uint32_t alphaComp{ 0 };
   1842     static const bool isSRGB{ false };
   1843     static const bool isBC{ false };
   1844     static const bool isSubsampled{ false };
   1845     static const uint32_t bcWidth{ 1 };
   1846     static const uint32_t bcHeight{ 1 };
   1847 
   1848     typedef Transpose5_6_5   TransposeT;
   1849     typedef Format3<5, 6, 5> FormatT;
   1850 };
   1851 
   1852 //////////////////////////////////////////////////////////////////////////
   1853 /// FormatTraits<B5G6R5_UNORM_SRGB> - Format traits specialization for B5G6R5_UNORM_SRGB
   1854 //////////////////////////////////////////////////////////////////////////
   1855 template<> struct FormatTraits<B5G6R5_UNORM_SRGB> :
   1856     ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 6, SWR_TYPE_UNORM, 5>,
   1857     FormatSwizzle<2, 1, 0>,
   1858     Defaults<0, 0, 0, 0x3f800000>
   1859 {
   1860     static const uint32_t bpp{ 16 };
   1861     static const uint32_t numComps{ 3 };
   1862     static const bool hasAlpha{ false };
   1863     static const uint32_t alphaComp{ 0 };
   1864     static const bool isSRGB{ true };
   1865     static const bool isBC{ false };
   1866     static const bool isSubsampled{ false };
   1867     static const uint32_t bcWidth{ 1 };
   1868     static const uint32_t bcHeight{ 1 };
   1869 
   1870     typedef Transpose5_6_5   TransposeT;
   1871     typedef Format3<5, 6, 5> FormatT;
   1872 };
   1873 
   1874 //////////////////////////////////////////////////////////////////////////
   1875 /// FormatTraits<B5G5R5A1_UNORM> - Format traits specialization for B5G5R5A1_UNORM
   1876 //////////////////////////////////////////////////////////////////////////
   1877 template<> struct FormatTraits<B5G5R5A1_UNORM> :
   1878     ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 1>,
   1879     FormatSwizzle<2, 1, 0, 3>,
   1880     Defaults<0, 0, 0, 0x3f800000>
   1881 {
   1882     static const uint32_t bpp{ 16 };
   1883     static const uint32_t numComps{ 4 };
   1884     static const bool hasAlpha{ true };
   1885     static const uint32_t alphaComp{ 3 };
   1886     static const bool isSRGB{ false };
   1887     static const bool isBC{ false };
   1888     static const bool isSubsampled{ false };
   1889     static const uint32_t bcWidth{ 1 };
   1890     static const uint32_t bcHeight{ 1 };
   1891 
   1892     typedef Transpose5_5_5_1    TransposeT;
   1893     typedef Format4<5, 5, 5, 1> FormatT;
   1894 };
   1895 
   1896 //////////////////////////////////////////////////////////////////////////
   1897 /// FormatTraits<B5G5R5A1_UNORM_SRGB> - Format traits specialization for B5G5R5A1_UNORM_SRGB
   1898 //////////////////////////////////////////////////////////////////////////
   1899 template<> struct FormatTraits<B5G5R5A1_UNORM_SRGB> :
   1900     ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 1>,
   1901     FormatSwizzle<2, 1, 0, 3>,
   1902     Defaults<0, 0, 0, 0x3f800000>
   1903 {
   1904     static const uint32_t bpp{ 16 };
   1905     static const uint32_t numComps{ 4 };
   1906     static const bool hasAlpha{ true };
   1907     static const uint32_t alphaComp{ 3 };
   1908     static const bool isSRGB{ true };
   1909     static const bool isBC{ false };
   1910     static const bool isSubsampled{ false };
   1911     static const uint32_t bcWidth{ 1 };
   1912     static const uint32_t bcHeight{ 1 };
   1913 
   1914     typedef Transpose5_5_5_1    TransposeT;
   1915     typedef Format4<5, 5, 5, 1> FormatT;
   1916 };
   1917 
   1918 //////////////////////////////////////////////////////////////////////////
   1919 /// FormatTraits<B4G4R4A4_UNORM> - Format traits specialization for B4G4R4A4_UNORM
   1920 //////////////////////////////////////////////////////////////////////////
   1921 template<> struct FormatTraits<B4G4R4A4_UNORM> :
   1922     ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>,
   1923     FormatSwizzle<2, 1, 0, 3>,
   1924     Defaults<0, 0, 0, 0x3f800000>
   1925 {
   1926     static const uint32_t bpp{ 16 };
   1927     static const uint32_t numComps{ 4 };
   1928     static const bool hasAlpha{ true };
   1929     static const uint32_t alphaComp{ 3 };
   1930     static const bool isSRGB{ false };
   1931     static const bool isBC{ false };
   1932     static const bool isSubsampled{ false };
   1933     static const uint32_t bcWidth{ 1 };
   1934     static const uint32_t bcHeight{ 1 };
   1935 
   1936     typedef Transpose4_4_4_4    TransposeT;
   1937     typedef Format4<4, 4, 4, 4> FormatT;
   1938 };
   1939 
   1940 //////////////////////////////////////////////////////////////////////////
   1941 /// FormatTraits<B4G4R4A4_UNORM_SRGB> - Format traits specialization for B4G4R4A4_UNORM_SRGB
   1942 //////////////////////////////////////////////////////////////////////////
   1943 template<> struct FormatTraits<B4G4R4A4_UNORM_SRGB> :
   1944     ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>,
   1945     FormatSwizzle<2, 1, 0, 3>,
   1946     Defaults<0, 0, 0, 0x3f800000>
   1947 {
   1948     static const uint32_t bpp{ 16 };
   1949     static const uint32_t numComps{ 4 };
   1950     static const bool hasAlpha{ true };
   1951     static const uint32_t alphaComp{ 3 };
   1952     static const bool isSRGB{ true };
   1953     static const bool isBC{ false };
   1954     static const bool isSubsampled{ false };
   1955     static const uint32_t bcWidth{ 1 };
   1956     static const uint32_t bcHeight{ 1 };
   1957 
   1958     typedef Transpose4_4_4_4    TransposeT;
   1959     typedef Format4<4, 4, 4, 4> FormatT;
   1960 };
   1961 
   1962 //////////////////////////////////////////////////////////////////////////
   1963 /// FormatTraits<R8G8_UNORM> - Format traits specialization for R8G8_UNORM
   1964 //////////////////////////////////////////////////////////////////////////
   1965 template<> struct FormatTraits<R8G8_UNORM> :
   1966     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
   1967     FormatSwizzle<0, 1>,
   1968     Defaults<0, 0, 0, 0x3f800000>
   1969 {
   1970     static const uint32_t bpp{ 16 };
   1971     static const uint32_t numComps{ 2 };
   1972     static const bool hasAlpha{ false };
   1973     static const uint32_t alphaComp{ 0 };
   1974     static const bool isSRGB{ false };
   1975     static const bool isBC{ false };
   1976     static const bool isSubsampled{ false };
   1977     static const uint32_t bcWidth{ 1 };
   1978     static const uint32_t bcHeight{ 1 };
   1979 
   1980     typedef Transpose8_8  TransposeT;
   1981     typedef Format2<8, 8> FormatT;
   1982 };
   1983 
   1984 //////////////////////////////////////////////////////////////////////////
   1985 /// FormatTraits<R8G8_SNORM> - Format traits specialization for R8G8_SNORM
   1986 //////////////////////////////////////////////////////////////////////////
   1987 template<> struct FormatTraits<R8G8_SNORM> :
   1988     ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>,
   1989     FormatSwizzle<0, 1>,
   1990     Defaults<0, 0, 0, 0x3f800000>
   1991 {
   1992     static const uint32_t bpp{ 16 };
   1993     static const uint32_t numComps{ 2 };
   1994     static const bool hasAlpha{ false };
   1995     static const uint32_t alphaComp{ 0 };
   1996     static const bool isSRGB{ false };
   1997     static const bool isBC{ false };
   1998     static const bool isSubsampled{ false };
   1999     static const uint32_t bcWidth{ 1 };
   2000     static const uint32_t bcHeight{ 1 };
   2001 
   2002     typedef Transpose8_8  TransposeT;
   2003     typedef Format2<8, 8> FormatT;
   2004 };
   2005 
   2006 //////////////////////////////////////////////////////////////////////////
   2007 /// FormatTraits<R8G8_SINT> - Format traits specialization for R8G8_SINT
   2008 //////////////////////////////////////////////////////////////////////////
   2009 template<> struct FormatTraits<R8G8_SINT> :
   2010     ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>,
   2011     FormatSwizzle<0, 1>,
   2012     Defaults<0, 0, 0, 0x1>
   2013 {
   2014     static const uint32_t bpp{ 16 };
   2015     static const uint32_t numComps{ 2 };
   2016     static const bool hasAlpha{ false };
   2017     static const uint32_t alphaComp{ 0 };
   2018     static const bool isSRGB{ false };
   2019     static const bool isBC{ false };
   2020     static const bool isSubsampled{ false };
   2021     static const uint32_t bcWidth{ 1 };
   2022     static const uint32_t bcHeight{ 1 };
   2023 
   2024     typedef Transpose8_8  TransposeT;
   2025     typedef Format2<8, 8> FormatT;
   2026 };
   2027 
   2028 //////////////////////////////////////////////////////////////////////////
   2029 /// FormatTraits<R8G8_UINT> - Format traits specialization for R8G8_UINT
   2030 //////////////////////////////////////////////////////////////////////////
   2031 template<> struct FormatTraits<R8G8_UINT> :
   2032     ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
   2033     FormatSwizzle<0, 1>,
   2034     Defaults<0, 0, 0, 0x1>
   2035 {
   2036     static const uint32_t bpp{ 16 };
   2037     static const uint32_t numComps{ 2 };
   2038     static const bool hasAlpha{ false };
   2039     static const uint32_t alphaComp{ 0 };
   2040     static const bool isSRGB{ false };
   2041     static const bool isBC{ false };
   2042     static const bool isSubsampled{ false };
   2043     static const uint32_t bcWidth{ 1 };
   2044     static const uint32_t bcHeight{ 1 };
   2045 
   2046     typedef Transpose8_8  TransposeT;
   2047     typedef Format2<8, 8> FormatT;
   2048 };
   2049 
   2050 //////////////////////////////////////////////////////////////////////////
   2051 /// FormatTraits<R16_UNORM> - Format traits specialization for R16_UNORM
   2052 //////////////////////////////////////////////////////////////////////////
   2053 template<> struct FormatTraits<R16_UNORM> :
   2054     ComponentTraits<SWR_TYPE_UNORM, 16>,
   2055     FormatSwizzle<0>,
   2056     Defaults<0, 0, 0, 0x3f800000>
   2057 {
   2058     static const uint32_t bpp{ 16 };
   2059     static const uint32_t numComps{ 1 };
   2060     static const bool hasAlpha{ false };
   2061     static const uint32_t alphaComp{ 0 };
   2062     static const bool isSRGB{ false };
   2063     static const bool isBC{ false };
   2064     static const bool isSubsampled{ false };
   2065     static const uint32_t bcWidth{ 1 };
   2066     static const uint32_t bcHeight{ 1 };
   2067 
   2068     typedef TransposeSingleComponent<16> TransposeT;
   2069     typedef Format1<16>                  FormatT;
   2070 };
   2071 
   2072 //////////////////////////////////////////////////////////////////////////
   2073 /// FormatTraits<R16_SNORM> - Format traits specialization for R16_SNORM
   2074 //////////////////////////////////////////////////////////////////////////
   2075 template<> struct FormatTraits<R16_SNORM> :
   2076     ComponentTraits<SWR_TYPE_SNORM, 16>,
   2077     FormatSwizzle<0>,
   2078     Defaults<0, 0, 0, 0x3f800000>
   2079 {
   2080     static const uint32_t bpp{ 16 };
   2081     static const uint32_t numComps{ 1 };
   2082     static const bool hasAlpha{ false };
   2083     static const uint32_t alphaComp{ 0 };
   2084     static const bool isSRGB{ false };
   2085     static const bool isBC{ false };
   2086     static const bool isSubsampled{ false };
   2087     static const uint32_t bcWidth{ 1 };
   2088     static const uint32_t bcHeight{ 1 };
   2089 
   2090     typedef TransposeSingleComponent<16> TransposeT;
   2091     typedef Format1<16>                  FormatT;
   2092 };
   2093 
   2094 //////////////////////////////////////////////////////////////////////////
   2095 /// FormatTraits<R16_SINT> - Format traits specialization for R16_SINT
   2096 //////////////////////////////////////////////////////////////////////////
   2097 template<> struct FormatTraits<R16_SINT> :
   2098     ComponentTraits<SWR_TYPE_SINT, 16>,
   2099     FormatSwizzle<0>,
   2100     Defaults<0, 0, 0, 0x1>
   2101 {
   2102     static const uint32_t bpp{ 16 };
   2103     static const uint32_t numComps{ 1 };
   2104     static const bool hasAlpha{ false };
   2105     static const uint32_t alphaComp{ 0 };
   2106     static const bool isSRGB{ false };
   2107     static const bool isBC{ false };
   2108     static const bool isSubsampled{ false };
   2109     static const uint32_t bcWidth{ 1 };
   2110     static const uint32_t bcHeight{ 1 };
   2111 
   2112     typedef TransposeSingleComponent<16> TransposeT;
   2113     typedef Format1<16>                  FormatT;
   2114 };
   2115 
   2116 //////////////////////////////////////////////////////////////////////////
   2117 /// FormatTraits<R16_UINT> - Format traits specialization for R16_UINT
   2118 //////////////////////////////////////////////////////////////////////////
   2119 template<> struct FormatTraits<R16_UINT> :
   2120     ComponentTraits<SWR_TYPE_UINT, 16>,
   2121     FormatSwizzle<0>,
   2122     Defaults<0, 0, 0, 0x1>
   2123 {
   2124     static const uint32_t bpp{ 16 };
   2125     static const uint32_t numComps{ 1 };
   2126     static const bool hasAlpha{ false };
   2127     static const uint32_t alphaComp{ 0 };
   2128     static const bool isSRGB{ false };
   2129     static const bool isBC{ false };
   2130     static const bool isSubsampled{ false };
   2131     static const uint32_t bcWidth{ 1 };
   2132     static const uint32_t bcHeight{ 1 };
   2133 
   2134     typedef TransposeSingleComponent<16> TransposeT;
   2135     typedef Format1<16>                  FormatT;
   2136 };
   2137 
   2138 //////////////////////////////////////////////////////////////////////////
   2139 /// FormatTraits<R16_FLOAT> - Format traits specialization for R16_FLOAT
   2140 //////////////////////////////////////////////////////////////////////////
   2141 template<> struct FormatTraits<R16_FLOAT> :
   2142     ComponentTraits<SWR_TYPE_FLOAT, 16>,
   2143     FormatSwizzle<0>,
   2144     Defaults<0, 0, 0, 0x3f800000>
   2145 {
   2146     static const uint32_t bpp{ 16 };
   2147     static const uint32_t numComps{ 1 };
   2148     static const bool hasAlpha{ false };
   2149     static const uint32_t alphaComp{ 0 };
   2150     static const bool isSRGB{ false };
   2151     static const bool isBC{ false };
   2152     static const bool isSubsampled{ false };
   2153     static const uint32_t bcWidth{ 1 };
   2154     static const uint32_t bcHeight{ 1 };
   2155 
   2156     typedef TransposeSingleComponent<16> TransposeT;
   2157     typedef Format1<16>                  FormatT;
   2158 };
   2159 
   2160 //////////////////////////////////////////////////////////////////////////
   2161 /// FormatTraits<I16_UNORM> - Format traits specialization for I16_UNORM
   2162 //////////////////////////////////////////////////////////////////////////
   2163 template<> struct FormatTraits<I16_UNORM> :
   2164     ComponentTraits<SWR_TYPE_UNORM, 16>,
   2165     FormatSwizzle<0>,
   2166     Defaults<0, 0, 0, 0x3f800000>
   2167 {
   2168     static const uint32_t bpp{ 16 };
   2169     static const uint32_t numComps{ 1 };
   2170     static const bool hasAlpha{ false };
   2171     static const uint32_t alphaComp{ 0 };
   2172     static const bool isSRGB{ false };
   2173     static const bool isBC{ false };
   2174     static const bool isSubsampled{ false };
   2175     static const uint32_t bcWidth{ 1 };
   2176     static const uint32_t bcHeight{ 1 };
   2177 
   2178     typedef TransposeSingleComponent<16> TransposeT;
   2179     typedef Format1<16>                  FormatT;
   2180 };
   2181 
   2182 //////////////////////////////////////////////////////////////////////////
   2183 /// FormatTraits<L16_UNORM> - Format traits specialization for L16_UNORM
   2184 //////////////////////////////////////////////////////////////////////////
   2185 template<> struct FormatTraits<L16_UNORM> :
   2186     ComponentTraits<SWR_TYPE_UNORM, 16>,
   2187     FormatSwizzle<0>,
   2188     Defaults<0, 0, 0, 0x3f800000>
   2189 {
   2190     static const uint32_t bpp{ 16 };
   2191     static const uint32_t numComps{ 1 };
   2192     static const bool hasAlpha{ false };
   2193     static const uint32_t alphaComp{ 0 };
   2194     static const bool isSRGB{ false };
   2195     static const bool isBC{ false };
   2196     static const bool isSubsampled{ false };
   2197     static const uint32_t bcWidth{ 1 };
   2198     static const uint32_t bcHeight{ 1 };
   2199 
   2200     typedef TransposeSingleComponent<16> TransposeT;
   2201     typedef Format1<16>                  FormatT;
   2202 };
   2203 
   2204 //////////////////////////////////////////////////////////////////////////
   2205 /// FormatTraits<A16_UNORM> - Format traits specialization for A16_UNORM
   2206 //////////////////////////////////////////////////////////////////////////
   2207 template<> struct FormatTraits<A16_UNORM> :
   2208     ComponentTraits<SWR_TYPE_UNORM, 16>,
   2209     FormatSwizzle<3>,
   2210     Defaults<0, 0, 0, 0x3f800000>
   2211 {
   2212     static const uint32_t bpp{ 16 };
   2213     static const uint32_t numComps{ 1 };
   2214     static const bool hasAlpha{ true };
   2215     static const uint32_t alphaComp{ 0 };
   2216     static const bool isSRGB{ false };
   2217     static const bool isBC{ false };
   2218     static const bool isSubsampled{ false };
   2219     static const uint32_t bcWidth{ 1 };
   2220     static const uint32_t bcHeight{ 1 };
   2221 
   2222     typedef TransposeSingleComponent<16> TransposeT;
   2223     typedef Format1<16>                  FormatT;
   2224 };
   2225 
   2226 //////////////////////////////////////////////////////////////////////////
   2227 /// FormatTraits<L8A8_UNORM> - Format traits specialization for L8A8_UNORM
   2228 //////////////////////////////////////////////////////////////////////////
   2229 template<> struct FormatTraits<L8A8_UNORM> :
   2230     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
   2231     FormatSwizzle<0, 3>,
   2232     Defaults<0, 0, 0, 0x3f800000>
   2233 {
   2234     static const uint32_t bpp{ 16 };
   2235     static const uint32_t numComps{ 2 };
   2236     static const bool hasAlpha{ true };
   2237     static const uint32_t alphaComp{ 1 };
   2238     static const bool isSRGB{ false };
   2239     static const bool isBC{ false };
   2240     static const bool isSubsampled{ false };
   2241     static const uint32_t bcWidth{ 1 };
   2242     static const uint32_t bcHeight{ 1 };
   2243 
   2244     typedef Transpose8_8  TransposeT;
   2245     typedef Format2<8, 8> FormatT;
   2246 };
   2247 
   2248 //////////////////////////////////////////////////////////////////////////
   2249 /// FormatTraits<I16_FLOAT> - Format traits specialization for I16_FLOAT
   2250 //////////////////////////////////////////////////////////////////////////
   2251 template<> struct FormatTraits<I16_FLOAT> :
   2252     ComponentTraits<SWR_TYPE_FLOAT, 16>,
   2253     FormatSwizzle<0>,
   2254     Defaults<0, 0, 0, 0x3f800000>
   2255 {
   2256     static const uint32_t bpp{ 16 };
   2257     static const uint32_t numComps{ 1 };
   2258     static const bool hasAlpha{ false };
   2259     static const uint32_t alphaComp{ 0 };
   2260     static const bool isSRGB{ false };
   2261     static const bool isBC{ false };
   2262     static const bool isSubsampled{ false };
   2263     static const uint32_t bcWidth{ 1 };
   2264     static const uint32_t bcHeight{ 1 };
   2265 
   2266     typedef TransposeSingleComponent<16> TransposeT;
   2267     typedef Format1<16>                  FormatT;
   2268 };
   2269 
   2270 //////////////////////////////////////////////////////////////////////////
   2271 /// FormatTraits<L16_FLOAT> - Format traits specialization for L16_FLOAT
   2272 //////////////////////////////////////////////////////////////////////////
   2273 template<> struct FormatTraits<L16_FLOAT> :
   2274     ComponentTraits<SWR_TYPE_FLOAT, 16>,
   2275     FormatSwizzle<0>,
   2276     Defaults<0, 0, 0, 0x3f800000>
   2277 {
   2278     static const uint32_t bpp{ 16 };
   2279     static const uint32_t numComps{ 1 };
   2280     static const bool hasAlpha{ false };
   2281     static const uint32_t alphaComp{ 0 };
   2282     static const bool isSRGB{ false };
   2283     static const bool isBC{ false };
   2284     static const bool isSubsampled{ false };
   2285     static const uint32_t bcWidth{ 1 };
   2286     static const uint32_t bcHeight{ 1 };
   2287 
   2288     typedef TransposeSingleComponent<16> TransposeT;
   2289     typedef Format1<16>                  FormatT;
   2290 };
   2291 
   2292 //////////////////////////////////////////////////////////////////////////
   2293 /// FormatTraits<A16_FLOAT> - Format traits specialization for A16_FLOAT
   2294 //////////////////////////////////////////////////////////////////////////
   2295 template<> struct FormatTraits<A16_FLOAT> :
   2296     ComponentTraits<SWR_TYPE_FLOAT, 16>,
   2297     FormatSwizzle<3>,
   2298     Defaults<0, 0, 0, 0x3f800000>
   2299 {
   2300     static const uint32_t bpp{ 16 };
   2301     static const uint32_t numComps{ 1 };
   2302     static const bool hasAlpha{ true };
   2303     static const uint32_t alphaComp{ 0 };
   2304     static const bool isSRGB{ false };
   2305     static const bool isBC{ false };
   2306     static const bool isSubsampled{ false };
   2307     static const uint32_t bcWidth{ 1 };
   2308     static const uint32_t bcHeight{ 1 };
   2309 
   2310     typedef TransposeSingleComponent<16> TransposeT;
   2311     typedef Format1<16>                  FormatT;
   2312 };
   2313 
   2314 //////////////////////////////////////////////////////////////////////////
   2315 /// FormatTraits<L8A8_UNORM_SRGB> - Format traits specialization for L8A8_UNORM_SRGB
   2316 //////////////////////////////////////////////////////////////////////////
   2317 template<> struct FormatTraits<L8A8_UNORM_SRGB> :
   2318     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
   2319     FormatSwizzle<0, 3>,
   2320     Defaults<0, 0, 0, 0x3f800000>
   2321 {
   2322     static const uint32_t bpp{ 16 };
   2323     static const uint32_t numComps{ 2 };
   2324     static const bool hasAlpha{ true };
   2325     static const uint32_t alphaComp{ 1 };
   2326     static const bool isSRGB{ true };
   2327     static const bool isBC{ false };
   2328     static const bool isSubsampled{ false };
   2329     static const uint32_t bcWidth{ 1 };
   2330     static const uint32_t bcHeight{ 1 };
   2331 
   2332     typedef Transpose8_8  TransposeT;
   2333     typedef Format2<8, 8> FormatT;
   2334 };
   2335 
   2336 //////////////////////////////////////////////////////////////////////////
   2337 /// FormatTraits<B5G5R5X1_UNORM> - Format traits specialization for B5G5R5X1_UNORM
   2338 //////////////////////////////////////////////////////////////////////////
   2339 template<> struct FormatTraits<B5G5R5X1_UNORM> :
   2340     ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNUSED, 1>,
   2341     FormatSwizzle<2, 1, 0, 3>,
   2342     Defaults<0, 0, 0, 0x3f800000>
   2343 {
   2344     static const uint32_t bpp{ 16 };
   2345     static const uint32_t numComps{ 3 };
   2346     static const bool hasAlpha{ false };
   2347     static const uint32_t alphaComp{ 0 };
   2348     static const bool isSRGB{ false };
   2349     static const bool isBC{ false };
   2350     static const bool isSubsampled{ false };
   2351     static const uint32_t bcWidth{ 1 };
   2352     static const uint32_t bcHeight{ 1 };
   2353 
   2354     typedef Transpose5_5_5_1    TransposeT;
   2355     typedef Format4<5, 5, 5, 1> FormatT;
   2356 };
   2357 
   2358 //////////////////////////////////////////////////////////////////////////
   2359 /// FormatTraits<B5G5R5X1_UNORM_SRGB> - Format traits specialization for B5G5R5X1_UNORM_SRGB
   2360 //////////////////////////////////////////////////////////////////////////
   2361 template<> struct FormatTraits<B5G5R5X1_UNORM_SRGB> :
   2362     ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNUSED, 1>,
   2363     FormatSwizzle<2, 1, 0, 3>,
   2364     Defaults<0, 0, 0, 0x3f800000>
   2365 {
   2366     static const uint32_t bpp{ 16 };
   2367     static const uint32_t numComps{ 3 };
   2368     static const bool hasAlpha{ false };
   2369     static const uint32_t alphaComp{ 0 };
   2370     static const bool isSRGB{ true };
   2371     static const bool isBC{ false };
   2372     static const bool isSubsampled{ false };
   2373     static const uint32_t bcWidth{ 1 };
   2374     static const uint32_t bcHeight{ 1 };
   2375 
   2376     typedef Transpose5_5_5_1    TransposeT;
   2377     typedef Format4<5, 5, 5, 1> FormatT;
   2378 };
   2379 
   2380 //////////////////////////////////////////////////////////////////////////
   2381 /// FormatTraits<R8G8_SSCALED> - Format traits specialization for R8G8_SSCALED
   2382 //////////////////////////////////////////////////////////////////////////
   2383 template<> struct FormatTraits<R8G8_SSCALED> :
   2384     ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>,
   2385     FormatSwizzle<0, 1>,
   2386     Defaults<0, 0, 0, 0x3f800000>
   2387 {
   2388     static const uint32_t bpp{ 16 };
   2389     static const uint32_t numComps{ 2 };
   2390     static const bool hasAlpha{ false };
   2391     static const uint32_t alphaComp{ 0 };
   2392     static const bool isSRGB{ false };
   2393     static const bool isBC{ false };
   2394     static const bool isSubsampled{ false };
   2395     static const uint32_t bcWidth{ 1 };
   2396     static const uint32_t bcHeight{ 1 };
   2397 
   2398     typedef Transpose8_8  TransposeT;
   2399     typedef Format2<8, 8> FormatT;
   2400 };
   2401 
   2402 //////////////////////////////////////////////////////////////////////////
   2403 /// FormatTraits<R8G8_USCALED> - Format traits specialization for R8G8_USCALED
   2404 //////////////////////////////////////////////////////////////////////////
   2405 template<> struct FormatTraits<R8G8_USCALED> :
   2406     ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>,
   2407     FormatSwizzle<0, 1>,
   2408     Defaults<0, 0, 0, 0x3f800000>
   2409 {
   2410     static const uint32_t bpp{ 16 };
   2411     static const uint32_t numComps{ 2 };
   2412     static const bool hasAlpha{ false };
   2413     static const uint32_t alphaComp{ 0 };
   2414     static const bool isSRGB{ false };
   2415     static const bool isBC{ false };
   2416     static const bool isSubsampled{ false };
   2417     static const uint32_t bcWidth{ 1 };
   2418     static const uint32_t bcHeight{ 1 };
   2419 
   2420     typedef Transpose8_8  TransposeT;
   2421     typedef Format2<8, 8> FormatT;
   2422 };
   2423 
   2424 //////////////////////////////////////////////////////////////////////////
   2425 /// FormatTraits<R16_SSCALED> - Format traits specialization for R16_SSCALED
   2426 //////////////////////////////////////////////////////////////////////////
   2427 template<> struct FormatTraits<R16_SSCALED> :
   2428     ComponentTraits<SWR_TYPE_SSCALED, 16>,
   2429     FormatSwizzle<0>,
   2430     Defaults<0, 0, 0, 0x3f800000>
   2431 {
   2432     static const uint32_t bpp{ 16 };
   2433     static const uint32_t numComps{ 1 };
   2434     static const bool hasAlpha{ false };
   2435     static const uint32_t alphaComp{ 0 };
   2436     static const bool isSRGB{ false };
   2437     static const bool isBC{ false };
   2438     static const bool isSubsampled{ false };
   2439     static const uint32_t bcWidth{ 1 };
   2440     static const uint32_t bcHeight{ 1 };
   2441 
   2442     typedef TransposeSingleComponent<16> TransposeT;
   2443     typedef Format1<16>                  FormatT;
   2444 };
   2445 
   2446 //////////////////////////////////////////////////////////////////////////
   2447 /// FormatTraits<R16_USCALED> - Format traits specialization for R16_USCALED
   2448 //////////////////////////////////////////////////////////////////////////
   2449 template<> struct FormatTraits<R16_USCALED> :
   2450     ComponentTraits<SWR_TYPE_USCALED, 16>,
   2451     FormatSwizzle<0>,
   2452     Defaults<0, 0, 0, 0x3f800000>
   2453 {
   2454     static const uint32_t bpp{ 16 };
   2455     static const uint32_t numComps{ 1 };
   2456     static const bool hasAlpha{ false };
   2457     static const uint32_t alphaComp{ 0 };
   2458     static const bool isSRGB{ false };
   2459     static const bool isBC{ false };
   2460     static const bool isSubsampled{ false };
   2461     static const uint32_t bcWidth{ 1 };
   2462     static const uint32_t bcHeight{ 1 };
   2463 
   2464     typedef TransposeSingleComponent<16> TransposeT;
   2465     typedef Format1<16>                  FormatT;
   2466 };
   2467 
   2468 //////////////////////////////////////////////////////////////////////////
   2469 /// FormatTraits<A1B5G5R5_UNORM> - Format traits specialization for A1B5G5R5_UNORM
   2470 //////////////////////////////////////////////////////////////////////////
   2471 template<> struct FormatTraits<A1B5G5R5_UNORM> :
   2472     ComponentTraits<SWR_TYPE_UNORM, 1, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5>,
   2473     FormatSwizzle<3, 2, 1, 0>,
   2474     Defaults<0, 0, 0, 0x3f800000>
   2475 {
   2476     static const uint32_t bpp{ 16 };
   2477     static const uint32_t numComps{ 4 };
   2478     static const bool hasAlpha{ true };
   2479     static const uint32_t alphaComp{ 3 };
   2480     static const bool isSRGB{ false };
   2481     static const bool isBC{ false };
   2482     static const bool isSubsampled{ false };
   2483     static const uint32_t bcWidth{ 1 };
   2484     static const uint32_t bcHeight{ 1 };
   2485 
   2486     typedef Transpose1_5_5_5    TransposeT;
   2487     typedef Format4<1, 5, 5, 5> FormatT;
   2488 };
   2489 
   2490 //////////////////////////////////////////////////////////////////////////
   2491 /// FormatTraits<A4B4G4R4_UNORM> - Format traits specialization for A4B4G4R4_UNORM
   2492 //////////////////////////////////////////////////////////////////////////
   2493 template<> struct FormatTraits<A4B4G4R4_UNORM> :
   2494     ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>,
   2495     FormatSwizzle<3, 2, 1, 0>,
   2496     Defaults<0, 0, 0, 0x3f800000>
   2497 {
   2498     static const uint32_t bpp{ 16 };
   2499     static const uint32_t numComps{ 4 };
   2500     static const bool hasAlpha{ true };
   2501     static const uint32_t alphaComp{ 3 };
   2502     static const bool isSRGB{ false };
   2503     static const bool isBC{ false };
   2504     static const bool isSubsampled{ false };
   2505     static const uint32_t bcWidth{ 1 };
   2506     static const uint32_t bcHeight{ 1 };
   2507 
   2508     typedef Transpose4_4_4_4    TransposeT;
   2509     typedef Format4<4, 4, 4, 4> FormatT;
   2510 };
   2511 
   2512 //////////////////////////////////////////////////////////////////////////
   2513 /// FormatTraits<L8A8_UINT> - Format traits specialization for L8A8_UINT
   2514 //////////////////////////////////////////////////////////////////////////
   2515 template<> struct FormatTraits<L8A8_UINT> :
   2516     ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
   2517     FormatSwizzle<0, 3>,
   2518     Defaults<0, 0, 0, 0x1>
   2519 {
   2520     static const uint32_t bpp{ 16 };
   2521     static const uint32_t numComps{ 2 };
   2522     static const bool hasAlpha{ true };
   2523     static const uint32_t alphaComp{ 1 };
   2524     static const bool isSRGB{ false };
   2525     static const bool isBC{ false };
   2526     static const bool isSubsampled{ false };
   2527     static const uint32_t bcWidth{ 1 };
   2528     static const uint32_t bcHeight{ 1 };
   2529 
   2530     typedef Transpose8_8  TransposeT;
   2531     typedef Format2<8, 8> FormatT;
   2532 };
   2533 
   2534 //////////////////////////////////////////////////////////////////////////
   2535 /// FormatTraits<L8A8_SINT> - Format traits specialization for L8A8_SINT
   2536 //////////////////////////////////////////////////////////////////////////
   2537 template<> struct FormatTraits<L8A8_SINT> :
   2538     ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>,
   2539     FormatSwizzle<0, 3>,
   2540     Defaults<0, 0, 0, 0x1>
   2541 {
   2542     static const uint32_t bpp{ 16 };
   2543     static const uint32_t numComps{ 2 };
   2544     static const bool hasAlpha{ true };
   2545     static const uint32_t alphaComp{ 1 };
   2546     static const bool isSRGB{ false };
   2547     static const bool isBC{ false };
   2548     static const bool isSubsampled{ false };
   2549     static const uint32_t bcWidth{ 1 };
   2550     static const uint32_t bcHeight{ 1 };
   2551 
   2552     typedef Transpose8_8  TransposeT;
   2553     typedef Format2<8, 8> FormatT;
   2554 };
   2555 
   2556 //////////////////////////////////////////////////////////////////////////
   2557 /// FormatTraits<R8_UNORM> - Format traits specialization for R8_UNORM
   2558 //////////////////////////////////////////////////////////////////////////
   2559 template<> struct FormatTraits<R8_UNORM> :
   2560     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2561     FormatSwizzle<0>,
   2562     Defaults<0, 0, 0, 0x3f800000>
   2563 {
   2564     static const uint32_t bpp{ 8 };
   2565     static const uint32_t numComps{ 1 };
   2566     static const bool hasAlpha{ false };
   2567     static const uint32_t alphaComp{ 0 };
   2568     static const bool isSRGB{ false };
   2569     static const bool isBC{ false };
   2570     static const bool isSubsampled{ false };
   2571     static const uint32_t bcWidth{ 1 };
   2572     static const uint32_t bcHeight{ 1 };
   2573 
   2574     typedef TransposeSingleComponent<8> TransposeT;
   2575     typedef Format1<8>                  FormatT;
   2576 };
   2577 
   2578 //////////////////////////////////////////////////////////////////////////
   2579 /// FormatTraits<R8_SNORM> - Format traits specialization for R8_SNORM
   2580 //////////////////////////////////////////////////////////////////////////
   2581 template<> struct FormatTraits<R8_SNORM> :
   2582     ComponentTraits<SWR_TYPE_SNORM, 8>,
   2583     FormatSwizzle<0>,
   2584     Defaults<0, 0, 0, 0x3f800000>
   2585 {
   2586     static const uint32_t bpp{ 8 };
   2587     static const uint32_t numComps{ 1 };
   2588     static const bool hasAlpha{ false };
   2589     static const uint32_t alphaComp{ 0 };
   2590     static const bool isSRGB{ false };
   2591     static const bool isBC{ false };
   2592     static const bool isSubsampled{ false };
   2593     static const uint32_t bcWidth{ 1 };
   2594     static const uint32_t bcHeight{ 1 };
   2595 
   2596     typedef TransposeSingleComponent<8> TransposeT;
   2597     typedef Format1<8>                  FormatT;
   2598 };
   2599 
   2600 //////////////////////////////////////////////////////////////////////////
   2601 /// FormatTraits<R8_SINT> - Format traits specialization for R8_SINT
   2602 //////////////////////////////////////////////////////////////////////////
   2603 template<> struct FormatTraits<R8_SINT> :
   2604     ComponentTraits<SWR_TYPE_SINT, 8>,
   2605     FormatSwizzle<0>,
   2606     Defaults<0, 0, 0, 0x1>
   2607 {
   2608     static const uint32_t bpp{ 8 };
   2609     static const uint32_t numComps{ 1 };
   2610     static const bool hasAlpha{ false };
   2611     static const uint32_t alphaComp{ 0 };
   2612     static const bool isSRGB{ false };
   2613     static const bool isBC{ false };
   2614     static const bool isSubsampled{ false };
   2615     static const uint32_t bcWidth{ 1 };
   2616     static const uint32_t bcHeight{ 1 };
   2617 
   2618     typedef TransposeSingleComponent<8> TransposeT;
   2619     typedef Format1<8>                  FormatT;
   2620 };
   2621 
   2622 //////////////////////////////////////////////////////////////////////////
   2623 /// FormatTraits<R8_UINT> - Format traits specialization for R8_UINT
   2624 //////////////////////////////////////////////////////////////////////////
   2625 template<> struct FormatTraits<R8_UINT> :
   2626     ComponentTraits<SWR_TYPE_UINT, 8>,
   2627     FormatSwizzle<0>,
   2628     Defaults<0, 0, 0, 0x1>
   2629 {
   2630     static const uint32_t bpp{ 8 };
   2631     static const uint32_t numComps{ 1 };
   2632     static const bool hasAlpha{ false };
   2633     static const uint32_t alphaComp{ 0 };
   2634     static const bool isSRGB{ false };
   2635     static const bool isBC{ false };
   2636     static const bool isSubsampled{ false };
   2637     static const uint32_t bcWidth{ 1 };
   2638     static const uint32_t bcHeight{ 1 };
   2639 
   2640     typedef TransposeSingleComponent<8> TransposeT;
   2641     typedef Format1<8>                  FormatT;
   2642 };
   2643 
   2644 //////////////////////////////////////////////////////////////////////////
   2645 /// FormatTraits<A8_UNORM> - Format traits specialization for A8_UNORM
   2646 //////////////////////////////////////////////////////////////////////////
   2647 template<> struct FormatTraits<A8_UNORM> :
   2648     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2649     FormatSwizzle<3>,
   2650     Defaults<0, 0, 0, 0x3f800000>
   2651 {
   2652     static const uint32_t bpp{ 8 };
   2653     static const uint32_t numComps{ 1 };
   2654     static const bool hasAlpha{ true };
   2655     static const uint32_t alphaComp{ 0 };
   2656     static const bool isSRGB{ false };
   2657     static const bool isBC{ false };
   2658     static const bool isSubsampled{ false };
   2659     static const uint32_t bcWidth{ 1 };
   2660     static const uint32_t bcHeight{ 1 };
   2661 
   2662     typedef TransposeSingleComponent<8> TransposeT;
   2663     typedef Format1<8>                  FormatT;
   2664 };
   2665 
   2666 //////////////////////////////////////////////////////////////////////////
   2667 /// FormatTraits<I8_UNORM> - Format traits specialization for I8_UNORM
   2668 //////////////////////////////////////////////////////////////////////////
   2669 template<> struct FormatTraits<I8_UNORM> :
   2670     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2671     FormatSwizzle<0>,
   2672     Defaults<0, 0, 0, 0x3f800000>
   2673 {
   2674     static const uint32_t bpp{ 8 };
   2675     static const uint32_t numComps{ 1 };
   2676     static const bool hasAlpha{ false };
   2677     static const uint32_t alphaComp{ 0 };
   2678     static const bool isSRGB{ false };
   2679     static const bool isBC{ false };
   2680     static const bool isSubsampled{ false };
   2681     static const uint32_t bcWidth{ 1 };
   2682     static const uint32_t bcHeight{ 1 };
   2683 
   2684     typedef TransposeSingleComponent<8> TransposeT;
   2685     typedef Format1<8>                  FormatT;
   2686 };
   2687 
   2688 //////////////////////////////////////////////////////////////////////////
   2689 /// FormatTraits<L8_UNORM> - Format traits specialization for L8_UNORM
   2690 //////////////////////////////////////////////////////////////////////////
   2691 template<> struct FormatTraits<L8_UNORM> :
   2692     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2693     FormatSwizzle<0>,
   2694     Defaults<0, 0, 0, 0x3f800000>
   2695 {
   2696     static const uint32_t bpp{ 8 };
   2697     static const uint32_t numComps{ 1 };
   2698     static const bool hasAlpha{ false };
   2699     static const uint32_t alphaComp{ 0 };
   2700     static const bool isSRGB{ false };
   2701     static const bool isBC{ false };
   2702     static const bool isSubsampled{ false };
   2703     static const uint32_t bcWidth{ 1 };
   2704     static const uint32_t bcHeight{ 1 };
   2705 
   2706     typedef TransposeSingleComponent<8> TransposeT;
   2707     typedef Format1<8>                  FormatT;
   2708 };
   2709 
   2710 //////////////////////////////////////////////////////////////////////////
   2711 /// FormatTraits<R8_SSCALED> - Format traits specialization for R8_SSCALED
   2712 //////////////////////////////////////////////////////////////////////////
   2713 template<> struct FormatTraits<R8_SSCALED> :
   2714     ComponentTraits<SWR_TYPE_SSCALED, 8>,
   2715     FormatSwizzle<0>,
   2716     Defaults<0, 0, 0, 0x3f800000>
   2717 {
   2718     static const uint32_t bpp{ 8 };
   2719     static const uint32_t numComps{ 1 };
   2720     static const bool hasAlpha{ false };
   2721     static const uint32_t alphaComp{ 0 };
   2722     static const bool isSRGB{ false };
   2723     static const bool isBC{ false };
   2724     static const bool isSubsampled{ false };
   2725     static const uint32_t bcWidth{ 1 };
   2726     static const uint32_t bcHeight{ 1 };
   2727 
   2728     typedef TransposeSingleComponent<8> TransposeT;
   2729     typedef Format1<8>                  FormatT;
   2730 };
   2731 
   2732 //////////////////////////////////////////////////////////////////////////
   2733 /// FormatTraits<R8_USCALED> - Format traits specialization for R8_USCALED
   2734 //////////////////////////////////////////////////////////////////////////
   2735 template<> struct FormatTraits<R8_USCALED> :
   2736     ComponentTraits<SWR_TYPE_USCALED, 8>,
   2737     FormatSwizzle<0>,
   2738     Defaults<0, 0, 0, 0x3f800000>
   2739 {
   2740     static const uint32_t bpp{ 8 };
   2741     static const uint32_t numComps{ 1 };
   2742     static const bool hasAlpha{ false };
   2743     static const uint32_t alphaComp{ 0 };
   2744     static const bool isSRGB{ false };
   2745     static const bool isBC{ false };
   2746     static const bool isSubsampled{ false };
   2747     static const uint32_t bcWidth{ 1 };
   2748     static const uint32_t bcHeight{ 1 };
   2749 
   2750     typedef TransposeSingleComponent<8> TransposeT;
   2751     typedef Format1<8>                  FormatT;
   2752 };
   2753 
   2754 //////////////////////////////////////////////////////////////////////////
   2755 /// FormatTraits<L8_UNORM_SRGB> - Format traits specialization for L8_UNORM_SRGB
   2756 //////////////////////////////////////////////////////////////////////////
   2757 template<> struct FormatTraits<L8_UNORM_SRGB> :
   2758     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2759     FormatSwizzle<0>,
   2760     Defaults<0, 0, 0, 0x3f800000>
   2761 {
   2762     static const uint32_t bpp{ 8 };
   2763     static const uint32_t numComps{ 1 };
   2764     static const bool hasAlpha{ false };
   2765     static const uint32_t alphaComp{ 0 };
   2766     static const bool isSRGB{ true };
   2767     static const bool isBC{ false };
   2768     static const bool isSubsampled{ false };
   2769     static const uint32_t bcWidth{ 1 };
   2770     static const uint32_t bcHeight{ 1 };
   2771 
   2772     typedef TransposeSingleComponent<8> TransposeT;
   2773     typedef Format1<8>                  FormatT;
   2774 };
   2775 
   2776 //////////////////////////////////////////////////////////////////////////
   2777 /// FormatTraits<L8_UINT> - Format traits specialization for L8_UINT
   2778 //////////////////////////////////////////////////////////////////////////
   2779 template<> struct FormatTraits<L8_UINT> :
   2780     ComponentTraits<SWR_TYPE_UINT, 8>,
   2781     FormatSwizzle<0>,
   2782     Defaults<0, 0, 0, 0x1>
   2783 {
   2784     static const uint32_t bpp{ 8 };
   2785     static const uint32_t numComps{ 1 };
   2786     static const bool hasAlpha{ false };
   2787     static const uint32_t alphaComp{ 0 };
   2788     static const bool isSRGB{ false };
   2789     static const bool isBC{ false };
   2790     static const bool isSubsampled{ false };
   2791     static const uint32_t bcWidth{ 1 };
   2792     static const uint32_t bcHeight{ 1 };
   2793 
   2794     typedef TransposeSingleComponent<8> TransposeT;
   2795     typedef Format1<8>                  FormatT;
   2796 };
   2797 
   2798 //////////////////////////////////////////////////////////////////////////
   2799 /// FormatTraits<L8_SINT> - Format traits specialization for L8_SINT
   2800 //////////////////////////////////////////////////////////////////////////
   2801 template<> struct FormatTraits<L8_SINT> :
   2802     ComponentTraits<SWR_TYPE_SINT, 8>,
   2803     FormatSwizzle<0>,
   2804     Defaults<0, 0, 0, 0x1>
   2805 {
   2806     static const uint32_t bpp{ 8 };
   2807     static const uint32_t numComps{ 1 };
   2808     static const bool hasAlpha{ false };
   2809     static const uint32_t alphaComp{ 0 };
   2810     static const bool isSRGB{ false };
   2811     static const bool isBC{ false };
   2812     static const bool isSubsampled{ false };
   2813     static const uint32_t bcWidth{ 1 };
   2814     static const uint32_t bcHeight{ 1 };
   2815 
   2816     typedef TransposeSingleComponent<8> TransposeT;
   2817     typedef Format1<8>                  FormatT;
   2818 };
   2819 
   2820 //////////////////////////////////////////////////////////////////////////
   2821 /// FormatTraits<I8_UINT> - Format traits specialization for I8_UINT
   2822 //////////////////////////////////////////////////////////////////////////
   2823 template<> struct FormatTraits<I8_UINT> :
   2824     ComponentTraits<SWR_TYPE_UINT, 8>,
   2825     FormatSwizzle<0>,
   2826     Defaults<0, 0, 0, 0x1>
   2827 {
   2828     static const uint32_t bpp{ 8 };
   2829     static const uint32_t numComps{ 1 };
   2830     static const bool hasAlpha{ false };
   2831     static const uint32_t alphaComp{ 0 };
   2832     static const bool isSRGB{ false };
   2833     static const bool isBC{ false };
   2834     static const bool isSubsampled{ false };
   2835     static const uint32_t bcWidth{ 1 };
   2836     static const uint32_t bcHeight{ 1 };
   2837 
   2838     typedef TransposeSingleComponent<8> TransposeT;
   2839     typedef Format1<8>                  FormatT;
   2840 };
   2841 
   2842 //////////////////////////////////////////////////////////////////////////
   2843 /// FormatTraits<I8_SINT> - Format traits specialization for I8_SINT
   2844 //////////////////////////////////////////////////////////////////////////
   2845 template<> struct FormatTraits<I8_SINT> :
   2846     ComponentTraits<SWR_TYPE_SINT, 8>,
   2847     FormatSwizzle<0>,
   2848     Defaults<0, 0, 0, 0x1>
   2849 {
   2850     static const uint32_t bpp{ 8 };
   2851     static const uint32_t numComps{ 1 };
   2852     static const bool hasAlpha{ false };
   2853     static const uint32_t alphaComp{ 0 };
   2854     static const bool isSRGB{ false };
   2855     static const bool isBC{ false };
   2856     static const bool isSubsampled{ false };
   2857     static const uint32_t bcWidth{ 1 };
   2858     static const uint32_t bcHeight{ 1 };
   2859 
   2860     typedef TransposeSingleComponent<8> TransposeT;
   2861     typedef Format1<8>                  FormatT;
   2862 };
   2863 
   2864 //////////////////////////////////////////////////////////////////////////
   2865 /// FormatTraits<DXT1_RGB_SRGB> - Format traits specialization for DXT1_RGB_SRGB
   2866 //////////////////////////////////////////////////////////////////////////
   2867 template<> struct FormatTraits<DXT1_RGB_SRGB> :
   2868     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2869     FormatSwizzle<0>,
   2870     Defaults<0, 0, 0, 0x3f800000>
   2871 {
   2872     static const uint32_t bpp{ 64 };
   2873     static const uint32_t numComps{ 1 };
   2874     static const bool hasAlpha{ true };
   2875     static const uint32_t alphaComp{ 3 };
   2876     static const bool isSRGB{ false };
   2877     static const bool isBC{ true };
   2878     static const bool isSubsampled{ false };
   2879     static const uint32_t bcWidth{ 4 };
   2880     static const uint32_t bcHeight{ 4 };
   2881 
   2882     typedef TransposeSingleComponent<8> TransposeT;
   2883     typedef Format1<8>                  FormatT;
   2884 };
   2885 
   2886 //////////////////////////////////////////////////////////////////////////
   2887 /// FormatTraits<YCRCB_SWAPUVY> - Format traits specialization for YCRCB_SWAPUVY
   2888 //////////////////////////////////////////////////////////////////////////
   2889 template<> struct FormatTraits<YCRCB_SWAPUVY> :
   2890     ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
   2891     FormatSwizzle<0, 1, 2, 3>,
   2892     Defaults<0, 0, 0, 0x1>
   2893 {
   2894     static const uint32_t bpp{ 32 };
   2895     static const uint32_t numComps{ 4 };
   2896     static const bool hasAlpha{ false };
   2897     static const uint32_t alphaComp{ 3 };
   2898     static const bool isSRGB{ false };
   2899     static const bool isBC{ false };
   2900     static const bool isSubsampled{ true };
   2901     static const uint32_t bcWidth{ 2 };
   2902     static const uint32_t bcHeight{ 1 };
   2903 
   2904     typedef Transpose8_8_8_8    TransposeT;
   2905     typedef Format4<8, 8, 8, 8> FormatT;
   2906 };
   2907 
   2908 //////////////////////////////////////////////////////////////////////////
   2909 /// FormatTraits<BC1_UNORM> - Format traits specialization for BC1_UNORM
   2910 //////////////////////////////////////////////////////////////////////////
   2911 template<> struct FormatTraits<BC1_UNORM> :
   2912     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2913     FormatSwizzle<0>,
   2914     Defaults<0, 0, 0, 0x3f800000>
   2915 {
   2916     static const uint32_t bpp{ 64 };
   2917     static const uint32_t numComps{ 1 };
   2918     static const bool hasAlpha{ true };
   2919     static const uint32_t alphaComp{ 3 };
   2920     static const bool isSRGB{ false };
   2921     static const bool isBC{ true };
   2922     static const bool isSubsampled{ false };
   2923     static const uint32_t bcWidth{ 4 };
   2924     static const uint32_t bcHeight{ 4 };
   2925 
   2926     typedef TransposeSingleComponent<8> TransposeT;
   2927     typedef Format1<8>                  FormatT;
   2928 };
   2929 
   2930 //////////////////////////////////////////////////////////////////////////
   2931 /// FormatTraits<BC2_UNORM> - Format traits specialization for BC2_UNORM
   2932 //////////////////////////////////////////////////////////////////////////
   2933 template<> struct FormatTraits<BC2_UNORM> :
   2934     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2935     FormatSwizzle<0>,
   2936     Defaults<0, 0, 0, 0x3f800000>
   2937 {
   2938     static const uint32_t bpp{ 128 };
   2939     static const uint32_t numComps{ 1 };
   2940     static const bool hasAlpha{ true };
   2941     static const uint32_t alphaComp{ 3 };
   2942     static const bool isSRGB{ false };
   2943     static const bool isBC{ true };
   2944     static const bool isSubsampled{ false };
   2945     static const uint32_t bcWidth{ 4 };
   2946     static const uint32_t bcHeight{ 4 };
   2947 
   2948     typedef TransposeSingleComponent<8> TransposeT;
   2949     typedef Format1<8>                  FormatT;
   2950 };
   2951 
   2952 //////////////////////////////////////////////////////////////////////////
   2953 /// FormatTraits<BC3_UNORM> - Format traits specialization for BC3_UNORM
   2954 //////////////////////////////////////////////////////////////////////////
   2955 template<> struct FormatTraits<BC3_UNORM> :
   2956     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2957     FormatSwizzle<0>,
   2958     Defaults<0, 0, 0, 0x3f800000>
   2959 {
   2960     static const uint32_t bpp{ 128 };
   2961     static const uint32_t numComps{ 1 };
   2962     static const bool hasAlpha{ true };
   2963     static const uint32_t alphaComp{ 3 };
   2964     static const bool isSRGB{ false };
   2965     static const bool isBC{ true };
   2966     static const bool isSubsampled{ false };
   2967     static const uint32_t bcWidth{ 4 };
   2968     static const uint32_t bcHeight{ 4 };
   2969 
   2970     typedef TransposeSingleComponent<8> TransposeT;
   2971     typedef Format1<8>                  FormatT;
   2972 };
   2973 
   2974 //////////////////////////////////////////////////////////////////////////
   2975 /// FormatTraits<BC4_UNORM> - Format traits specialization for BC4_UNORM
   2976 //////////////////////////////////////////////////////////////////////////
   2977 template<> struct FormatTraits<BC4_UNORM> :
   2978     ComponentTraits<SWR_TYPE_UNORM, 8>,
   2979     FormatSwizzle<0>,
   2980     Defaults<0, 0, 0, 0x3f800000>
   2981 {
   2982     static const uint32_t bpp{ 64 };
   2983     static const uint32_t numComps{ 1 };
   2984     static const bool hasAlpha{ true };
   2985     static const uint32_t alphaComp{ 3 };
   2986     static const bool isSRGB{ false };
   2987     static const bool isBC{ true };
   2988     static const bool isSubsampled{ false };
   2989     static const uint32_t bcWidth{ 4 };
   2990     static const uint32_t bcHeight{ 4 };
   2991 
   2992     typedef TransposeSingleComponent<8> TransposeT;
   2993     typedef Format1<8>                  FormatT;
   2994 };
   2995 
   2996 //////////////////////////////////////////////////////////////////////////
   2997 /// FormatTraits<BC5_UNORM> - Format traits specialization for BC5_UNORM
   2998 //////////////////////////////////////////////////////////////////////////
   2999 template<> struct FormatTraits<BC5_UNORM> :
   3000     ComponentTraits<SWR_TYPE_UNORM, 8>,
   3001     FormatSwizzle<0>,
   3002     Defaults<0, 0, 0, 0x3f800000>
   3003 {
   3004     static const uint32_t bpp{ 128 };
   3005     static const uint32_t numComps{ 1 };
   3006     static const bool hasAlpha{ true };
   3007     static const uint32_t alphaComp{ 3 };
   3008     static const bool isSRGB{ false };
   3009     static const bool isBC{ true };
   3010     static const bool isSubsampled{ false };
   3011     static const uint32_t bcWidth{ 4 };
   3012     static const uint32_t bcHeight{ 4 };
   3013 
   3014     typedef TransposeSingleComponent<8> TransposeT;
   3015     typedef Format1<8>                  FormatT;
   3016 };
   3017 
   3018 //////////////////////////////////////////////////////////////////////////
   3019 /// FormatTraits<BC1_UNORM_SRGB> - Format traits specialization for BC1_UNORM_SRGB
   3020 //////////////////////////////////////////////////////////////////////////
   3021 template<> struct FormatTraits<BC1_UNORM_SRGB> :
   3022     ComponentTraits<SWR_TYPE_UNORM, 8>,
   3023     FormatSwizzle<0>,
   3024     Defaults<0, 0, 0, 0x3f800000>
   3025 {
   3026     static const uint32_t bpp{ 64 };
   3027     static const uint32_t numComps{ 1 };
   3028     static const bool hasAlpha{ true };
   3029     static const uint32_t alphaComp{ 3 };
   3030     static const bool isSRGB{ true };
   3031     static const bool isBC{ true };
   3032     static const bool isSubsampled{ false };
   3033     static const uint32_t bcWidth{ 4 };
   3034     static const uint32_t bcHeight{ 4 };
   3035 
   3036     typedef TransposeSingleComponent<8> TransposeT;
   3037     typedef Format1<8>                  FormatT;
   3038 };
   3039 
   3040 //////////////////////////////////////////////////////////////////////////
   3041 /// FormatTraits<BC2_UNORM_SRGB> - Format traits specialization for BC2_UNORM_SRGB
   3042 //////////////////////////////////////////////////////////////////////////
   3043 template<> struct FormatTraits<BC2_UNORM_SRGB> :
   3044     ComponentTraits<SWR_TYPE_UNORM, 8>,
   3045     FormatSwizzle<0>,
   3046     Defaults<0, 0, 0, 0x3f800000>
   3047 {
   3048     static const uint32_t bpp{ 128 };
   3049     static const uint32_t numComps{ 1 };
   3050     static const bool hasAlpha{ true };
   3051     static const uint32_t alphaComp{ 3 };
   3052     static const bool isSRGB{ true };
   3053     static const bool isBC{ true };
   3054     static const bool isSubsampled{ false };
   3055     static const uint32_t bcWidth{ 4 };
   3056     static const uint32_t bcHeight{ 4 };
   3057 
   3058     typedef TransposeSingleComponent<8> TransposeT;
   3059     typedef Format1<8>                  FormatT;
   3060 };
   3061 
   3062 //////////////////////////////////////////////////////////////////////////
   3063 /// FormatTraits<BC3_UNORM_SRGB> - Format traits specialization for BC3_UNORM_SRGB
   3064 //////////////////////////////////////////////////////////////////////////
   3065 template<> struct FormatTraits<BC3_UNORM_SRGB> :
   3066     ComponentTraits<SWR_TYPE_UNORM, 8>,
   3067     FormatSwizzle<0>,
   3068     Defaults<0, 0, 0, 0x3f800000>
   3069 {
   3070     static const uint32_t bpp{ 128 };
   3071     static const uint32_t numComps{ 1 };
   3072     static const bool hasAlpha{ true };
   3073     static const uint32_t alphaComp{ 3 };
   3074     static const bool isSRGB{ true };
   3075     static const bool isBC{ true };
   3076     static const bool isSubsampled{ false };
   3077     static const uint32_t bcWidth{ 4 };
   3078     static const uint32_t bcHeight{ 4 };
   3079 
   3080     typedef TransposeSingleComponent<8> TransposeT;
   3081     typedef Format1<8>                  FormatT;
   3082 };
   3083 
   3084 //////////////////////////////////////////////////////////////////////////
   3085 /// FormatTraits<YCRCB_SWAPUV> - Format traits specialization for YCRCB_SWAPUV
   3086 //////////////////////////////////////////////////////////////////////////
   3087 template<> struct FormatTraits<YCRCB_SWAPUV> :
   3088     ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
   3089     FormatSwizzle<0, 1, 2, 3>,
   3090     Defaults<0, 0, 0, 0x1>
   3091 {
   3092     static const uint32_t bpp{ 32 };
   3093     static const uint32_t numComps{ 4 };
   3094     static const bool hasAlpha{ false };
   3095     static const uint32_t alphaComp{ 3 };
   3096     static const bool isSRGB{ false };
   3097     static const bool isBC{ false };
   3098     static const bool isSubsampled{ true };
   3099     static const uint32_t bcWidth{ 2 };
   3100     static const uint32_t bcHeight{ 1 };
   3101 
   3102     typedef Transpose8_8_8_8    TransposeT;
   3103     typedef Format4<8, 8, 8, 8> FormatT;
   3104 };
   3105 
   3106 //////////////////////////////////////////////////////////////////////////
   3107 /// FormatTraits<DXT1_RGB> - Format traits specialization for DXT1_RGB
   3108 //////////////////////////////////////////////////////////////////////////
   3109 template<> struct FormatTraits<DXT1_RGB> :
   3110     ComponentTraits<SWR_TYPE_UNORM, 8>,
   3111     FormatSwizzle<0>,
   3112     Defaults<0, 0, 0, 0x3f800000>
   3113 {
   3114     static const uint32_t bpp{ 64 };
   3115     static const uint32_t numComps{ 1 };
   3116     static const bool hasAlpha{ true };
   3117     static const uint32_t alphaComp{ 3 };
   3118     static const bool isSRGB{ false };
   3119     static const bool isBC{ true };
   3120     static const bool isSubsampled{ false };
   3121     static const uint32_t bcWidth{ 4 };
   3122     static const uint32_t bcHeight{ 4 };
   3123 
   3124     typedef TransposeSingleComponent<8> TransposeT;
   3125     typedef Format1<8>                  FormatT;
   3126 };
   3127 
   3128 //////////////////////////////////////////////////////////////////////////
   3129 /// FormatTraits<R8G8B8_UNORM> - Format traits specialization for R8G8B8_UNORM
   3130 //////////////////////////////////////////////////////////////////////////
   3131 template<> struct FormatTraits<R8G8B8_UNORM> :
   3132     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
   3133     FormatSwizzle<0, 1, 2>,
   3134     Defaults<0, 0, 0, 0x3f800000>
   3135 {
   3136     static const uint32_t bpp{ 24 };
   3137     static const uint32_t numComps{ 3 };
   3138     static const bool hasAlpha{ false };
   3139     static const uint32_t alphaComp{ 0 };
   3140     static const bool isSRGB{ false };
   3141     static const bool isBC{ false };
   3142     static const bool isSubsampled{ false };
   3143     static const uint32_t bcWidth{ 1 };
   3144     static const uint32_t bcHeight{ 1 };
   3145 
   3146     typedef Transpose8_8_8   TransposeT;
   3147     typedef Format3<8, 8, 8> FormatT;
   3148 };
   3149 
   3150 //////////////////////////////////////////////////////////////////////////
   3151 /// FormatTraits<R8G8B8_SNORM> - Format traits specialization for R8G8B8_SNORM
   3152 //////////////////////////////////////////////////////////////////////////
   3153 template<> struct FormatTraits<R8G8B8_SNORM> :
   3154     ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>,
   3155     FormatSwizzle<0, 1, 2>,
   3156     Defaults<0, 0, 0, 0x3f800000>
   3157 {
   3158     static const uint32_t bpp{ 24 };
   3159     static const uint32_t numComps{ 3 };
   3160     static const bool hasAlpha{ false };
   3161     static const uint32_t alphaComp{ 0 };
   3162     static const bool isSRGB{ false };
   3163     static const bool isBC{ false };
   3164     static const bool isSubsampled{ false };
   3165     static const uint32_t bcWidth{ 1 };
   3166     static const uint32_t bcHeight{ 1 };
   3167 
   3168     typedef Transpose8_8_8   TransposeT;
   3169     typedef Format3<8, 8, 8> FormatT;
   3170 };
   3171 
   3172 //////////////////////////////////////////////////////////////////////////
   3173 /// FormatTraits<R8G8B8_SSCALED> - Format traits specialization for R8G8B8_SSCALED
   3174 //////////////////////////////////////////////////////////////////////////
   3175 template<> struct FormatTraits<R8G8B8_SSCALED> :
   3176     ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>,
   3177     FormatSwizzle<0, 1, 2>,
   3178     Defaults<0, 0, 0, 0x3f800000>
   3179 {
   3180     static const uint32_t bpp{ 24 };
   3181     static const uint32_t numComps{ 3 };
   3182     static const bool hasAlpha{ false };
   3183     static const uint32_t alphaComp{ 0 };
   3184     static const bool isSRGB{ false };
   3185     static const bool isBC{ false };
   3186     static const bool isSubsampled{ false };
   3187     static const uint32_t bcWidth{ 1 };
   3188     static const uint32_t bcHeight{ 1 };
   3189 
   3190     typedef Transpose8_8_8   TransposeT;
   3191     typedef Format3<8, 8, 8> FormatT;
   3192 };
   3193 
   3194 //////////////////////////////////////////////////////////////////////////
   3195 /// FormatTraits<R8G8B8_USCALED> - Format traits specialization for R8G8B8_USCALED
   3196 //////////////////////////////////////////////////////////////////////////
   3197 template<> struct FormatTraits<R8G8B8_USCALED> :
   3198     ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>,
   3199     FormatSwizzle<0, 1, 2>,
   3200     Defaults<0, 0, 0, 0x3f800000>
   3201 {
   3202     static const uint32_t bpp{ 24 };
   3203     static const uint32_t numComps{ 3 };
   3204     static const bool hasAlpha{ false };
   3205     static const uint32_t alphaComp{ 0 };
   3206     static const bool isSRGB{ false };
   3207     static const bool isBC{ false };
   3208     static const bool isSubsampled{ false };
   3209     static const uint32_t bcWidth{ 1 };
   3210     static const uint32_t bcHeight{ 1 };
   3211 
   3212     typedef Transpose8_8_8   TransposeT;
   3213     typedef Format3<8, 8, 8> FormatT;
   3214 };
   3215 
   3216 //////////////////////////////////////////////////////////////////////////
   3217 /// FormatTraits<R64G64B64A64_FLOAT> - Format traits specialization for R64G64B64A64_FLOAT
   3218 //////////////////////////////////////////////////////////////////////////
   3219 template<> struct FormatTraits<R64G64B64A64_FLOAT> :
   3220     ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>,
   3221     FormatSwizzle<0, 1, 2, 3>,
   3222     Defaults<0, 0, 0, 0x3f800000>
   3223 {
   3224     static const uint32_t bpp{ 256 };
   3225     static const uint32_t numComps{ 4 };
   3226     static const bool hasAlpha{ true };
   3227     static const uint32_t alphaComp{ 3 };
   3228     static const bool isSRGB{ false };
   3229     static const bool isBC{ false };
   3230     static const bool isSubsampled{ false };
   3231     static const uint32_t bcWidth{ 1 };
   3232     static const uint32_t bcHeight{ 1 };
   3233 
   3234     typedef Transpose64_64_64_64    TransposeT;
   3235     typedef Format4<64, 64, 64, 64> FormatT;
   3236 };
   3237 
   3238 //////////////////////////////////////////////////////////////////////////
   3239 /// FormatTraits<R64G64B64_FLOAT> - Format traits specialization for R64G64B64_FLOAT
   3240 //////////////////////////////////////////////////////////////////////////
   3241 template<> struct FormatTraits<R64G64B64_FLOAT> :
   3242     ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>,
   3243     FormatSwizzle<0, 1, 2>,
   3244     Defaults<0, 0, 0, 0x3f800000>
   3245 {
   3246     static const uint32_t bpp{ 192 };
   3247     static const uint32_t numComps{ 3 };
   3248     static const bool hasAlpha{ false };
   3249     static const uint32_t alphaComp{ 0 };
   3250     static const bool isSRGB{ false };
   3251     static const bool isBC{ false };
   3252     static const bool isSubsampled{ false };
   3253     static const uint32_t bcWidth{ 1 };
   3254     static const uint32_t bcHeight{ 1 };
   3255 
   3256     typedef Transpose64_64_64   TransposeT;
   3257     typedef Format3<64, 64, 64> FormatT;
   3258 };
   3259 
   3260 //////////////////////////////////////////////////////////////////////////
   3261 /// FormatTraits<BC4_SNORM> - Format traits specialization for BC4_SNORM
   3262 //////////////////////////////////////////////////////////////////////////
   3263 template<> struct FormatTraits<BC4_SNORM> :
   3264     ComponentTraits<SWR_TYPE_SNORM, 8>,
   3265     FormatSwizzle<0>,
   3266     Defaults<0, 0, 0, 0x3f800000>
   3267 {
   3268     static const uint32_t bpp{ 64 };
   3269     static const uint32_t numComps{ 1 };
   3270     static const bool hasAlpha{ true };
   3271     static const uint32_t alphaComp{ 3 };
   3272     static const bool isSRGB{ false };
   3273     static const bool isBC{ true };
   3274     static const bool isSubsampled{ false };
   3275     static const uint32_t bcWidth{ 4 };
   3276     static const uint32_t bcHeight{ 4 };
   3277 
   3278     typedef TransposeSingleComponent<8> TransposeT;
   3279     typedef Format1<8>                  FormatT;
   3280 };
   3281 
   3282 //////////////////////////////////////////////////////////////////////////
   3283 /// FormatTraits<BC5_SNORM> - Format traits specialization for BC5_SNORM
   3284 //////////////////////////////////////////////////////////////////////////
   3285 template<> struct FormatTraits<BC5_SNORM> :
   3286     ComponentTraits<SWR_TYPE_SNORM, 8>,
   3287     FormatSwizzle<0>,
   3288     Defaults<0, 0, 0, 0x3f800000>
   3289 {
   3290     static const uint32_t bpp{ 128 };
   3291     static const uint32_t numComps{ 1 };
   3292     static const bool hasAlpha{ true };
   3293     static const uint32_t alphaComp{ 3 };
   3294     static const bool isSRGB{ false };
   3295     static const bool isBC{ true };
   3296     static const bool isSubsampled{ false };
   3297     static const uint32_t bcWidth{ 4 };
   3298     static const uint32_t bcHeight{ 4 };
   3299 
   3300     typedef TransposeSingleComponent<8> TransposeT;
   3301     typedef Format1<8>                  FormatT;
   3302 };
   3303 
   3304 //////////////////////////////////////////////////////////////////////////
   3305 /// FormatTraits<R16G16B16_FLOAT> - Format traits specialization for R16G16B16_FLOAT
   3306 //////////////////////////////////////////////////////////////////////////
   3307 template<> struct FormatTraits<R16G16B16_FLOAT> :
   3308     ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>,
   3309     FormatSwizzle<0, 1, 2>,
   3310     Defaults<0, 0, 0, 0x3f800000>
   3311 {
   3312     static const uint32_t bpp{ 48 };
   3313     static const uint32_t numComps{ 3 };
   3314     static const bool hasAlpha{ false };
   3315     static const uint32_t alphaComp{ 0 };
   3316     static const bool isSRGB{ false };
   3317     static const bool isBC{ false };
   3318     static const bool isSubsampled{ false };
   3319     static const uint32_t bcWidth{ 1 };
   3320     static const uint32_t bcHeight{ 1 };
   3321 
   3322     typedef Transpose16_16_16   TransposeT;
   3323     typedef Format3<16, 16, 16> FormatT;
   3324 };
   3325 
   3326 //////////////////////////////////////////////////////////////////////////
   3327 /// FormatTraits<R16G16B16_UNORM> - Format traits specialization for R16G16B16_UNORM
   3328 //////////////////////////////////////////////////////////////////////////
   3329 template<> struct FormatTraits<R16G16B16_UNORM> :
   3330     ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>,
   3331     FormatSwizzle<0, 1, 2>,
   3332     Defaults<0, 0, 0, 0x3f800000>
   3333 {
   3334     static const uint32_t bpp{ 48 };
   3335     static const uint32_t numComps{ 3 };
   3336     static const bool hasAlpha{ false };
   3337     static const uint32_t alphaComp{ 0 };
   3338     static const bool isSRGB{ false };
   3339     static const bool isBC{ false };
   3340     static const bool isSubsampled{ false };
   3341     static const uint32_t bcWidth{ 1 };
   3342     static const uint32_t bcHeight{ 1 };
   3343 
   3344     typedef Transpose16_16_16   TransposeT;
   3345     typedef Format3<16, 16, 16> FormatT;
   3346 };
   3347 
   3348 //////////////////////////////////////////////////////////////////////////
   3349 /// FormatTraits<R16G16B16_SNORM> - Format traits specialization for R16G16B16_SNORM
   3350 //////////////////////////////////////////////////////////////////////////
   3351 template<> struct FormatTraits<R16G16B16_SNORM> :
   3352     ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>,
   3353     FormatSwizzle<0, 1, 2>,
   3354     Defaults<0, 0, 0, 0x3f800000>
   3355 {
   3356     static const uint32_t bpp{ 48 };
   3357     static const uint32_t numComps{ 3 };
   3358     static const bool hasAlpha{ false };
   3359     static const uint32_t alphaComp{ 0 };
   3360     static const bool isSRGB{ false };
   3361     static const bool isBC{ false };
   3362     static const bool isSubsampled{ false };
   3363     static const uint32_t bcWidth{ 1 };
   3364     static const uint32_t bcHeight{ 1 };
   3365 
   3366     typedef Transpose16_16_16   TransposeT;
   3367     typedef Format3<16, 16, 16> FormatT;
   3368 };
   3369 
   3370 //////////////////////////////////////////////////////////////////////////
   3371 /// FormatTraits<R16G16B16_SSCALED> - Format traits specialization for R16G16B16_SSCALED
   3372 //////////////////////////////////////////////////////////////////////////
   3373 template<> struct FormatTraits<R16G16B16_SSCALED> :
   3374     ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>,
   3375     FormatSwizzle<0, 1, 2>,
   3376     Defaults<0, 0, 0, 0x3f800000>
   3377 {
   3378     static const uint32_t bpp{ 48 };
   3379     static const uint32_t numComps{ 3 };
   3380     static const bool hasAlpha{ false };
   3381     static const uint32_t alphaComp{ 0 };
   3382     static const bool isSRGB{ false };
   3383     static const bool isBC{ false };
   3384     static const bool isSubsampled{ false };
   3385     static const uint32_t bcWidth{ 1 };
   3386     static const uint32_t bcHeight{ 1 };
   3387 
   3388     typedef Transpose16_16_16   TransposeT;
   3389     typedef Format3<16, 16, 16> FormatT;
   3390 };
   3391 
   3392 //////////////////////////////////////////////////////////////////////////
   3393 /// FormatTraits<R16G16B16_USCALED> - Format traits specialization for R16G16B16_USCALED
   3394 //////////////////////////////////////////////////////////////////////////
   3395 template<> struct FormatTraits<R16G16B16_USCALED> :
   3396     ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>,
   3397     FormatSwizzle<0, 1, 2>,
   3398     Defaults<0, 0, 0, 0x3f800000>
   3399 {
   3400     static const uint32_t bpp{ 48 };
   3401     static const uint32_t numComps{ 3 };
   3402     static const bool hasAlpha{ false };
   3403     static const uint32_t alphaComp{ 0 };
   3404     static const bool isSRGB{ false };
   3405     static const bool isBC{ false };
   3406     static const bool isSubsampled{ false };
   3407     static const uint32_t bcWidth{ 1 };
   3408     static const uint32_t bcHeight{ 1 };
   3409 
   3410     typedef Transpose16_16_16   TransposeT;
   3411     typedef Format3<16, 16, 16> FormatT;
   3412 };
   3413 
   3414 //////////////////////////////////////////////////////////////////////////
   3415 /// FormatTraits<BC6H_SF16> - Format traits specialization for BC6H_SF16
   3416 //////////////////////////////////////////////////////////////////////////
   3417 template<> struct FormatTraits<BC6H_SF16> :
   3418     ComponentTraits<SWR_TYPE_SNORM, 8>,
   3419     FormatSwizzle<0>,
   3420     Defaults<0, 0, 0, 0x3f800000>
   3421 {
   3422     static const uint32_t bpp{ 128 };
   3423     static const uint32_t numComps{ 1 };
   3424     static const bool hasAlpha{ true };
   3425     static const uint32_t alphaComp{ 3 };
   3426     static const bool isSRGB{ false };
   3427     static const bool isBC{ true };
   3428     static const bool isSubsampled{ false };
   3429     static const uint32_t bcWidth{ 4 };
   3430     static const uint32_t bcHeight{ 4 };
   3431 
   3432     typedef TransposeSingleComponent<8> TransposeT;
   3433     typedef Format1<8>                  FormatT;
   3434 };
   3435 
   3436 //////////////////////////////////////////////////////////////////////////
   3437 /// FormatTraits<BC7_UNORM> - Format traits specialization for BC7_UNORM
   3438 //////////////////////////////////////////////////////////////////////////
   3439 template<> struct FormatTraits<BC7_UNORM> :
   3440     ComponentTraits<SWR_TYPE_UNORM, 8>,
   3441     FormatSwizzle<0>,
   3442     Defaults<0, 0, 0, 0x3f800000>
   3443 {
   3444     static const uint32_t bpp{ 128 };
   3445     static const uint32_t numComps{ 1 };
   3446     static const bool hasAlpha{ true };
   3447     static const uint32_t alphaComp{ 3 };
   3448     static const bool isSRGB{ false };
   3449     static const bool isBC{ true };
   3450     static const bool isSubsampled{ false };
   3451     static const uint32_t bcWidth{ 4 };
   3452     static const uint32_t bcHeight{ 4 };
   3453 
   3454     typedef TransposeSingleComponent<8> TransposeT;
   3455     typedef Format1<8>                  FormatT;
   3456 };
   3457 
   3458 //////////////////////////////////////////////////////////////////////////
   3459 /// FormatTraits<BC7_UNORM_SRGB> - Format traits specialization for BC7_UNORM_SRGB
   3460 //////////////////////////////////////////////////////////////////////////
   3461 template<> struct FormatTraits<BC7_UNORM_SRGB> :
   3462     ComponentTraits<SWR_TYPE_UNORM, 8>,
   3463     FormatSwizzle<0>,
   3464     Defaults<0, 0, 0, 0x3f800000>
   3465 {
   3466     static const uint32_t bpp{ 128 };
   3467     static const uint32_t numComps{ 1 };
   3468     static const bool hasAlpha{ true };
   3469     static const uint32_t alphaComp{ 3 };
   3470     static const bool isSRGB{ true };
   3471     static const bool isBC{ true };
   3472     static const bool isSubsampled{ false };
   3473     static const uint32_t bcWidth{ 4 };
   3474     static const uint32_t bcHeight{ 4 };
   3475 
   3476     typedef TransposeSingleComponent<8> TransposeT;
   3477     typedef Format1<8>                  FormatT;
   3478 };
   3479 
   3480 //////////////////////////////////////////////////////////////////////////
   3481 /// FormatTraits<BC6H_UF16> - Format traits specialization for BC6H_UF16
   3482 //////////////////////////////////////////////////////////////////////////
   3483 template<> struct FormatTraits<BC6H_UF16> :
   3484     ComponentTraits<SWR_TYPE_UNORM, 8>,
   3485     FormatSwizzle<0>,
   3486     Defaults<0, 0, 0, 0x3f800000>
   3487 {
   3488     static const uint32_t bpp{ 128 };
   3489     static const uint32_t numComps{ 1 };
   3490     static const bool hasAlpha{ true };
   3491     static const uint32_t alphaComp{ 3 };
   3492     static const bool isSRGB{ false };
   3493     static const bool isBC{ true };
   3494     static const bool isSubsampled{ false };
   3495     static const uint32_t bcWidth{ 4 };
   3496     static const uint32_t bcHeight{ 4 };
   3497 
   3498     typedef TransposeSingleComponent<8> TransposeT;
   3499     typedef Format1<8>                  FormatT;
   3500 };
   3501 
   3502 //////////////////////////////////////////////////////////////////////////
   3503 /// FormatTraits<R8G8B8_UNORM_SRGB> - Format traits specialization for R8G8B8_UNORM_SRGB
   3504 //////////////////////////////////////////////////////////////////////////
   3505 template<> struct FormatTraits<R8G8B8_UNORM_SRGB> :
   3506     ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
   3507     FormatSwizzle<0, 1, 2>,
   3508     Defaults<0, 0, 0, 0x3f800000>
   3509 {
   3510     static const uint32_t bpp{ 24 };
   3511     static const uint32_t numComps{ 3 };
   3512     static const bool hasAlpha{ false };
   3513     static const uint32_t alphaComp{ 0 };
   3514     static const bool isSRGB{ true };
   3515     static const bool isBC{ false };
   3516     static const bool isSubsampled{ false };
   3517     static const uint32_t bcWidth{ 1 };
   3518     static const uint32_t bcHeight{ 1 };
   3519 
   3520     typedef Transpose8_8_8   TransposeT;
   3521     typedef Format3<8, 8, 8> FormatT;
   3522 };
   3523 
   3524 //////////////////////////////////////////////////////////////////////////
   3525 /// FormatTraits<R16G16B16_UINT> - Format traits specialization for R16G16B16_UINT
   3526 //////////////////////////////////////////////////////////////////////////
   3527 template<> struct FormatTraits<R16G16B16_UINT> :
   3528     ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>,
   3529     FormatSwizzle<0, 1, 2>,
   3530     Defaults<0, 0, 0, 0x1>
   3531 {
   3532     static const uint32_t bpp{ 48 };
   3533     static const uint32_t numComps{ 3 };
   3534     static const bool hasAlpha{ false };
   3535     static const uint32_t alphaComp{ 0 };
   3536     static const bool isSRGB{ false };
   3537     static const bool isBC{ false };
   3538     static const bool isSubsampled{ false };
   3539     static const uint32_t bcWidth{ 1 };
   3540     static const uint32_t bcHeight{ 1 };
   3541 
   3542     typedef Transpose16_16_16   TransposeT;
   3543     typedef Format3<16, 16, 16> FormatT;
   3544 };
   3545 
   3546 //////////////////////////////////////////////////////////////////////////
   3547 /// FormatTraits<R16G16B16_SINT> - Format traits specialization for R16G16B16_SINT
   3548 //////////////////////////////////////////////////////////////////////////
   3549 template<> struct FormatTraits<R16G16B16_SINT> :
   3550     ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>,
   3551     FormatSwizzle<0, 1, 2>,
   3552     Defaults<0, 0, 0, 0x1>
   3553 {
   3554     static const uint32_t bpp{ 48 };
   3555     static const uint32_t numComps{ 3 };
   3556     static const bool hasAlpha{ false };
   3557     static const uint32_t alphaComp{ 0 };
   3558     static const bool isSRGB{ false };
   3559     static const bool isBC{ false };
   3560     static const bool isSubsampled{ false };
   3561     static const uint32_t bcWidth{ 1 };
   3562     static const uint32_t bcHeight{ 1 };
   3563 
   3564     typedef Transpose16_16_16   TransposeT;
   3565     typedef Format3<16, 16, 16> FormatT;
   3566 };
   3567 
   3568 //////////////////////////////////////////////////////////////////////////
   3569 /// FormatTraits<R32_SFIXED> - Format traits specialization for R32_SFIXED
   3570 //////////////////////////////////////////////////////////////////////////
   3571 template<> struct FormatTraits<R32_SFIXED> :
   3572     ComponentTraits<SWR_TYPE_SFIXED, 32>,
   3573     FormatSwizzle<0>,
   3574     Defaults<0, 0, 0, 0x3f800000>
   3575 {
   3576     static const uint32_t bpp{ 32 };
   3577     static const uint32_t numComps{ 1 };
   3578     static const bool hasAlpha{ false };
   3579     static const uint32_t alphaComp{ 0 };
   3580     static const bool isSRGB{ false };
   3581     static const bool isBC{ false };
   3582     static const bool isSubsampled{ false };
   3583     static const uint32_t bcWidth{ 1 };
   3584     static const uint32_t bcHeight{ 1 };
   3585 
   3586     typedef TransposeSingleComponent<32> TransposeT;
   3587     typedef Format1<32>                  FormatT;
   3588 };
   3589 
   3590 //////////////////////////////////////////////////////////////////////////
   3591 /// FormatTraits<R10G10B10A2_SNORM> - Format traits specialization for R10G10B10A2_SNORM
   3592 //////////////////////////////////////////////////////////////////////////
   3593 template<> struct FormatTraits<R10G10B10A2_SNORM> :
   3594     ComponentTraits<SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 2>,
   3595     FormatSwizzle<0, 1, 2, 3>,
   3596     Defaults<0, 0, 0, 0x3f800000>
   3597 {
   3598     static const uint32_t bpp{ 32 };
   3599     static const uint32_t numComps{ 4 };
   3600     static const bool hasAlpha{ true };
   3601     static const uint32_t alphaComp{ 3 };
   3602     static const bool isSRGB{ false };
   3603     static const bool isBC{ false };
   3604     static const bool isSubsampled{ false };
   3605     static const uint32_t bcWidth{ 1 };
   3606     static const uint32_t bcHeight{ 1 };
   3607 
   3608     typedef Transpose10_10_10_2    TransposeT;
   3609     typedef Format4<10, 10, 10, 2> FormatT;
   3610 };
   3611 
   3612 //////////////////////////////////////////////////////////////////////////
   3613 /// FormatTraits<R10G10B10A2_USCALED> - Format traits specialization for R10G10B10A2_USCALED
   3614 //////////////////////////////////////////////////////////////////////////
   3615 template<> struct FormatTraits<R10G10B10A2_USCALED> :
   3616     ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 2>,
   3617     FormatSwizzle<0, 1, 2, 3>,
   3618     Defaults<0, 0, 0, 0x3f800000>
   3619 {
   3620     static const uint32_t bpp{ 32 };
   3621     static const uint32_t numComps{ 4 };
   3622     static const bool hasAlpha{ true };
   3623     static const uint32_t alphaComp{ 3 };
   3624     static const bool isSRGB{ false };
   3625     static const bool isBC{ false };
   3626     static const bool isSubsampled{ false };
   3627     static const uint32_t bcWidth{ 1 };
   3628     static const uint32_t bcHeight{ 1 };
   3629 
   3630     typedef Transpose10_10_10_2    TransposeT;
   3631     typedef Format4<10, 10, 10, 2> FormatT;
   3632 };
   3633 
   3634 //////////////////////////////////////////////////////////////////////////
   3635 /// FormatTraits<R10G10B10A2_SSCALED> - Format traits specialization for R10G10B10A2_SSCALED
   3636 //////////////////////////////////////////////////////////////////////////
   3637 template<> struct FormatTraits<R10G10B10A2_SSCALED> :
   3638     ComponentTraits<SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 2>,
   3639     FormatSwizzle<0, 1, 2, 3>,
   3640     Defaults<0, 0, 0, 0x3f800000>
   3641 {
   3642     static const uint32_t bpp{ 32 };
   3643     static const uint32_t numComps{ 4 };
   3644     static const bool hasAlpha{ true };
   3645     static const uint32_t alphaComp{ 3 };
   3646     static const bool isSRGB{ false };
   3647     static const bool isBC{ false };
   3648     static const bool isSubsampled{ false };
   3649     static const uint32_t bcWidth{ 1 };
   3650     static const uint32_t bcHeight{ 1 };
   3651 
   3652     typedef Transpose10_10_10_2    TransposeT;
   3653     typedef Format4<10, 10, 10, 2> FormatT;
   3654 };
   3655 
   3656 //////////////////////////////////////////////////////////////////////////
   3657 /// FormatTraits<R10G10B10A2_SINT> - Format traits specialization for R10G10B10A2_SINT
   3658 //////////////////////////////////////////////////////////////////////////
   3659 template<> struct FormatTraits<R10G10B10A2_SINT> :
   3660     ComponentTraits<SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 2>,
   3661     FormatSwizzle<0, 1, 2, 3>,
   3662     Defaults<0, 0, 0, 0x1>
   3663 {
   3664     static const uint32_t bpp{ 32 };
   3665     static const uint32_t numComps{ 4 };
   3666     static const bool hasAlpha{ true };
   3667     static const uint32_t alphaComp{ 3 };
   3668     static const bool isSRGB{ false };
   3669     static const bool isBC{ false };
   3670     static const bool isSubsampled{ false };
   3671     static const uint32_t bcWidth{ 1 };
   3672     static const uint32_t bcHeight{ 1 };
   3673 
   3674     typedef Transpose10_10_10_2    TransposeT;
   3675     typedef Format4<10, 10, 10, 2> FormatT;
   3676 };
   3677 
   3678 //////////////////////////////////////////////////////////////////////////
   3679 /// FormatTraits<B10G10R10A2_SNORM> - Format traits specialization for B10G10R10A2_SNORM
   3680 //////////////////////////////////////////////////////////////////////////
   3681 template<> struct FormatTraits<B10G10R10A2_SNORM> :
   3682     ComponentTraits<SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 2>,
   3683     FormatSwizzle<2, 1, 0, 3>,
   3684     Defaults<0, 0, 0, 0x3f800000>
   3685 {
   3686     static const uint32_t bpp{ 32 };
   3687     static const uint32_t numComps{ 4 };
   3688     static const bool hasAlpha{ true };
   3689     static const uint32_t alphaComp{ 3 };
   3690     static const bool isSRGB{ false };
   3691     static const bool isBC{ false };
   3692     static const bool isSubsampled{ false };
   3693     static const uint32_t bcWidth{ 1 };
   3694     static const uint32_t bcHeight{ 1 };
   3695 
   3696     typedef Transpose10_10_10_2    TransposeT;
   3697     typedef Format4<10, 10, 10, 2> FormatT;
   3698 };
   3699 
   3700 //////////////////////////////////////////////////////////////////////////
   3701 /// FormatTraits<B10G10R10A2_USCALED> - Format traits specialization for B10G10R10A2_USCALED
   3702 //////////////////////////////////////////////////////////////////////////
   3703 template<> struct FormatTraits<B10G10R10A2_USCALED> :
   3704     ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 2>,
   3705     FormatSwizzle<2, 1, 0, 3>,
   3706     Defaults<0, 0, 0, 0x3f800000>
   3707 {
   3708     static const uint32_t bpp{ 32 };
   3709     static const uint32_t numComps{ 4 };
   3710     static const bool hasAlpha{ true };
   3711     static const uint32_t alphaComp{ 3 };
   3712     static const bool isSRGB{ false };
   3713     static const bool isBC{ false };
   3714     static const bool isSubsampled{ false };
   3715     static const uint32_t bcWidth{ 1 };
   3716     static const uint32_t bcHeight{ 1 };
   3717 
   3718     typedef Transpose10_10_10_2    TransposeT;
   3719     typedef Format4<10, 10, 10, 2> FormatT;
   3720 };
   3721 
   3722 //////////////////////////////////////////////////////////////////////////
   3723 /// FormatTraits<B10G10R10A2_SSCALED> - Format traits specialization for B10G10R10A2_SSCALED
   3724 //////////////////////////////////////////////////////////////////////////
   3725 template<> struct FormatTraits<B10G10R10A2_SSCALED> :
   3726     ComponentTraits<SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 2>,
   3727     FormatSwizzle<2, 1, 0, 3>,
   3728     Defaults<0, 0, 0, 0x3f800000>
   3729 {
   3730     static const uint32_t bpp{ 32 };
   3731     static const uint32_t numComps{ 4 };
   3732     static const bool hasAlpha{ true };
   3733     static const uint32_t alphaComp{ 3 };
   3734     static const bool isSRGB{ false };
   3735     static const bool isBC{ false };
   3736     static const bool isSubsampled{ false };
   3737     static const uint32_t bcWidth{ 1 };
   3738     static const uint32_t bcHeight{ 1 };
   3739 
   3740     typedef Transpose10_10_10_2    TransposeT;
   3741     typedef Format4<10, 10, 10, 2> FormatT;
   3742 };
   3743 
   3744 //////////////////////////////////////////////////////////////////////////
   3745 /// FormatTraits<B10G10R10A2_UINT> - Format traits specialization for B10G10R10A2_UINT
   3746 //////////////////////////////////////////////////////////////////////////
   3747 template<> struct FormatTraits<B10G10R10A2_UINT> :
   3748     ComponentTraits<SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 2>,
   3749     FormatSwizzle<2, 1, 0, 3>,
   3750     Defaults<0, 0, 0, 0x1>
   3751 {
   3752     static const uint32_t bpp{ 32 };
   3753     static const uint32_t numComps{ 4 };
   3754     static const bool hasAlpha{ true };
   3755     static const uint32_t alphaComp{ 3 };
   3756     static const bool isSRGB{ false };
   3757     static const bool isBC{ false };
   3758     static const bool isSubsampled{ false };
   3759     static const uint32_t bcWidth{ 1 };
   3760     static const uint32_t bcHeight{ 1 };
   3761 
   3762     typedef Transpose10_10_10_2    TransposeT;
   3763     typedef Format4<10, 10, 10, 2> FormatT;
   3764 };
   3765 
   3766 //////////////////////////////////////////////////////////////////////////
   3767 /// FormatTraits<B10G10R10A2_SINT> - Format traits specialization for B10G10R10A2_SINT
   3768 //////////////////////////////////////////////////////////////////////////
   3769 template<> struct FormatTraits<B10G10R10A2_SINT> :
   3770     ComponentTraits<SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 2>,
   3771     FormatSwizzle<2, 1, 0, 3>,
   3772     Defaults<0, 0, 0, 0x1>
   3773 {
   3774     static const uint32_t bpp{ 32 };
   3775     static const uint32_t numComps{ 4 };
   3776     static const bool hasAlpha{ true };
   3777     static const uint32_t alphaComp{ 3 };
   3778     static const bool isSRGB{ false };
   3779     static const bool isBC{ false };
   3780     static const bool isSubsampled{ false };
   3781     static const uint32_t bcWidth{ 1 };
   3782     static const uint32_t bcHeight{ 1 };
   3783 
   3784     typedef Transpose10_10_10_2    TransposeT;
   3785     typedef Format4<10, 10, 10, 2> FormatT;
   3786 };
   3787 
   3788 //////////////////////////////////////////////////////////////////////////
   3789 /// FormatTraits<R8G8B8_UINT> - Format traits specialization for R8G8B8_UINT
   3790 //////////////////////////////////////////////////////////////////////////
   3791 template<> struct FormatTraits<R8G8B8_UINT> :
   3792     ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
   3793     FormatSwizzle<0, 1, 2>,
   3794     Defaults<0, 0, 0, 0x1>
   3795 {
   3796     static const uint32_t bpp{ 24 };
   3797     static const uint32_t numComps{ 3 };
   3798     static const bool hasAlpha{ false };
   3799     static const uint32_t alphaComp{ 0 };
   3800     static const bool isSRGB{ false };
   3801     static const bool isBC{ false };
   3802     static const bool isSubsampled{ false };
   3803     static const uint32_t bcWidth{ 1 };
   3804     static const uint32_t bcHeight{ 1 };
   3805 
   3806     typedef Transpose8_8_8   TransposeT;
   3807     typedef Format3<8, 8, 8> FormatT;
   3808 };
   3809 
   3810 //////////////////////////////////////////////////////////////////////////
   3811 /// FormatTraits<R8G8B8_SINT> - Format traits specialization for R8G8B8_SINT
   3812 //////////////////////////////////////////////////////////////////////////
   3813 template<> struct FormatTraits<R8G8B8_SINT> :
   3814     ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>,
   3815     FormatSwizzle<0, 1, 2>,
   3816     Defaults<0, 0, 0, 0x1>
   3817 {
   3818     static const uint32_t bpp{ 24 };
   3819     static const uint32_t numComps{ 3 };
   3820     static const bool hasAlpha{ false };
   3821     static const uint32_t alphaComp{ 0 };
   3822     static const bool isSRGB{ false };
   3823     static const bool isBC{ false };
   3824     static const bool isSubsampled{ false };
   3825     static const uint32_t bcWidth{ 1 };
   3826     static const uint32_t bcHeight{ 1 };
   3827 
   3828     typedef Transpose8_8_8   TransposeT;
   3829     typedef Format3<8, 8, 8> FormatT;
   3830 };
   3831 
   3832 //////////////////////////////////////////////////////////////////////////
   3833 /// FormatTraits<RAW> - Format traits specialization for RAW
   3834 //////////////////////////////////////////////////////////////////////////
   3835 template<> struct FormatTraits<RAW> :
   3836     ComponentTraits<SWR_TYPE_UINT, 8>,
   3837     FormatSwizzle<0>,
   3838     Defaults<0, 0, 0, 0x1>
   3839 {
   3840     static const uint32_t bpp{ 8 };
   3841     static const uint32_t numComps{ 1 };
   3842     static const bool hasAlpha{ false };
   3843     static const uint32_t alphaComp{ 3 };
   3844     static const bool isSRGB{ false };
   3845     static const bool isBC{ false };
   3846     static const bool isSubsampled{ false };
   3847     static const uint32_t bcWidth{ 1 };
   3848     static const uint32_t bcHeight{ 1 };
   3849 
   3850     typedef TransposeSingleComponent<8> TransposeT;
   3851     typedef Format1<8>                  FormatT;
   3852 };
   3853