#include <unordered_map>
static std::unordered_map<std::string, vk::Format> format_map = {
    {"UNDEFINED", vk::Format::eUndefined},
    {"R4G4UNORMPACK8", vk::Format::eR4G4UnormPack8},
    {"R4G4B4A4UNORMPACK16", vk::Format::eR4G4B4A4UnormPack16},
    {"B4G4R4A4UNORMPACK16", vk::Format::eB4G4R4A4UnormPack16},
    {"R5G6B5UNORMPACK16", vk::Format::eR5G6B5UnormPack16},
    {"B5G6R5UNORMPACK16", vk::Format::eB5G6R5UnormPack16},
    {"R5G5B5A1UNORMPACK16", vk::Format::eR5G5B5A1UnormPack16},
    {"B5G5R5A1UNORMPACK16", vk::Format::eB5G5R5A1UnormPack16},
    {"A1R5G5B5UNORMPACK16", vk::Format::eA1R5G5B5UnormPack16},
    {"R8UNORM", vk::Format::eR8Unorm},
    {"R8SNORM", vk::Format::eR8Snorm},
    {"R8USCALED", vk::Format::eR8Uscaled},
    {"R8SSCALED", vk::Format::eR8Sscaled},
    {"R8UINT", vk::Format::eR8Uint},
    {"R8SINT", vk::Format::eR8Sint},
    {"R8SRGB", vk::Format::eR8Srgb},
    {"R8G8UNORM", vk::Format::eR8G8Unorm},
    {"R8G8SNORM", vk::Format::eR8G8Snorm},
    {"R8G8USCALED", vk::Format::eR8G8Uscaled},
    {"R8G8SSCALED", vk::Format::eR8G8Sscaled},
    {"R8G8UINT", vk::Format::eR8G8Uint},
    {"R8G8SINT", vk::Format::eR8G8Sint},
    {"R8G8SRGB", vk::Format::eR8G8Srgb},
    {"R8G8B8UNORM", vk::Format::eR8G8B8Unorm},
    {"R8G8B8SNORM", vk::Format::eR8G8B8Snorm},
    {"R8G8B8USCALED", vk::Format::eR8G8B8Uscaled},
    {"R8G8B8SSCALED", vk::Format::eR8G8B8Sscaled},
    {"R8G8B8UINT", vk::Format::eR8G8B8Uint},
    {"R8G8B8SINT", vk::Format::eR8G8B8Sint},
    {"R8G8B8SRGB", vk::Format::eR8G8B8Srgb},
    {"B8G8R8UNORM", vk::Format::eB8G8R8Unorm},
    {"B8G8R8SNORM", vk::Format::eB8G8R8Snorm},
    {"B8G8R8USCALED", vk::Format::eB8G8R8Uscaled},
    {"B8G8R8SSCALED", vk::Format::eB8G8R8Sscaled},
    {"B8G8R8UINT", vk::Format::eB8G8R8Uint},
    {"B8G8R8SINT", vk::Format::eB8G8R8Sint},
    {"B8G8R8SRGB", vk::Format::eB8G8R8Srgb},
    {"R8G8B8A8UNORM", vk::Format::eR8G8B8A8Unorm},
    {"R8G8B8A8SNORM", vk::Format::eR8G8B8A8Snorm},
    {"R8G8B8A8USCALED", vk::Format::eR8G8B8A8Uscaled},
    {"R8G8B8A8SSCALED", vk::Format::eR8G8B8A8Sscaled},
    {"R8G8B8A8UINT", vk::Format::eR8G8B8A8Uint},
    {"R8G8B8A8SINT", vk::Format::eR8G8B8A8Sint},
    {"R8G8B8A8SRGB", vk::Format::eR8G8B8A8Srgb},
    {"B8G8R8A8UNORM", vk::Format::eB8G8R8A8Unorm},
    {"B8G8R8A8SNORM", vk::Format::eB8G8R8A8Snorm},
    {"B8G8R8A8USCALED", vk::Format::eB8G8R8A8Uscaled},
    {"B8G8R8A8SSCALED", vk::Format::eB8G8R8A8Sscaled},
    {"B8G8R8A8UINT", vk::Format::eB8G8R8A8Uint},
    {"B8G8R8A8SINT", vk::Format::eB8G8R8A8Sint},
    {"B8G8R8A8SRGB", vk::Format::eB8G8R8A8Srgb},
    {"A8B8G8R8UNORMPACK32", vk::Format::eA8B8G8R8UnormPack32},
    {"A8B8G8R8SNORMPACK32", vk::Format::eA8B8G8R8SnormPack32},
    {"A8B8G8R8USCALEDPACK32", vk::Format::eA8B8G8R8UscaledPack32},
    {"A8B8G8R8SSCALEDPACK32", vk::Format::eA8B8G8R8SscaledPack32},
    {"A8B8G8R8UINTPACK32", vk::Format::eA8B8G8R8UintPack32},
    {"A8B8G8R8SINTPACK32", vk::Format::eA8B8G8R8SintPack32},
    {"A8B8G8R8SRGBPACK32", vk::Format::eA8B8G8R8SrgbPack32},
    {"A2R10G10B10UNORMPACK32", vk::Format::eA2R10G10B10UnormPack32},
    {"A2R10G10B10SNORMPACK32", vk::Format::eA2R10G10B10SnormPack32},
    {"A2R10G10B10USCALEDPACK32", vk::Format::eA2R10G10B10UscaledPack32},
    {"A2R10G10B10SSCALEDPACK32", vk::Format::eA2R10G10B10SscaledPack32},
    {"A2R10G10B10UINTPACK32", vk::Format::eA2R10G10B10UintPack32},
    {"A2R10G10B10SINTPACK32", vk::Format::eA2R10G10B10SintPack32},
    {"A2B10G10R10UNORMPACK32", vk::Format::eA2B10G10R10UnormPack32},
    {"A2B10G10R10SNORMPACK32", vk::Format::eA2B10G10R10SnormPack32},
    {"A2B10G10R10USCALEDPACK32", vk::Format::eA2B10G10R10UscaledPack32},
    {"A2B10G10R10SSCALEDPACK32", vk::Format::eA2B10G10R10SscaledPack32},
    {"A2B10G10R10UINTPACK32", vk::Format::eA2B10G10R10UintPack32},
    {"A2B10G10R10SINTPACK32", vk::Format::eA2B10G10R10SintPack32},
    {"R16UNORM", vk::Format::eR16Unorm},
    {"R16SNORM", vk::Format::eR16Snorm},
    {"R16USCALED", vk::Format::eR16Uscaled},
    {"R16SSCALED", vk::Format::eR16Sscaled},
    {"R16UINT", vk::Format::eR16Uint},
    {"R16SINT", vk::Format::eR16Sint},
    {"R16SFLOAT", vk::Format::eR16Sfloat},
    {"R16G16UNORM", vk::Format::eR16G16Unorm},
    {"R16G16SNORM", vk::Format::eR16G16Snorm},
    {"R16G16USCALED", vk::Format::eR16G16Uscaled},
    {"R16G16SSCALED", vk::Format::eR16G16Sscaled},
    {"R16G16UINT", vk::Format::eR16G16Uint},
    {"R16G16SINT", vk::Format::eR16G16Sint},
    {"R16G16SFLOAT", vk::Format::eR16G16Sfloat},
    {"R16G16B16UNORM", vk::Format::eR16G16B16Unorm},
    {"R16G16B16SNORM", vk::Format::eR16G16B16Snorm},
    {"R16G16B16USCALED", vk::Format::eR16G16B16Uscaled},
    {"R16G16B16SSCALED", vk::Format::eR16G16B16Sscaled},
    {"R16G16B16UINT", vk::Format::eR16G16B16Uint},
    {"R16G16B16SINT", vk::Format::eR16G16B16Sint},
    {"R16G16B16SFLOAT", vk::Format::eR16G16B16Sfloat},
    {"R16G16B16A16UNORM", vk::Format::eR16G16B16A16Unorm},
    {"R16G16B16A16SNORM", vk::Format::eR16G16B16A16Snorm},
    {"R16G16B16A16USCALED", vk::Format::eR16G16B16A16Uscaled},
    {"R16G16B16A16SSCALED", vk::Format::eR16G16B16A16Sscaled},
    {"R16G16B16A16UINT", vk::Format::eR16G16B16A16Uint},
    {"R16G16B16A16SINT", vk::Format::eR16G16B16A16Sint},
    {"R16G16B16A16SFLOAT", vk::Format::eR16G16B16A16Sfloat},
    {"R32UINT", vk::Format::eR32Uint},
    {"R32SINT", vk::Format::eR32Sint},
    {"R32SFLOAT", vk::Format::eR32Sfloat},
    {"R32G32UINT", vk::Format::eR32G32Uint},
    {"R32G32SINT", vk::Format::eR32G32Sint},
    {"R32G32SFLOAT", vk::Format::eR32G32Sfloat},
    {"R32G32B32UINT", vk::Format::eR32G32B32Uint},
    {"R32G32B32SINT", vk::Format::eR32G32B32Sint},
    {"R32G32B32SFLOAT", vk::Format::eR32G32B32Sfloat},
    {"R32G32B32A32UINT", vk::Format::eR32G32B32A32Uint},
    {"R32G32B32A32SINT", vk::Format::eR32G32B32A32Sint},
    {"R32G32B32A32SFLOAT", vk::Format::eR32G32B32A32Sfloat},
    {"R64UINT", vk::Format::eR64Uint},
    {"R64SINT", vk::Format::eR64Sint},
    {"R64SFLOAT", vk::Format::eR64Sfloat},
    {"R64G64UINT", vk::Format::eR64G64Uint},
    {"R64G64SINT", vk::Format::eR64G64Sint},
    {"R64G64SFLOAT", vk::Format::eR64G64Sfloat},
    {"R64G64B64UINT", vk::Format::eR64G64B64Uint},
    {"R64G64B64SINT", vk::Format::eR64G64B64Sint},
    {"R64G64B64SFLOAT", vk::Format::eR64G64B64Sfloat},
    {"R64G64B64A64UINT", vk::Format::eR64G64B64A64Uint},
    {"R64G64B64A64SINT", vk::Format::eR64G64B64A64Sint},
    {"R64G64B64A64SFLOAT", vk::Format::eR64G64B64A64Sfloat},
    {"B10G11R11UFLOATPACK32", vk::Format::eB10G11R11UfloatPack32},
    {"E5B9G9R9UFLOATPACK32", vk::Format::eE5B9G9R9UfloatPack32},
    {"D16UNORM", vk::Format::eD16Unorm},
    {"X8D24UNORMPACK32", vk::Format::eX8D24UnormPack32},
    {"D32SFLOAT", vk::Format::eD32Sfloat},
    {"S8UINT", vk::Format::eS8Uint},
    {"D16UNORMS8UINT", vk::Format::eD16UnormS8Uint},
    {"D24UNORMS8UINT", vk::Format::eD24UnormS8Uint},
    {"D32SFLOATS8UINT", vk::Format::eD32SfloatS8Uint},
    {"BC1RGBUNORMBLOCK", vk::Format::eBc1RgbUnormBlock},
    {"BC1RGBSRGBBLOCK", vk::Format::eBc1RgbSrgbBlock},
    {"BC1RGBAUNORMBLOCK", vk::Format::eBc1RgbaUnormBlock},
    {"BC1RGBASRGBBLOCK", vk::Format::eBc1RgbaSrgbBlock},
    {"BC2UNORMBLOCK", vk::Format::eBc2UnormBlock},
    {"BC2SRGBBLOCK", vk::Format::eBc2SrgbBlock},
    {"BC3UNORMBLOCK", vk::Format::eBc3UnormBlock},
    {"BC3SRGBBLOCK", vk::Format::eBc3SrgbBlock},
    {"BC4UNORMBLOCK", vk::Format::eBc4UnormBlock},
    {"BC4SNORMBLOCK", vk::Format::eBc4SnormBlock},
    {"BC5UNORMBLOCK", vk::Format::eBc5UnormBlock},
    {"BC5SNORMBLOCK", vk::Format::eBc5SnormBlock},
    {"BC6HUFLOATBLOCK", vk::Format::eBc6HUfloatBlock},
    {"BC6HSFLOATBLOCK", vk::Format::eBc6HSfloatBlock},
    {"BC7UNORMBLOCK", vk::Format::eBc7UnormBlock},
    {"BC7SRGBBLOCK", vk::Format::eBc7SrgbBlock},
    {"ETC2R8G8B8UNORMBLOCK", vk::Format::eEtc2R8G8B8UnormBlock},
    {"ETC2R8G8B8SRGBBLOCK", vk::Format::eEtc2R8G8B8SrgbBlock},
    {"ETC2R8G8B8A1UNORMBLOCK", vk::Format::eEtc2R8G8B8A1UnormBlock},
    {"ETC2R8G8B8A1SRGBBLOCK", vk::Format::eEtc2R8G8B8A1SrgbBlock},
    {"ETC2R8G8B8A8UNORMBLOCK", vk::Format::eEtc2R8G8B8A8UnormBlock},
    {"ETC2R8G8B8A8SRGBBLOCK", vk::Format::eEtc2R8G8B8A8SrgbBlock},
    {"EACR11UNORMBLOCK", vk::Format::eEacR11UnormBlock},
    {"EACR11SNORMBLOCK", vk::Format::eEacR11SnormBlock},
    {"EACR11G11UNORMBLOCK", vk::Format::eEacR11G11UnormBlock},
    {"EACR11G11SNORMBLOCK", vk::Format::eEacR11G11SnormBlock},
    {"ASTC4X4UNORMBLOCK", vk::Format::eAstc4x4UnormBlock},
    {"ASTC4X4SRGBBLOCK", vk::Format::eAstc4x4SrgbBlock},
    {"ASTC5X4UNORMBLOCK", vk::Format::eAstc5x4UnormBlock},
    {"ASTC5X4SRGBBLOCK", vk::Format::eAstc5x4SrgbBlock},
    {"ASTC5X5UNORMBLOCK", vk::Format::eAstc5x5UnormBlock},
    {"ASTC5X5SRGBBLOCK", vk::Format::eAstc5x5SrgbBlock},
    {"ASTC6X5UNORMBLOCK", vk::Format::eAstc6x5UnormBlock},
    {"ASTC6X5SRGBBLOCK", vk::Format::eAstc6x5SrgbBlock},
    {"ASTC6X6UNORMBLOCK", vk::Format::eAstc6x6UnormBlock},
    {"ASTC6X6SRGBBLOCK", vk::Format::eAstc6x6SrgbBlock},
    {"ASTC8X5UNORMBLOCK", vk::Format::eAstc8x5UnormBlock},
    {"ASTC8X5SRGBBLOCK", vk::Format::eAstc8x5SrgbBlock},
    {"ASTC8X6UNORMBLOCK", vk::Format::eAstc8x6UnormBlock},
    {"ASTC8X6SRGBBLOCK", vk::Format::eAstc8x6SrgbBlock},
    {"ASTC8X8UNORMBLOCK", vk::Format::eAstc8x8UnormBlock},
    {"ASTC8X8SRGBBLOCK", vk::Format::eAstc8x8SrgbBlock},
    {"ASTC10X5UNORMBLOCK", vk::Format::eAstc10x5UnormBlock},
    {"ASTC10X5SRGBBLOCK", vk::Format::eAstc10x5SrgbBlock},
    {"ASTC10X6UNORMBLOCK", vk::Format::eAstc10x6UnormBlock},
    {"ASTC10X6SRGBBLOCK", vk::Format::eAstc10x6SrgbBlock},
    {"ASTC10X8UNORMBLOCK", vk::Format::eAstc10x8UnormBlock},
    {"ASTC10X8SRGBBLOCK", vk::Format::eAstc10x8SrgbBlock},
    {"ASTC10X10UNORMBLOCK", vk::Format::eAstc10x10UnormBlock},
    {"ASTC10X10SRGBBLOCK", vk::Format::eAstc10x10SrgbBlock},
    {"ASTC12X10UNORMBLOCK", vk::Format::eAstc12x10UnormBlock},
    {"ASTC12X10SRGBBLOCK", vk::Format::eAstc12x10SrgbBlock},
    {"ASTC12X12UNORMBLOCK", vk::Format::eAstc12x12UnormBlock},
    {"ASTC12X12SRGBBLOCK", vk::Format::eAstc12x12SrgbBlock},
};
