#include "vulkan.hpp"
#include "rx/die.hpp"
#include <unordered_map>

using namespace gnm;

enum class FormatPair : std::uint16_t {};

static constexpr auto makeFormatPair(DataFormat dfmt, NumericFormat nfmt) {
  return static_cast<FormatPair>(static_cast<std::uint16_t>(dfmt) |
                                 (static_cast<std::uint16_t>(nfmt) << 8));
}
// clang-format off
static std::unordered_map<FormatPair, VkFormat> g_toVkFormats = {
{ makeFormatPair(kDataFormat8, kNumericFormatUNorm), VK_FORMAT_R8_UNORM},
{ makeFormatPair(kDataFormat8, kNumericFormatSNorm), VK_FORMAT_R8_SNORM},
{ makeFormatPair(kDataFormat8, kNumericFormatUScaled), VK_FORMAT_R8_USCALED},
{ makeFormatPair(kDataFormat8, kNumericFormatSScaled), VK_FORMAT_R8_SSCALED},
{ makeFormatPair(kDataFormat8, kNumericFormatUInt), VK_FORMAT_R8_UINT},
{ makeFormatPair(kDataFormat8, kNumericFormatSInt), VK_FORMAT_R8_SINT},
// { makeFormatPair(kDataFormat8, kNumericFormatSNormNoZero), VK_FORMAT_R8_SNORM},
// { makeFormatPair(kDataFormat8, kNumericFormatFloat), VK_FORMAT_R8_SFLOAT},
{ makeFormatPair(kDataFormat8, kNumericFormatSrgb), VK_FORMAT_R8_SRGB},
// { makeFormatPair(kDataFormat8, kNumericFormatUBNorm), VK_FORMAT_R8_UNORM},
// { makeFormatPair(kDataFormat8, kNumericFormatUBNormNoZero), VK_FORMAT_R8_UNORM},
// { makeFormatPair(kDataFormat8, kNumericFormatUBInt), VK_FORMAT_R8_UINT},
// { makeFormatPair(kDataFormat8, kNumericFormatUBScaled), VK_FORMAT_R8_USCALED},
{ makeFormatPair(kDataFormat16, kNumericFormatUNorm), VK_FORMAT_R16_UNORM},
{ makeFormatPair(kDataFormat16, kNumericFormatSNorm), VK_FORMAT_R16_SNORM},
{ makeFormatPair(kDataFormat16, kNumericFormatUScaled), VK_FORMAT_R16_USCALED},
{ makeFormatPair(kDataFormat16, kNumericFormatSScaled), VK_FORMAT_R16_SSCALED},
{ makeFormatPair(kDataFormat16, kNumericFormatUInt), VK_FORMAT_R16_UINT},
{ makeFormatPair(kDataFormat16, kNumericFormatSInt), VK_FORMAT_R16_SINT},
// { makeFormatPair(kDataFormat16, kNumericFormatSNormNoZero), VK_FORMAT_R16_SNORM},
{ makeFormatPair(kDataFormat16, kNumericFormatFloat), VK_FORMAT_R16_SFLOAT},
// { makeFormatPair(kDataFormat16, kNumericFormatSrgb), VK_FORMAT_R16_SRGB},
// { makeFormatPair(kDataFormat16, kNumericFormatUBNorm), VK_FORMAT_R16_UNORM},
// { makeFormatPair(kDataFormat16, kNumericFormatUBNormNoZero), VK_FORMAT_R16_UNORM},
// { makeFormatPair(kDataFormat16, kNumericFormatUBInt), VK_FORMAT_R16_UINT},
// { makeFormatPair(kDataFormat16, kNumericFormatUBScaled), VK_FORMAT_R16_USCALED},
{ makeFormatPair(kDataFormat8_8, kNumericFormatUNorm), VK_FORMAT_R8G8_UNORM},
{ makeFormatPair(kDataFormat8_8, kNumericFormatSNorm), VK_FORMAT_R8G8_SNORM},
{ makeFormatPair(kDataFormat8_8, kNumericFormatUScaled), VK_FORMAT_R8G8_USCALED},
{ makeFormatPair(kDataFormat8_8, kNumericFormatSScaled), VK_FORMAT_R8G8_SSCALED},
{ makeFormatPair(kDataFormat8_8, kNumericFormatUInt), VK_FORMAT_R8G8_UINT},
{ makeFormatPair(kDataFormat8_8, kNumericFormatSInt), VK_FORMAT_R8G8_SINT},
// { makeFormatPair(kDataFormat8_8, kNumericFormatSNormNoZero), VK_FORMAT_R8G8_SNORM},
// { makeFormatPair(kDataFormat8_8, kNumericFormatFloat), VK_FORMAT_R8G8_SFLOAT},
{ makeFormatPair(kDataFormat8_8, kNumericFormatSrgb), VK_FORMAT_R8G8_SRGB},
// { makeFormatPair(kDataFormat8_8, kNumericFormatUBNorm), VK_FORMAT_R8G8_UNORM},
// { makeFormatPair(kDataFormat8_8, kNumericFormatUBNormNoZero), VK_FORMAT_R8G8_UNORM },
// { makeFormatPair(kDataFormat8_8, kNumericFormatUBInt), VK_FORMAT_R8G8_UINT},
// { makeFormatPair(kDataFormat8_8, kNumericFormatUBScaled), VK_FORMAT_R8G8_USCALED},
// { makeFormatPair(kDataFormat32, kNumericFormatUNorm), VK_FORMAT_R32_UNORM },
// { makeFormatPair(kDataFormat32, kNumericFormatSNorm), VK_FORMAT_R32_SNORM },
// { makeFormatPair(kDataFormat32, kNumericFormatUScaled), VK_FORMAT_R32_USCALED },
// { makeFormatPair(kDataFormat32, kNumericFormatSScaled), VK_FORMAT_R32_SSCALED },
{ makeFormatPair(kDataFormat32, kNumericFormatUInt), VK_FORMAT_R32_UINT },
{ makeFormatPair(kDataFormat32, kNumericFormatSInt), VK_FORMAT_R32_SINT },
// { makeFormatPair(kDataFormat32, kNumericFormatSNormNoZero), VK_FORMAT_R32_SNORM },
{ makeFormatPair(kDataFormat32, kNumericFormatFloat), VK_FORMAT_R32_SFLOAT },
// { makeFormatPair(kDataFormat32, kNumericFormatSrgb), VK_FORMAT_R32_SRGB },
// { makeFormatPair(kDataFormat32, kNumericFormatUBNorm), VK_FORMAT_R32_UNORM },
// { makeFormatPair(kDataFormat32, kNumericFormatUBNormNoZero), VK_FORMAT_R32_UNORM },
{ makeFormatPair(kDataFormat32, kNumericFormatUBInt), VK_FORMAT_R32_UINT },
// { makeFormatPair(kDataFormat32, kNumericFormatUBScaled), VK_FORMAT_R32_USCALED },
{ makeFormatPair(kDataFormat16_16, kNumericFormatUNorm), VK_FORMAT_R16G16_UNORM },
{ makeFormatPair(kDataFormat16_16, kNumericFormatSNorm), VK_FORMAT_R16G16_SNORM },
{ makeFormatPair(kDataFormat16_16, kNumericFormatUScaled), VK_FORMAT_R16G16_USCALED },
{ makeFormatPair(kDataFormat16_16, kNumericFormatSScaled), VK_FORMAT_R16G16_SSCALED },
{ makeFormatPair(kDataFormat16_16, kNumericFormatUInt), VK_FORMAT_R16G16_UINT },
{ makeFormatPair(kDataFormat16_16, kNumericFormatSInt), VK_FORMAT_R16G16_SINT },
// { makeFormatPair(kDataFormat16_16, kNumericFormatSNormNoZero), VK_FORMAT_R16G16_SNORM },
{ makeFormatPair(kDataFormat16_16, kNumericFormatFloat), VK_FORMAT_R16G16_SFLOAT },
// { makeFormatPair(kDataFormat16_16, kNumericFormatSrgb), VK_FORMAT_R16G16_SRGB },
// { makeFormatPair(kDataFormat16_16, kNumericFormatUBNorm), VK_FORMAT_R16G16_UNORM },
// { makeFormatPair(kDataFormat16_16, kNumericFormatUBNormNoZero), VK_FORMAT_R16G16_UNORM  },
// { makeFormatPair(kDataFormat16_16, kNumericFormatUBInt), VK_FORMAT_R16G16_UINT },
// { makeFormatPair(kDataFormat16_16, kNumericFormatUBScaled), VK_FORMAT_R16G16_USCALED },
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUNorm), VK_FORMAT_B10G11R11_UNORM_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSNorm), VK_FORMAT_B10G11R11_SNORM_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUScaled), VK_FORMAT_B10G11R11_USCALED_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSScaled), VK_FORMAT_B10G11R11_SSCALED_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUInt), VK_FORMAT_B10G11R11_UINT_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSInt), VK_FORMAT_B10G11R11_SINT_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSNormNoZero), VK_FORMAT_B10G11R11_SNORM_PACK32},
{ makeFormatPair(kDataFormat10_11_11, kNumericFormatFloat), VK_FORMAT_B10G11R11_UFLOAT_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSrgb), VK_FORMAT_B10G11R11_SRGB_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUBNorm), VK_FORMAT_B10G11R11_UNORM_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUBNormNoZero), VK_FORMAT_B10G11R11_UNORM_PACK32 },
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUBInt), VK_FORMAT_B10G11R11_UINT_PACK32},
// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUBScaled), VK_FORMAT_B10G11R11_USCALED_PACK32},
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUNorm), VK_FORMAT_B10G11R11_UNORM_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSNorm), VK_FORMAT_B10G11R11_SNORM_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUScaled), VK_FORMAT_B10G11R11_USCALED_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSScaled), VK_FORMAT_B10G11R11_SSCALED_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUInt), VK_FORMAT_B10G11R11_UINT_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSInt), VK_FORMAT_B10G11R11_SINT_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSNormNoZero), VK_FORMAT_B10G11R11_SNORM_PACK32 },
{ makeFormatPair(kDataFormat11_11_10, kNumericFormatFloat), VK_FORMAT_B10G11R11_UFLOAT_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSrgb), VK_FORMAT_B10G11R11_SRGB_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUBNorm), VK_FORMAT_B10G11R11_UNORM_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUBNormNoZero), VK_FORMAT_B10G11R11_UNORM_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUBInt), VK_FORMAT_B10G11R11_UINT_PACK32 },
// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUBScaled), VK_FORMAT_B10G11R11_USCALED_PACK32 },
{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUNorm), VK_FORMAT_A2R10G10B10_UNORM_PACK32},
{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSNorm), VK_FORMAT_A2R10G10B10_SNORM_PACK32},
{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUScaled), VK_FORMAT_A2R10G10B10_USCALED_PACK32},
{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSScaled), VK_FORMAT_A2R10G10B10_SSCALED_PACK32},
{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUInt), VK_FORMAT_A2R10G10B10_UINT_PACK32},
{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSInt), VK_FORMAT_A2R10G10B10_SINT_PACK32},
// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSNormNoZero), VK_FORMAT_A2R10G10B10_SNORM_PACK32},
// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatFloat), VK_FORMAT_A2R10G10B10_UFLOAT_PACK32},
{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSrgb), VK_FORMAT_A2R10G10B10_SINT_PACK32},
// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUBNorm), VK_FORMAT_A2R10G10B10_UNORM_PACK32},
// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUBNormNoZero), VK_FORMAT_A2R10G10B10_UNORM_PACK32},
// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUBInt), VK_FORMAT_A2R10G10B10_UINT_PACK32},
// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUBScaled), VK_FORMAT_A2R10G10B10_USCALED_PACK32},
{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUNorm), VK_FORMAT_A2R10G10B10_UNORM_PACK32},
{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSNorm), VK_FORMAT_A2R10G10B10_SNORM_PACK32},
{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUScaled), VK_FORMAT_A2R10G10B10_USCALED_PACK32},
{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSScaled), VK_FORMAT_A2R10G10B10_SSCALED_PACK32},
{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUInt), VK_FORMAT_A2R10G10B10_UINT_PACK32},
{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSInt), VK_FORMAT_A2R10G10B10_SINT_PACK32},
// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSNormNoZero), VK_FORMAT_A2R10G10B10_SNORM_PACK32},
// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatFloat), VK_FORMAT_A2R10G10B10_UFLOAT_PACK32},
{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSrgb), VK_FORMAT_A2R10G10B10_SINT_PACK32},
// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUBNorm), VK_FORMAT_A2R10G10B10_UNORM_PACK32},
// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUBNormNoZero), VK_FORMAT_A2R10G10B10_UNORM_PACK32},
// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUBInt), VK_FORMAT_A2R10G10B10_UINT_PACK32},
// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUBScaled), VK_FORMAT_A2R10G10B10_USCALED_PACK32},
{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUNorm), VK_FORMAT_R8G8B8A8_UNORM },
{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSNorm), VK_FORMAT_R8G8B8A8_SNORM },
{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUScaled), VK_FORMAT_R8G8B8A8_USCALED },
{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSScaled), VK_FORMAT_R8G8B8A8_SSCALED },
{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUInt), VK_FORMAT_R8G8B8A8_UINT },
{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSInt), VK_FORMAT_R8G8B8A8_SINT },
// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSNormNoZero), VK_FORMAT_R8G8B8A8_SNORM },
// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatFloat), VK_FORMAT_R8G8B8A8_SFLOAT },
{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSrgb), VK_FORMAT_R8G8B8A8_SRGB },
// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUBNorm), VK_FORMAT_R8G8B8A8_UNORM },
// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUBNormNoZero), VK_FORMAT_R8G8B8A8_UNORM  },
// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUBInt), VK_FORMAT_R8G8B8A8_UINT },
// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUBScaled), VK_FORMAT_R8G8B8A8_USCALED },
// { makeFormatPair(kDataFormat32_32, kNumericFormatUNorm), VK_FORMAT_R32G32_UNORM },
// { makeFormatPair(kDataFormat32_32, kNumericFormatSNorm), VK_FORMAT_R32G32_SNORM },
// { makeFormatPair(kDataFormat32_32, kNumericFormatUScaled), VK_FORMAT_R32G32_USCALED },
// { makeFormatPair(kDataFormat32_32, kNumericFormatSScaled), VK_FORMAT_R32G32_SSCALED },
{ makeFormatPair(kDataFormat32_32, kNumericFormatUInt), VK_FORMAT_R32G32_UINT },
{ makeFormatPair(kDataFormat32_32, kNumericFormatSInt), VK_FORMAT_R32G32_SINT },
// { makeFormatPair(kDataFormat32_32, kNumericFormatSNormNoZero), VK_FORMAT_R32G32_SNORM },
{ makeFormatPair(kDataFormat32_32, kNumericFormatFloat), VK_FORMAT_R32G32_SFLOAT },
// { makeFormatPair(kDataFormat32_32, kNumericFormatSrgb), VK_FORMAT_R32G32_SRGB },
// { makeFormatPair(kDataFormat32_32, kNumericFormatUBNorm), VK_FORMAT_R32G32_UNORM },
// { makeFormatPair(kDataFormat32_32, kNumericFormatUBNormNoZero), VK_FORMAT_R32G32_UNORM  },
// { makeFormatPair(kDataFormat32_32, kNumericFormatUBInt), VK_FORMAT_R32G32_UINT },
// { makeFormatPair(kDataFormat32_32, kNumericFormatUBScaled), VK_FORMAT_R32G32_USCALED },
{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUNorm), VK_FORMAT_R16G16B16A16_UNORM },
{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSNorm), VK_FORMAT_R16G16B16A16_SNORM },
{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUScaled), VK_FORMAT_R16G16B16A16_USCALED },
{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSScaled), VK_FORMAT_R16G16B16A16_SSCALED },
{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUInt), VK_FORMAT_R16G16B16A16_UINT },
{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSInt), VK_FORMAT_R16G16B16A16_SINT },
// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSNormNoZero), VK_FORMAT_R16G16B16A16_SNORM },
{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatFloat), VK_FORMAT_R16G16B16A16_SFLOAT },
// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSrgb), VK_FORMAT_R16G16B16A16_SRGB },
// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUBNorm), VK_FORMAT_R16G16B16A16_UNORM },
// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUBNormNoZero), VK_FORMAT_R16G16B16A16_UNORM  },
// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUBInt), VK_FORMAT_R16G16B16A16_UINT },
// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUBScaled), VK_FORMAT_R16G16B16A16_USCALED },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUNorm), VK_FORMAT_R32G32B32_UNORM },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatSNorm), VK_FORMAT_R32G32B32_SNORM },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUScaled), VK_FORMAT_R32G32B32_USCALED },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatSScaled), VK_FORMAT_R32G32B32_SSCALED },
{ makeFormatPair(kDataFormat32_32_32, kNumericFormatUInt), VK_FORMAT_R32G32B32_UINT },
{ makeFormatPair(kDataFormat32_32_32, kNumericFormatSInt), VK_FORMAT_R32G32B32_SINT },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatSNormNoZero), VK_FORMAT_R32G32B32_SNORM },
{ makeFormatPair(kDataFormat32_32_32, kNumericFormatFloat), VK_FORMAT_R32G32B32_SFLOAT },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatSrgb), VK_FORMAT_R32G32B32_SRGB },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUBNorm), VK_FORMAT_R32G32B32_UNORM },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUBNormNoZero), VK_FORMAT_R32G32B32_UNORM  },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUBInt), VK_FORMAT_R32G32B32_UINT },
// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUBScaled), VK_FORMAT_R32G32B32_USCALED },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUNorm), VK_FORMAT_R32G32B32A32_UNORM },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSNorm), VK_FORMAT_R32G32B32A32_SNORM },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUScaled), VK_FORMAT_R32G32B32A32_USCALED },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSScaled), VK_FORMAT_R32G32B32A32_SSCALED },
{ makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUInt), VK_FORMAT_R32G32B32A32_UINT },
{ makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSInt), VK_FORMAT_R32G32B32A32_SINT },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSNormNoZero), VK_FORMAT_R32G32B32A32_SNORM },
{ makeFormatPair(kDataFormat32_32_32_32, kNumericFormatFloat), VK_FORMAT_R32G32B32A32_SFLOAT },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSrgb), VK_FORMAT_R32G32B32A32_SRGB },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUBNorm), VK_FORMAT_R32G32B32A32_UNORM },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUBNormNoZero), VK_FORMAT_R32G32B32A32_UNORM  },
{ makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUBInt), VK_FORMAT_R32G32B32A32_UINT },
// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUBScaled), VK_FORMAT_R32G32B32A32_USCALED },
{ makeFormatPair(kDataFormat5_6_5, kNumericFormatUNorm), VK_FORMAT_B5G6R5_UNORM_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSNorm), VK_FORMAT_B5G6R5_SNORM_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUScaled), VK_FORMAT_B5G6R5_USCALED_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSScaled), VK_FORMAT_B5G6R5_SSCALED_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUInt), VK_FORMAT_B5G6R5_UINT_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSInt), VK_FORMAT_B5G6R5_SINT_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSNormNoZero), VK_FORMAT_B5G6R5_SNORM_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatFloat), VK_FORMAT_B5G6R5_SFLOAT_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSrgb), VK_FORMAT_B5G6R5_SRGB_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUBNorm), VK_FORMAT_B5G6R5_UNORM_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUBNormNoZero), VK_FORMAT_B5G6R5_UNORM_PACK16  },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUBInt), VK_FORMAT_B5G6R5_UINT_PACK16 },
// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUBScaled), VK_FORMAT_B5G6R5_USCALED_PACK16 },
{ makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUNorm), VK_FORMAT_A1R5G5B5_UNORM_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSNorm), VK_FORMAT_A1R5G5B5_SNORM_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUScaled), VK_FORMAT_A1R5G5B5_USCALED_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSScaled), VK_FORMAT_A1R5G5B5_SSCALED_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUInt), VK_FORMAT_A1R5G5B5_UINT_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSInt), VK_FORMAT_A1R5G5B5_SINT_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSNormNoZero), VK_FORMAT_A1R5G5B5_SNORM_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatFloat), VK_FORMAT_A1R5G5B5_SFLOAT_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSrgb), VK_FORMAT_A1R5G5B5_SRGB_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUBNorm), VK_FORMAT_A1R5G5B5_UNORM_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUBNormNoZero), VK_FORMAT_A1R5G5B5_UNORM_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUBInt), VK_FORMAT_A1R5G5B5_UINT_PACK16 },
// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUBScaled), VK_FORMAT_A1R5G5B5_USCALED_PACK16 },
{ makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUNorm), VK_FORMAT_A1R5G5B5_UNORM_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSNorm), VK_FORMAT_A1R5G5B5_SNORM_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUScaled), VK_FORMAT_A1R5G5B5_USCALED_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSScaled), VK_FORMAT_A1R5G5B5_SSCALED_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUInt), VK_FORMAT_A1R5G5B5_UINT_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSInt), VK_FORMAT_A1R5G5B5_SINT_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSNormNoZero), VK_FORMAT_A1R5G5B5_SNORM_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatFloat), VK_FORMAT_A1R5G5B5_SFLOAT_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSrgb), VK_FORMAT_A1R5G5B5_SRGB_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUBNorm), VK_FORMAT_A1R5G5B5_UNORM_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUBNormNoZero), VK_FORMAT_A1R5G5B5_UNORM_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUBInt), VK_FORMAT_A1R5G5B5_UINT_PACK16 },
// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUBScaled), VK_FORMAT_A1R5G5B5_USCALED_PACK16 },
{ makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUNorm), VK_FORMAT_R4G4B4A4_UNORM_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSNorm), VK_FORMAT_R4G4B4A4_SNORM_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUScaled), VK_FORMAT_R4G4B4A4_USCALED_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSScaled), VK_FORMAT_R4G4B4A4_SSCALED_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUInt), VK_FORMAT_R4G4B4A4_UINT_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSInt), VK_FORMAT_R4G4B4A4_SINT_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSNormNoZero), VK_FORMAT_R4G4B4A4_SNORM_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatFloat), VK_FORMAT_R4G4B4A4_SFLOAT_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSrgb), VK_FORMAT_R4G4B4A4_SRGB_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUBNorm), VK_FORMAT_R4G4B4A4_UNORM_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUBNormNoZero), VK_FORMAT_R4G4B4A4_UNORM_PACK16  },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUBInt), VK_FORMAT_R4G4B4A4_UINT_PACK16 },
// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUBScaled), VK_FORMAT_R4G4B4A4_USCALED_PACK16 },
// { makeFormatPair(kDataFormat8_24, kNumericFormatUNorm), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatSNorm), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatUScaled), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatSScaled), VK_FORMAT_D24_UNORM_S8_UINT },
{ makeFormatPair(kDataFormat8_24, kNumericFormatUInt), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatSInt), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatSNormNoZero), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatFloat), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatSrgb), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatUBNorm), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatUBNormNoZero), VK_FORMAT_D24_UNORM_S8_UINT  },
// { makeFormatPair(kDataFormat8_24, kNumericFormatUBInt), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat8_24, kNumericFormatUBScaled), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatUNorm), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatSNorm), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatUScaled), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatSScaled), VK_FORMAT_D24_UNORM_S8_UINT },
{ makeFormatPair(kDataFormat24_8, kNumericFormatUInt), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatSInt), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatSNormNoZero), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatFloat), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatSrgb), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatUBNorm), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatUBNormNoZero), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatUBInt), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormat24_8, kNumericFormatUBScaled), VK_FORMAT_D24_UNORM_S8_UINT },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUNorm), VK_FORMAT_E5B9G9R9_UNORM_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSNorm), VK_FORMAT_E5B9G9R9_SNORM_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUScaled), VK_FORMAT_E5B9G9R9_USCALED_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSScaled), VK_FORMAT_E5B9G9R9_SSCALED_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUInt), VK_FORMAT_E5B9G9R9_UINT_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSInt), VK_FORMAT_E5B9G9R9_SINT_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSNormNoZero), VK_FORMAT_E5B9G9R9_SNORM_PACK32 },
{ makeFormatPair(kDataFormat5_9_9_9, kNumericFormatFloat), VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSrgb), VK_FORMAT_E5B9G9R9_SRGB_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUBNorm), VK_FORMAT_E5B9G9R9_UNORM_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUBNormNoZero), VK_FORMAT_E5B9G9R9_UNORM_PACK32  },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUBInt), VK_FORMAT_E5B9G9R9_UINT_PACK32 },
// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUBScaled), VK_FORMAT_E5B9G9R9_USCALED_PACK32 },
{ makeFormatPair(kDataFormatBc1, kNumericFormatUNorm), VK_FORMAT_BC1_RGBA_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatSNorm), VK_FORMAT_BC1_RGBA_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatUScaled), VK_FORMAT_BC1_RGBA_USCALED_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatSScaled), VK_FORMAT_BC1_RGBA_SSCALED_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatUInt), VK_FORMAT_BC1_RGBA_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatSInt), VK_FORMAT_BC1_RGBA_SINT_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatSNormNoZero), VK_FORMAT_BC1_RGBA_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatFloat), VK_FORMAT_BC1_RGBA_SFLOAT_BLOCK },
{ makeFormatPair(kDataFormatBc1, kNumericFormatSrgb), VK_FORMAT_BC1_RGBA_SRGB_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatUBNorm), VK_FORMAT_BC1_RGBA_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatUBNormNoZero), VK_FORMAT_BC1_RGBA_UNORM_BLOCK  },
// { makeFormatPair(kDataFormatBc1, kNumericFormatUBInt), VK_FORMAT_BC1_RGBA_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc1, kNumericFormatUBScaled), VK_FORMAT_BC1_RGBA_USCALED_BLOCK },
{ makeFormatPair(kDataFormatBc2, kNumericFormatUNorm), VK_FORMAT_BC2_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatSNorm), VK_FORMAT_BC2_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatUScaled), VK_FORMAT_BC2_USCALED_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatSScaled), VK_FORMAT_BC2_SSCALED_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatUInt), VK_FORMAT_BC2_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatSInt), VK_FORMAT_BC2_SINT_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatSNormNoZero), VK_FORMAT_BC2_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatFloat), VK_FORMAT_BC2_SFLOAT_BLOCK },
{ makeFormatPair(kDataFormatBc2, kNumericFormatSrgb), VK_FORMAT_BC2_SRGB_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatUBNorm), VK_FORMAT_BC2_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatUBNormNoZero), VK_FORMAT_BC2_UNORM_BLOCK  },
// { makeFormatPair(kDataFormatBc2, kNumericFormatUBInt), VK_FORMAT_BC2_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc2, kNumericFormatUBScaled), VK_FORMAT_BC2_USCALED_BLOCK },
{ makeFormatPair(kDataFormatBc3, kNumericFormatUNorm), VK_FORMAT_BC3_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatSNorm), VK_FORMAT_BC3_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatUScaled), VK_FORMAT_BC3_USCALED_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatSScaled), VK_FORMAT_BC3_SSCALED_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatUInt), VK_FORMAT_BC3_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatSInt), VK_FORMAT_BC3_SINT_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatSNormNoZero), VK_FORMAT_BC3_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatFloat), VK_FORMAT_BC3_SFLOAT_BLOCK },
{ makeFormatPair(kDataFormatBc3, kNumericFormatSrgb), VK_FORMAT_BC3_SRGB_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatUBNorm), VK_FORMAT_BC3_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatUBNormNoZero), VK_FORMAT_BC3_UNORM_BLOCK  },
// { makeFormatPair(kDataFormatBc3, kNumericFormatUBInt), VK_FORMAT_BC3_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc3, kNumericFormatUBScaled), VK_FORMAT_BC3_USCALED_BLOCK },
{ makeFormatPair(kDataFormatBc4, kNumericFormatUNorm), VK_FORMAT_BC4_UNORM_BLOCK},
{ makeFormatPair(kDataFormatBc4, kNumericFormatSNorm), VK_FORMAT_BC4_SNORM_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatUScaled), VK_FORMAT_BC4_USCALED_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatSScaled), VK_FORMAT_BC4_SSCALED_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatUInt), VK_FORMAT_BC4_UINT_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatSInt), VK_FORMAT_BC4_SINT_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatSNormNoZero), VK_FORMAT_BC4_SNORM_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatFloat), VK_FORMAT_BC4_SFLOAT_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatSrgb), VK_FORMAT_BC4_SRGB_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatUBNorm), VK_FORMAT_BC4_UNORM_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatUBNormNoZero), VK_FORMAT_BC4_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc4, kNumericFormatUBInt), VK_FORMAT_BC4_UINT_BLOCK},
// { makeFormatPair(kDataFormatBc4, kNumericFormatUBScaled), VK_FORMAT_BC4_USCALED_BLOCK},
{ makeFormatPair(kDataFormatBc5, kNumericFormatUNorm), VK_FORMAT_BC5_UNORM_BLOCK },
{ makeFormatPair(kDataFormatBc5, kNumericFormatSNorm), VK_FORMAT_BC5_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatUScaled), VK_FORMAT_BC5_USCALED_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatSScaled), VK_FORMAT_BC5_SSCALED_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatUInt), VK_FORMAT_BC5_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatSInt), VK_FORMAT_BC5_SINT_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatSNormNoZero), VK_FORMAT_BC5_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatFloat), VK_FORMAT_BC5_SFLOAT_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatSrgb), VK_FORMAT_BC5_SRGB_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatUBNorm), VK_FORMAT_BC5_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatUBNormNoZero), VK_FORMAT_BC5_UNORM_BLOCK  },
// { makeFormatPair(kDataFormatBc5, kNumericFormatUBInt), VK_FORMAT_BC5_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc5, kNumericFormatUBScaled), VK_FORMAT_BC5_USCALED_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatUNorm), VK_FORMAT_BC6H_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatSNorm), VK_FORMAT_BC6H_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatUScaled), VK_FORMAT_BC6H_USCALED_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatSScaled), VK_FORMAT_BC6H_SSCALED_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatUInt), VK_FORMAT_BC6H_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatSInt), VK_FORMAT_BC6H_SINT_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatSNormNoZero), VK_FORMAT_BC6H_SNORM_BLOCK },
{ makeFormatPair(kDataFormatBc6, kNumericFormatFloat), VK_FORMAT_BC6H_SFLOAT_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatSrgb), VK_FORMAT_BC6H_SRGB_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatUBNorm), VK_FORMAT_BC6H_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatUBNormNoZero), VK_FORMAT_BC6H_UNORM_BLOCK  },
// { makeFormatPair(kDataFormatBc6, kNumericFormatUBInt), VK_FORMAT_BC6H_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc6, kNumericFormatUBScaled), VK_FORMAT_BC6H_USCALED_BLOCK },
{ makeFormatPair(kDataFormatBc7, kNumericFormatUNorm), VK_FORMAT_BC7_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatSNorm), VK_FORMAT_BC7_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatUScaled), VK_FORMAT_BC7_USCALED_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatSScaled), VK_FORMAT_BC7_SSCALED_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatUInt), VK_FORMAT_BC7_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatSInt), VK_FORMAT_BC7_SINT_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatSNormNoZero), VK_FORMAT_BC7_SNORM_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatFloat), VK_FORMAT_BC7_SFLOAT_BLOCK },
{ makeFormatPair(kDataFormatBc7, kNumericFormatSrgb), VK_FORMAT_BC7_SRGB_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatUBNorm), VK_FORMAT_BC7_UNORM_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatUBNormNoZero), VK_FORMAT_BC7_UNORM_BLOCK  },
// { makeFormatPair(kDataFormatBc7, kNumericFormatUBInt), VK_FORMAT_BC7_UINT_BLOCK },
// { makeFormatPair(kDataFormatBc7, kNumericFormatUBScaled), VK_FORMAT_BC7_USCALED_BLOCK },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUInt), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSInt), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatFloat), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUBScaled), },
{ makeFormatPair(kDataFormat4_4, kNumericFormatUNorm), VK_FORMAT_R4G4_UNORM_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatSNorm), VK_FORMAT_R4G4_SNORM_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatUScaled), VK_FORMAT_R4G4_USCALED_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatSScaled), VK_FORMAT_R4G4_SSCALED_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatUInt), VK_FORMAT_R4G4_UINT_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatSInt), VK_FORMAT_R4G4_SINT_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatSNormNoZero), VK_FORMAT_R4G4_SNORM_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatFloat), VK_FORMAT_R4G4_SFLOAT_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatSrgb), VK_FORMAT_R4G4_SRGB_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatUBNorm), VK_FORMAT_R4G4_UNORM_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatUBNormNoZero), VK_FORMAT_R4G4_UNORM_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatUBInt), VK_FORMAT_R4G4_UINT_PACK8},
// { makeFormatPair(kDataFormat4_4, kNumericFormatUBScaled), VK_FORMAT_R4G4_USCALED_PACK8},
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUInt), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSInt), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatFloat), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormat1, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormat1, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormat1, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormat1, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormat1, kNumericFormatUInt), },
// { makeFormatPair(kDataFormat1, kNumericFormatSInt), },
// { makeFormatPair(kDataFormat1, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormat1, kNumericFormatFloat), },
// { makeFormatPair(kDataFormat1, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormat1, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormat1, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormat1, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormat1, kNumericFormatUBScaled), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUNorm), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSNorm), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUScaled), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSScaled), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUInt), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSInt), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSNormNoZero), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatFloat), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSrgb), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUBNorm), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUBNormNoZero), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUBInt), },
// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUBScaled), },
};
// clang-format on

VkFormat gnm::toVkFormat(DataFormat dfmt, NumericFormat nfmt) {
  auto it = g_toVkFormats.find(makeFormatPair(dfmt, nfmt));
  if (it != g_toVkFormats.end()) {
    return it->second;
  }

  rx::die("unimplemented surface format. %x.%x\n", (int)dfmt, (int)nfmt);
}
