Home | History | Annotate | Download | only in include
      1 #pragma once
      2 
      3 #ifdef _WIN32
      4 
      5 #pragma warning( disable : 4065 )
      6 
      7 #endif
      8 
      9 #include <vulkan/vulkan.h>
     10 
     11 
     12 static inline uint32_t validate_VkAccessFlagBits(VkAccessFlagBits input_value)
     13 {
     14     if (input_value > (VK_ACCESS_INDIRECT_COMMAND_READ_BIT | VK_ACCESS_INDEX_READ_BIT | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT | VK_ACCESS_UNIFORM_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT | VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT | VK_ACCESS_HOST_READ_BIT | VK_ACCESS_HOST_WRITE_BIT | VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_MEMORY_WRITE_BIT))
     15         return 0;
     16     return 1;
     17 }
     18 
     19 
     20 static inline uint32_t validate_VkAttachmentDescriptionFlagBits(VkAttachmentDescriptionFlagBits input_value)
     21 {
     22     if (input_value > (VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT))
     23         return 0;
     24     return 1;
     25 }
     26 
     27 
     28 static inline uint32_t validate_VkAttachmentLoadOp(VkAttachmentLoadOp input_value)
     29 {
     30     switch ((VkAttachmentLoadOp)input_value)
     31     {
     32         case VK_ATTACHMENT_LOAD_OP_CLEAR:
     33         case VK_ATTACHMENT_LOAD_OP_DONT_CARE:
     34         case VK_ATTACHMENT_LOAD_OP_LOAD:
     35             return 1;
     36         default:
     37             return 0;
     38     }
     39 }
     40 
     41 
     42 static inline uint32_t validate_VkAttachmentStoreOp(VkAttachmentStoreOp input_value)
     43 {
     44     switch ((VkAttachmentStoreOp)input_value)
     45     {
     46         case VK_ATTACHMENT_STORE_OP_DONT_CARE:
     47         case VK_ATTACHMENT_STORE_OP_STORE:
     48             return 1;
     49         default:
     50             return 0;
     51     }
     52 }
     53 
     54 
     55 static inline uint32_t validate_VkBlendFactor(VkBlendFactor input_value)
     56 {
     57     switch ((VkBlendFactor)input_value)
     58     {
     59         case VK_BLEND_FACTOR_CONSTANT_ALPHA:
     60         case VK_BLEND_FACTOR_CONSTANT_COLOR:
     61         case VK_BLEND_FACTOR_DST_ALPHA:
     62         case VK_BLEND_FACTOR_DST_COLOR:
     63         case VK_BLEND_FACTOR_ONE:
     64         case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:
     65         case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:
     66         case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:
     67         case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:
     68         case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:
     69         case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:
     70         case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:
     71         case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:
     72         case VK_BLEND_FACTOR_SRC1_ALPHA:
     73         case VK_BLEND_FACTOR_SRC1_COLOR:
     74         case VK_BLEND_FACTOR_SRC_ALPHA:
     75         case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:
     76         case VK_BLEND_FACTOR_SRC_COLOR:
     77         case VK_BLEND_FACTOR_ZERO:
     78             return 1;
     79         default:
     80             return 0;
     81     }
     82 }
     83 
     84 
     85 static inline uint32_t validate_VkBlendOp(VkBlendOp input_value)
     86 {
     87     switch ((VkBlendOp)input_value)
     88     {
     89         case VK_BLEND_OP_ADD:
     90         case VK_BLEND_OP_MAX:
     91         case VK_BLEND_OP_MIN:
     92         case VK_BLEND_OP_REVERSE_SUBTRACT:
     93         case VK_BLEND_OP_SUBTRACT:
     94             return 1;
     95         default:
     96             return 0;
     97     }
     98 }
     99 
    100 
    101 static inline uint32_t validate_VkBorderColor(VkBorderColor input_value)
    102 {
    103     switch ((VkBorderColor)input_value)
    104     {
    105         case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:
    106         case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:
    107         case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:
    108         case VK_BORDER_COLOR_INT_OPAQUE_BLACK:
    109         case VK_BORDER_COLOR_INT_OPAQUE_WHITE:
    110         case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:
    111             return 1;
    112         default:
    113             return 0;
    114     }
    115 }
    116 
    117 
    118 static inline uint32_t validate_VkBufferCreateFlagBits(VkBufferCreateFlagBits input_value)
    119 {
    120     if (input_value > (VK_BUFFER_CREATE_SPARSE_BINDING_BIT | VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT | VK_BUFFER_CREATE_SPARSE_ALIASED_BIT))
    121         return 0;
    122     return 1;
    123 }
    124 
    125 
    126 static inline uint32_t validate_VkBufferUsageFlagBits(VkBufferUsageFlagBits input_value)
    127 {
    128     if (input_value > (VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT))
    129         return 0;
    130     return 1;
    131 }
    132 
    133 
    134 static inline uint32_t validate_VkColorComponentFlagBits(VkColorComponentFlagBits input_value)
    135 {
    136     if (input_value > (VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT))
    137         return 0;
    138     return 1;
    139 }
    140 
    141 
    142 static inline uint32_t validate_VkColorSpaceKHR(VkColorSpaceKHR input_value)
    143 {
    144     switch ((VkColorSpaceKHR)input_value)
    145     {
    146         case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:
    147             return 1;
    148         default:
    149             return 0;
    150     }
    151 }
    152 
    153 
    154 static inline uint32_t validate_VkCommandBufferLevel(VkCommandBufferLevel input_value)
    155 {
    156     switch ((VkCommandBufferLevel)input_value)
    157     {
    158         case VK_COMMAND_BUFFER_LEVEL_PRIMARY:
    159         case VK_COMMAND_BUFFER_LEVEL_SECONDARY:
    160             return 1;
    161         default:
    162             return 0;
    163     }
    164 }
    165 
    166 
    167 static inline uint32_t validate_VkCommandBufferResetFlagBits(VkCommandBufferResetFlagBits input_value)
    168 {
    169     if (input_value > (VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT))
    170         return 0;
    171     return 1;
    172 }
    173 
    174 
    175 static inline uint32_t validate_VkCommandBufferUsageFlagBits(VkCommandBufferUsageFlagBits input_value)
    176 {
    177     if (input_value > (VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT | VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT | VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT))
    178         return 0;
    179     return 1;
    180 }
    181 
    182 
    183 static inline uint32_t validate_VkCommandPoolCreateFlagBits(VkCommandPoolCreateFlagBits input_value)
    184 {
    185     if (input_value > (VK_COMMAND_POOL_CREATE_TRANSIENT_BIT | VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT))
    186         return 0;
    187     return 1;
    188 }
    189 
    190 
    191 static inline uint32_t validate_VkCommandPoolResetFlagBits(VkCommandPoolResetFlagBits input_value)
    192 {
    193     if (input_value > (VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT))
    194         return 0;
    195     return 1;
    196 }
    197 
    198 
    199 static inline uint32_t validate_VkCompareOp(VkCompareOp input_value)
    200 {
    201     switch ((VkCompareOp)input_value)
    202     {
    203         case VK_COMPARE_OP_ALWAYS:
    204         case VK_COMPARE_OP_EQUAL:
    205         case VK_COMPARE_OP_GREATER:
    206         case VK_COMPARE_OP_GREATER_OR_EQUAL:
    207         case VK_COMPARE_OP_LESS:
    208         case VK_COMPARE_OP_LESS_OR_EQUAL:
    209         case VK_COMPARE_OP_NEVER:
    210         case VK_COMPARE_OP_NOT_EQUAL:
    211             return 1;
    212         default:
    213             return 0;
    214     }
    215 }
    216 
    217 
    218 static inline uint32_t validate_VkComponentSwizzle(VkComponentSwizzle input_value)
    219 {
    220     switch ((VkComponentSwizzle)input_value)
    221     {
    222         case VK_COMPONENT_SWIZZLE_A:
    223         case VK_COMPONENT_SWIZZLE_B:
    224         case VK_COMPONENT_SWIZZLE_G:
    225         case VK_COMPONENT_SWIZZLE_IDENTITY:
    226         case VK_COMPONENT_SWIZZLE_ONE:
    227         case VK_COMPONENT_SWIZZLE_R:
    228         case VK_COMPONENT_SWIZZLE_ZERO:
    229             return 1;
    230         default:
    231             return 0;
    232     }
    233 }
    234 
    235 
    236 static inline uint32_t validate_VkCompositeAlphaFlagBitsKHR(VkCompositeAlphaFlagBitsKHR input_value)
    237 {
    238     if (input_value > (VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR | VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR | VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR | VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR))
    239         return 0;
    240     return 1;
    241 }
    242 
    243 
    244 static inline uint32_t validate_VkCullModeFlagBits(VkCullModeFlagBits input_value)
    245 {
    246     if (input_value > (VK_CULL_MODE_NONE | VK_CULL_MODE_FRONT_BIT | VK_CULL_MODE_BACK_BIT | VK_CULL_MODE_FRONT_AND_BACK))
    247         return 0;
    248     return 1;
    249 }
    250 
    251 
    252 static inline uint32_t validate_VkDebugReportErrorEXT(VkDebugReportErrorEXT input_value)
    253 {
    254     switch ((VkDebugReportErrorEXT)input_value)
    255     {
    256         case VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT:
    257         case VK_DEBUG_REPORT_ERROR_NONE_EXT:
    258             return 1;
    259         default:
    260             return 0;
    261     }
    262 }
    263 
    264 
    265 static inline uint32_t validate_VkDebugReportFlagBitsEXT(VkDebugReportFlagBitsEXT input_value)
    266 {
    267     if (input_value > (VK_DEBUG_REPORT_INFORMATION_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT | VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_DEBUG_BIT_EXT))
    268         return 0;
    269     return 1;
    270 }
    271 
    272 
    273 static inline uint32_t validate_VkDebugReportObjectTypeEXT(VkDebugReportObjectTypeEXT input_value)
    274 {
    275     switch ((VkDebugReportObjectTypeEXT)input_value)
    276     {
    277         case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:
    278         case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:
    279         case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:
    280         case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:
    281         case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT:
    282         case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:
    283         case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:
    284         case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:
    285         case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:
    286         case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:
    287         case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:
    288         case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:
    289         case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:
    290         case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:
    291         case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:
    292         case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:
    293         case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:
    294         case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:
    295         case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:
    296         case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:
    297         case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:
    298         case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:
    299         case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:
    300         case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:
    301         case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:
    302         case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:
    303         case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:
    304         case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:
    305         case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:
    306             return 1;
    307         default:
    308             return 0;
    309     }
    310 }
    311 
    312 
    313 static inline uint32_t validate_VkDependencyFlagBits(VkDependencyFlagBits input_value)
    314 {
    315     if (input_value > (VK_DEPENDENCY_BY_REGION_BIT))
    316         return 0;
    317     return 1;
    318 }
    319 
    320 
    321 static inline uint32_t validate_VkDescriptorPoolCreateFlagBits(VkDescriptorPoolCreateFlagBits input_value)
    322 {
    323     if (input_value > (VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT))
    324         return 0;
    325     return 1;
    326 }
    327 
    328 
    329 static inline uint32_t validate_VkDescriptorType(VkDescriptorType input_value)
    330 {
    331     switch ((VkDescriptorType)input_value)
    332     {
    333         case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
    334         case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
    335         case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
    336         case VK_DESCRIPTOR_TYPE_SAMPLER:
    337         case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
    338         case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
    339         case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
    340         case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
    341         case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
    342         case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
    343         case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
    344             return 1;
    345         default:
    346             return 0;
    347     }
    348 }
    349 
    350 
    351 static inline uint32_t validate_VkDisplayPlaneAlphaFlagBitsKHR(VkDisplayPlaneAlphaFlagBitsKHR input_value)
    352 {
    353     if (input_value > (VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR | VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR | VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR | VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR))
    354         return 0;
    355     return 1;
    356 }
    357 
    358 
    359 static inline uint32_t validate_VkDynamicState(VkDynamicState input_value)
    360 {
    361     switch ((VkDynamicState)input_value)
    362     {
    363         case VK_DYNAMIC_STATE_BLEND_CONSTANTS:
    364         case VK_DYNAMIC_STATE_DEPTH_BIAS:
    365         case VK_DYNAMIC_STATE_DEPTH_BOUNDS:
    366         case VK_DYNAMIC_STATE_LINE_WIDTH:
    367         case VK_DYNAMIC_STATE_SCISSOR:
    368         case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:
    369         case VK_DYNAMIC_STATE_STENCIL_REFERENCE:
    370         case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:
    371         case VK_DYNAMIC_STATE_VIEWPORT:
    372             return 1;
    373         default:
    374             return 0;
    375     }
    376 }
    377 
    378 
    379 static inline uint32_t validate_VkExternalMemoryFeatureFlagBitsNV(VkExternalMemoryFeatureFlagBitsNV input_value)
    380 {
    381     if (input_value > (VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV | VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV | VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV))
    382         return 0;
    383     return 1;
    384 }
    385 
    386 
    387 static inline uint32_t validate_VkExternalMemoryHandleTypeFlagBitsNV(VkExternalMemoryHandleTypeFlagBitsNV input_value)
    388 {
    389     if (input_value > (VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV))
    390         return 0;
    391     return 1;
    392 }
    393 
    394 
    395 static inline uint32_t validate_VkFenceCreateFlagBits(VkFenceCreateFlagBits input_value)
    396 {
    397     if (input_value > (VK_FENCE_CREATE_SIGNALED_BIT))
    398         return 0;
    399     return 1;
    400 }
    401 
    402 
    403 static inline uint32_t validate_VkFilter(VkFilter input_value)
    404 {
    405     switch ((VkFilter)input_value)
    406     {
    407         case VK_FILTER_CUBIC_IMG:
    408         case VK_FILTER_LINEAR:
    409         case VK_FILTER_NEAREST:
    410             return 1;
    411         default:
    412             return 0;
    413     }
    414 }
    415 
    416 
    417 static inline uint32_t validate_VkFormat(VkFormat input_value)
    418 {
    419     switch ((VkFormat)input_value)
    420     {
    421         case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
    422         case VK_FORMAT_A2B10G10R10_SINT_PACK32:
    423         case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
    424         case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
    425         case VK_FORMAT_A2B10G10R10_UINT_PACK32:
    426         case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
    427         case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
    428         case VK_FORMAT_A2R10G10B10_SINT_PACK32:
    429         case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
    430         case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
    431         case VK_FORMAT_A2R10G10B10_UINT_PACK32:
    432         case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
    433         case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
    434         case VK_FORMAT_A8B8G8R8_SINT_PACK32:
    435         case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
    436         case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
    437         case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
    438         case VK_FORMAT_A8B8G8R8_UINT_PACK32:
    439         case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
    440         case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
    441         case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
    442         case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
    443         case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
    444         case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
    445         case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
    446         case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
    447         case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
    448         case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
    449         case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
    450         case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
    451         case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
    452         case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
    453         case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
    454         case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
    455         case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
    456         case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
    457         case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
    458         case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
    459         case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
    460         case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
    461         case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
    462         case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
    463         case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
    464         case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
    465         case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
    466         case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
    467         case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
    468         case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
    469         case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
    470         case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
    471         case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
    472         case VK_FORMAT_B5G6R5_UNORM_PACK16:
    473         case VK_FORMAT_B8G8R8A8_SINT:
    474         case VK_FORMAT_B8G8R8A8_SNORM:
    475         case VK_FORMAT_B8G8R8A8_SRGB:
    476         case VK_FORMAT_B8G8R8A8_SSCALED:
    477         case VK_FORMAT_B8G8R8A8_UINT:
    478         case VK_FORMAT_B8G8R8A8_UNORM:
    479         case VK_FORMAT_B8G8R8A8_USCALED:
    480         case VK_FORMAT_B8G8R8_SINT:
    481         case VK_FORMAT_B8G8R8_SNORM:
    482         case VK_FORMAT_B8G8R8_SRGB:
    483         case VK_FORMAT_B8G8R8_SSCALED:
    484         case VK_FORMAT_B8G8R8_UINT:
    485         case VK_FORMAT_B8G8R8_UNORM:
    486         case VK_FORMAT_B8G8R8_USCALED:
    487         case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
    488         case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
    489         case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
    490         case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
    491         case VK_FORMAT_BC2_SRGB_BLOCK:
    492         case VK_FORMAT_BC2_UNORM_BLOCK:
    493         case VK_FORMAT_BC3_SRGB_BLOCK:
    494         case VK_FORMAT_BC3_UNORM_BLOCK:
    495         case VK_FORMAT_BC4_SNORM_BLOCK:
    496         case VK_FORMAT_BC4_UNORM_BLOCK:
    497         case VK_FORMAT_BC5_SNORM_BLOCK:
    498         case VK_FORMAT_BC5_UNORM_BLOCK:
    499         case VK_FORMAT_BC6H_SFLOAT_BLOCK:
    500         case VK_FORMAT_BC6H_UFLOAT_BLOCK:
    501         case VK_FORMAT_BC7_SRGB_BLOCK:
    502         case VK_FORMAT_BC7_UNORM_BLOCK:
    503         case VK_FORMAT_D16_UNORM:
    504         case VK_FORMAT_D16_UNORM_S8_UINT:
    505         case VK_FORMAT_D24_UNORM_S8_UINT:
    506         case VK_FORMAT_D32_SFLOAT:
    507         case VK_FORMAT_D32_SFLOAT_S8_UINT:
    508         case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
    509         case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
    510         case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
    511         case VK_FORMAT_EAC_R11_SNORM_BLOCK:
    512         case VK_FORMAT_EAC_R11_UNORM_BLOCK:
    513         case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
    514         case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
    515         case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
    516         case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
    517         case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
    518         case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
    519         case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:
    520         case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:
    521         case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:
    522         case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:
    523         case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:
    524         case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:
    525         case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:
    526         case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:
    527         case VK_FORMAT_R16G16B16A16_SFLOAT:
    528         case VK_FORMAT_R16G16B16A16_SINT:
    529         case VK_FORMAT_R16G16B16A16_SNORM:
    530         case VK_FORMAT_R16G16B16A16_SSCALED:
    531         case VK_FORMAT_R16G16B16A16_UINT:
    532         case VK_FORMAT_R16G16B16A16_UNORM:
    533         case VK_FORMAT_R16G16B16A16_USCALED:
    534         case VK_FORMAT_R16G16B16_SFLOAT:
    535         case VK_FORMAT_R16G16B16_SINT:
    536         case VK_FORMAT_R16G16B16_SNORM:
    537         case VK_FORMAT_R16G16B16_SSCALED:
    538         case VK_FORMAT_R16G16B16_UINT:
    539         case VK_FORMAT_R16G16B16_UNORM:
    540         case VK_FORMAT_R16G16B16_USCALED:
    541         case VK_FORMAT_R16G16_SFLOAT:
    542         case VK_FORMAT_R16G16_SINT:
    543         case VK_FORMAT_R16G16_SNORM:
    544         case VK_FORMAT_R16G16_SSCALED:
    545         case VK_FORMAT_R16G16_UINT:
    546         case VK_FORMAT_R16G16_UNORM:
    547         case VK_FORMAT_R16G16_USCALED:
    548         case VK_FORMAT_R16_SFLOAT:
    549         case VK_FORMAT_R16_SINT:
    550         case VK_FORMAT_R16_SNORM:
    551         case VK_FORMAT_R16_SSCALED:
    552         case VK_FORMAT_R16_UINT:
    553         case VK_FORMAT_R16_UNORM:
    554         case VK_FORMAT_R16_USCALED:
    555         case VK_FORMAT_R32G32B32A32_SFLOAT:
    556         case VK_FORMAT_R32G32B32A32_SINT:
    557         case VK_FORMAT_R32G32B32A32_UINT:
    558         case VK_FORMAT_R32G32B32_SFLOAT:
    559         case VK_FORMAT_R32G32B32_SINT:
    560         case VK_FORMAT_R32G32B32_UINT:
    561         case VK_FORMAT_R32G32_SFLOAT:
    562         case VK_FORMAT_R32G32_SINT:
    563         case VK_FORMAT_R32G32_UINT:
    564         case VK_FORMAT_R32_SFLOAT:
    565         case VK_FORMAT_R32_SINT:
    566         case VK_FORMAT_R32_UINT:
    567         case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
    568         case VK_FORMAT_R4G4_UNORM_PACK8:
    569         case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
    570         case VK_FORMAT_R5G6B5_UNORM_PACK16:
    571         case VK_FORMAT_R64G64B64A64_SFLOAT:
    572         case VK_FORMAT_R64G64B64A64_SINT:
    573         case VK_FORMAT_R64G64B64A64_UINT:
    574         case VK_FORMAT_R64G64B64_SFLOAT:
    575         case VK_FORMAT_R64G64B64_SINT:
    576         case VK_FORMAT_R64G64B64_UINT:
    577         case VK_FORMAT_R64G64_SFLOAT:
    578         case VK_FORMAT_R64G64_SINT:
    579         case VK_FORMAT_R64G64_UINT:
    580         case VK_FORMAT_R64_SFLOAT:
    581         case VK_FORMAT_R64_SINT:
    582         case VK_FORMAT_R64_UINT:
    583         case VK_FORMAT_R8G8B8A8_SINT:
    584         case VK_FORMAT_R8G8B8A8_SNORM:
    585         case VK_FORMAT_R8G8B8A8_SRGB:
    586         case VK_FORMAT_R8G8B8A8_SSCALED:
    587         case VK_FORMAT_R8G8B8A8_UINT:
    588         case VK_FORMAT_R8G8B8A8_UNORM:
    589         case VK_FORMAT_R8G8B8A8_USCALED:
    590         case VK_FORMAT_R8G8B8_SINT:
    591         case VK_FORMAT_R8G8B8_SNORM:
    592         case VK_FORMAT_R8G8B8_SRGB:
    593         case VK_FORMAT_R8G8B8_SSCALED:
    594         case VK_FORMAT_R8G8B8_UINT:
    595         case VK_FORMAT_R8G8B8_UNORM:
    596         case VK_FORMAT_R8G8B8_USCALED:
    597         case VK_FORMAT_R8G8_SINT:
    598         case VK_FORMAT_R8G8_SNORM:
    599         case VK_FORMAT_R8G8_SRGB:
    600         case VK_FORMAT_R8G8_SSCALED:
    601         case VK_FORMAT_R8G8_UINT:
    602         case VK_FORMAT_R8G8_UNORM:
    603         case VK_FORMAT_R8G8_USCALED:
    604         case VK_FORMAT_R8_SINT:
    605         case VK_FORMAT_R8_SNORM:
    606         case VK_FORMAT_R8_SRGB:
    607         case VK_FORMAT_R8_SSCALED:
    608         case VK_FORMAT_R8_UINT:
    609         case VK_FORMAT_R8_UNORM:
    610         case VK_FORMAT_R8_USCALED:
    611         case VK_FORMAT_S8_UINT:
    612         case VK_FORMAT_UNDEFINED:
    613         case VK_FORMAT_X8_D24_UNORM_PACK32:
    614             return 1;
    615         default:
    616             return 0;
    617     }
    618 }
    619 
    620 
    621 static inline uint32_t validate_VkFormatFeatureFlagBits(VkFormatFeatureFlagBits input_value)
    622 {
    623     if (input_value > (VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT | VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT | VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT | VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG))
    624         return 0;
    625     return 1;
    626 }
    627 
    628 
    629 static inline uint32_t validate_VkFrontFace(VkFrontFace input_value)
    630 {
    631     switch ((VkFrontFace)input_value)
    632     {
    633         case VK_FRONT_FACE_CLOCKWISE:
    634         case VK_FRONT_FACE_COUNTER_CLOCKWISE:
    635             return 1;
    636         default:
    637             return 0;
    638     }
    639 }
    640 
    641 
    642 static inline uint32_t validate_VkImageAspectFlagBits(VkImageAspectFlagBits input_value)
    643 {
    644     if (input_value > (VK_IMAGE_ASPECT_COLOR_BIT | VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT | VK_IMAGE_ASPECT_METADATA_BIT))
    645         return 0;
    646     return 1;
    647 }
    648 
    649 
    650 static inline uint32_t validate_VkImageCreateFlagBits(VkImageCreateFlagBits input_value)
    651 {
    652     if (input_value > (VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT | VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT))
    653         return 0;
    654     return 1;
    655 }
    656 
    657 
    658 static inline uint32_t validate_VkImageLayout(VkImageLayout input_value)
    659 {
    660     switch ((VkImageLayout)input_value)
    661     {
    662         case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
    663         case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
    664         case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:
    665         case VK_IMAGE_LAYOUT_GENERAL:
    666         case VK_IMAGE_LAYOUT_PREINITIALIZED:
    667         case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:
    668         case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
    669         case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
    670         case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
    671         case VK_IMAGE_LAYOUT_UNDEFINED:
    672             return 1;
    673         default:
    674             return 0;
    675     }
    676 }
    677 
    678 
    679 static inline uint32_t validate_VkImageTiling(VkImageTiling input_value)
    680 {
    681     switch ((VkImageTiling)input_value)
    682     {
    683         case VK_IMAGE_TILING_LINEAR:
    684         case VK_IMAGE_TILING_OPTIMAL:
    685             return 1;
    686         default:
    687             return 0;
    688     }
    689 }
    690 
    691 
    692 static inline uint32_t validate_VkImageType(VkImageType input_value)
    693 {
    694     switch ((VkImageType)input_value)
    695     {
    696         case VK_IMAGE_TYPE_1D:
    697         case VK_IMAGE_TYPE_2D:
    698         case VK_IMAGE_TYPE_3D:
    699             return 1;
    700         default:
    701             return 0;
    702     }
    703 }
    704 
    705 
    706 static inline uint32_t validate_VkImageUsageFlagBits(VkImageUsageFlagBits input_value)
    707 {
    708     if (input_value > (VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT))
    709         return 0;
    710     return 1;
    711 }
    712 
    713 
    714 static inline uint32_t validate_VkImageViewType(VkImageViewType input_value)
    715 {
    716     switch ((VkImageViewType)input_value)
    717     {
    718         case VK_IMAGE_VIEW_TYPE_1D:
    719         case VK_IMAGE_VIEW_TYPE_1D_ARRAY:
    720         case VK_IMAGE_VIEW_TYPE_2D:
    721         case VK_IMAGE_VIEW_TYPE_2D_ARRAY:
    722         case VK_IMAGE_VIEW_TYPE_3D:
    723         case VK_IMAGE_VIEW_TYPE_CUBE:
    724         case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:
    725             return 1;
    726         default:
    727             return 0;
    728     }
    729 }
    730 
    731 
    732 static inline uint32_t validate_VkIndexType(VkIndexType input_value)
    733 {
    734     switch ((VkIndexType)input_value)
    735     {
    736         case VK_INDEX_TYPE_UINT16:
    737         case VK_INDEX_TYPE_UINT32:
    738             return 1;
    739         default:
    740             return 0;
    741     }
    742 }
    743 
    744 
    745 static inline uint32_t validate_VkInternalAllocationType(VkInternalAllocationType input_value)
    746 {
    747     switch ((VkInternalAllocationType)input_value)
    748     {
    749         case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:
    750             return 1;
    751         default:
    752             return 0;
    753     }
    754 }
    755 
    756 
    757 static inline uint32_t validate_VkLogicOp(VkLogicOp input_value)
    758 {
    759     switch ((VkLogicOp)input_value)
    760     {
    761         case VK_LOGIC_OP_AND:
    762         case VK_LOGIC_OP_AND_INVERTED:
    763         case VK_LOGIC_OP_AND_REVERSE:
    764         case VK_LOGIC_OP_CLEAR:
    765         case VK_LOGIC_OP_COPY:
    766         case VK_LOGIC_OP_COPY_INVERTED:
    767         case VK_LOGIC_OP_EQUIVALENT:
    768         case VK_LOGIC_OP_INVERT:
    769         case VK_LOGIC_OP_NAND:
    770         case VK_LOGIC_OP_NOR:
    771         case VK_LOGIC_OP_NO_OP:
    772         case VK_LOGIC_OP_OR:
    773         case VK_LOGIC_OP_OR_INVERTED:
    774         case VK_LOGIC_OP_OR_REVERSE:
    775         case VK_LOGIC_OP_SET:
    776         case VK_LOGIC_OP_XOR:
    777             return 1;
    778         default:
    779             return 0;
    780     }
    781 }
    782 
    783 
    784 static inline uint32_t validate_VkMemoryHeapFlagBits(VkMemoryHeapFlagBits input_value)
    785 {
    786     if (input_value > (VK_MEMORY_HEAP_DEVICE_LOCAL_BIT))
    787         return 0;
    788     return 1;
    789 }
    790 
    791 
    792 static inline uint32_t validate_VkMemoryPropertyFlagBits(VkMemoryPropertyFlagBits input_value)
    793 {
    794     if (input_value > (VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT | VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT))
    795         return 0;
    796     return 1;
    797 }
    798 
    799 
    800 static inline uint32_t validate_VkPhysicalDeviceType(VkPhysicalDeviceType input_value)
    801 {
    802     switch ((VkPhysicalDeviceType)input_value)
    803     {
    804         case VK_PHYSICAL_DEVICE_TYPE_CPU:
    805         case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:
    806         case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:
    807         case VK_PHYSICAL_DEVICE_TYPE_OTHER:
    808         case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:
    809             return 1;
    810         default:
    811             return 0;
    812     }
    813 }
    814 
    815 
    816 static inline uint32_t validate_VkPipelineBindPoint(VkPipelineBindPoint input_value)
    817 {
    818     switch ((VkPipelineBindPoint)input_value)
    819     {
    820         case VK_PIPELINE_BIND_POINT_COMPUTE:
    821         case VK_PIPELINE_BIND_POINT_GRAPHICS:
    822             return 1;
    823         default:
    824             return 0;
    825     }
    826 }
    827 
    828 
    829 static inline uint32_t validate_VkPipelineCacheHeaderVersion(VkPipelineCacheHeaderVersion input_value)
    830 {
    831     switch ((VkPipelineCacheHeaderVersion)input_value)
    832     {
    833         case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:
    834             return 1;
    835         default:
    836             return 0;
    837     }
    838 }
    839 
    840 
    841 static inline uint32_t validate_VkPipelineCreateFlagBits(VkPipelineCreateFlagBits input_value)
    842 {
    843     if (input_value > (VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT | VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT | VK_PIPELINE_CREATE_DERIVATIVE_BIT))
    844         return 0;
    845     return 1;
    846 }
    847 
    848 
    849 static inline uint32_t validate_VkPipelineStageFlagBits(VkPipelineStageFlagBits input_value)
    850 {
    851     if (input_value > (VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT | VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT | VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT | VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT | VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | VK_PIPELINE_STAGE_TRANSFER_BIT | VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT | VK_PIPELINE_STAGE_HOST_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_ALL_COMMANDS_BIT))
    852         return 0;
    853     return 1;
    854 }
    855 
    856 
    857 static inline uint32_t validate_VkPolygonMode(VkPolygonMode input_value)
    858 {
    859     switch ((VkPolygonMode)input_value)
    860     {
    861         case VK_POLYGON_MODE_FILL:
    862         case VK_POLYGON_MODE_LINE:
    863         case VK_POLYGON_MODE_POINT:
    864             return 1;
    865         default:
    866             return 0;
    867     }
    868 }
    869 
    870 
    871 static inline uint32_t validate_VkPresentModeKHR(VkPresentModeKHR input_value)
    872 {
    873     switch ((VkPresentModeKHR)input_value)
    874     {
    875         case VK_PRESENT_MODE_FIFO_KHR:
    876         case VK_PRESENT_MODE_FIFO_RELAXED_KHR:
    877         case VK_PRESENT_MODE_IMMEDIATE_KHR:
    878         case VK_PRESENT_MODE_MAILBOX_KHR:
    879             return 1;
    880         default:
    881             return 0;
    882     }
    883 }
    884 
    885 
    886 static inline uint32_t validate_VkPrimitiveTopology(VkPrimitiveTopology input_value)
    887 {
    888     switch ((VkPrimitiveTopology)input_value)
    889     {
    890         case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
    891         case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:
    892         case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
    893         case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:
    894         case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:
    895         case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
    896         case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
    897         case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
    898         case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:
    899         case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
    900         case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:
    901             return 1;
    902         default:
    903             return 0;
    904     }
    905 }
    906 
    907 
    908 static inline uint32_t validate_VkQueryControlFlagBits(VkQueryControlFlagBits input_value)
    909 {
    910     if (input_value > (VK_QUERY_CONTROL_PRECISE_BIT))
    911         return 0;
    912     return 1;
    913 }
    914 
    915 
    916 static inline uint32_t validate_VkQueryPipelineStatisticFlagBits(VkQueryPipelineStatisticFlagBits input_value)
    917 {
    918     if (input_value > (VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT | VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT | VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT | VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT | VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT | VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT | VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT | VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT | VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT | VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT | VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT))
    919         return 0;
    920     return 1;
    921 }
    922 
    923 
    924 static inline uint32_t validate_VkQueryResultFlagBits(VkQueryResultFlagBits input_value)
    925 {
    926     if (input_value > (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | VK_QUERY_RESULT_PARTIAL_BIT))
    927         return 0;
    928     return 1;
    929 }
    930 
    931 
    932 static inline uint32_t validate_VkQueryType(VkQueryType input_value)
    933 {
    934     switch ((VkQueryType)input_value)
    935     {
    936         case VK_QUERY_TYPE_OCCLUSION:
    937         case VK_QUERY_TYPE_PIPELINE_STATISTICS:
    938         case VK_QUERY_TYPE_TIMESTAMP:
    939             return 1;
    940         default:
    941             return 0;
    942     }
    943 }
    944 
    945 
    946 static inline uint32_t validate_VkQueueFlagBits(VkQueueFlagBits input_value)
    947 {
    948     if (input_value > (VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT | VK_QUEUE_SPARSE_BINDING_BIT))
    949         return 0;
    950     return 1;
    951 }
    952 
    953 
    954 static inline uint32_t validate_VkRasterizationOrderAMD(VkRasterizationOrderAMD input_value)
    955 {
    956     switch ((VkRasterizationOrderAMD)input_value)
    957     {
    958         case VK_RASTERIZATION_ORDER_RELAXED_AMD:
    959         case VK_RASTERIZATION_ORDER_STRICT_AMD:
    960             return 1;
    961         default:
    962             return 0;
    963     }
    964 }
    965 
    966 
    967 static inline uint32_t validate_VkResult(VkResult input_value)
    968 {
    969     switch ((VkResult)input_value)
    970     {
    971         case VK_ERROR_DEVICE_LOST:
    972         case VK_ERROR_EXTENSION_NOT_PRESENT:
    973         case VK_ERROR_FEATURE_NOT_PRESENT:
    974         case VK_ERROR_FORMAT_NOT_SUPPORTED:
    975         case VK_ERROR_FRAGMENTED_POOL:
    976         case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:
    977         case VK_ERROR_INCOMPATIBLE_DRIVER:
    978         case VK_ERROR_INITIALIZATION_FAILED:
    979         case VK_ERROR_INVALID_SHADER_NV:
    980         case VK_ERROR_LAYER_NOT_PRESENT:
    981         case VK_ERROR_MEMORY_MAP_FAILED:
    982         case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:
    983         case VK_ERROR_OUT_OF_DATE_KHR:
    984         case VK_ERROR_OUT_OF_DEVICE_MEMORY:
    985         case VK_ERROR_OUT_OF_HOST_MEMORY:
    986         case VK_ERROR_SURFACE_LOST_KHR:
    987         case VK_ERROR_TOO_MANY_OBJECTS:
    988         case VK_ERROR_VALIDATION_FAILED_EXT:
    989         case VK_EVENT_RESET:
    990         case VK_EVENT_SET:
    991         case VK_INCOMPLETE:
    992         case VK_NOT_READY:
    993         case VK_SUBOPTIMAL_KHR:
    994         case VK_SUCCESS:
    995         case VK_TIMEOUT:
    996             return 1;
    997         default:
    998             return 0;
    999     }
   1000 }
   1001 
   1002 
   1003 static inline uint32_t validate_VkSampleCountFlagBits(VkSampleCountFlagBits input_value)
   1004 {
   1005     if (input_value > (VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_2_BIT | VK_SAMPLE_COUNT_4_BIT | VK_SAMPLE_COUNT_8_BIT | VK_SAMPLE_COUNT_16_BIT | VK_SAMPLE_COUNT_32_BIT | VK_SAMPLE_COUNT_64_BIT))
   1006         return 0;
   1007     return 1;
   1008 }
   1009 
   1010 
   1011 static inline uint32_t validate_VkSamplerAddressMode(VkSamplerAddressMode input_value)
   1012 {
   1013     switch ((VkSamplerAddressMode)input_value)
   1014     {
   1015         case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:
   1016         case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:
   1017         case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:
   1018         case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:
   1019         case VK_SAMPLER_ADDRESS_MODE_REPEAT:
   1020             return 1;
   1021         default:
   1022             return 0;
   1023     }
   1024 }
   1025 
   1026 
   1027 static inline uint32_t validate_VkSamplerMipmapMode(VkSamplerMipmapMode input_value)
   1028 {
   1029     switch ((VkSamplerMipmapMode)input_value)
   1030     {
   1031         case VK_SAMPLER_MIPMAP_MODE_LINEAR:
   1032         case VK_SAMPLER_MIPMAP_MODE_NEAREST:
   1033             return 1;
   1034         default:
   1035             return 0;
   1036     }
   1037 }
   1038 
   1039 
   1040 static inline uint32_t validate_VkShaderStageFlagBits(VkShaderStageFlagBits input_value)
   1041 {
   1042     if (input_value > (VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT | VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT | VK_SHADER_STAGE_GEOMETRY_BIT | VK_SHADER_STAGE_FRAGMENT_BIT | VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_ALL_GRAPHICS | VK_SHADER_STAGE_ALL))
   1043         return 0;
   1044     return 1;
   1045 }
   1046 
   1047 
   1048 static inline uint32_t validate_VkSharingMode(VkSharingMode input_value)
   1049 {
   1050     switch ((VkSharingMode)input_value)
   1051     {
   1052         case VK_SHARING_MODE_CONCURRENT:
   1053         case VK_SHARING_MODE_EXCLUSIVE:
   1054             return 1;
   1055         default:
   1056             return 0;
   1057     }
   1058 }
   1059 
   1060 
   1061 static inline uint32_t validate_VkSparseImageFormatFlagBits(VkSparseImageFormatFlagBits input_value)
   1062 {
   1063     if (input_value > (VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT | VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT | VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT))
   1064         return 0;
   1065     return 1;
   1066 }
   1067 
   1068 
   1069 static inline uint32_t validate_VkSparseMemoryBindFlagBits(VkSparseMemoryBindFlagBits input_value)
   1070 {
   1071     if (input_value > (VK_SPARSE_MEMORY_BIND_METADATA_BIT))
   1072         return 0;
   1073     return 1;
   1074 }
   1075 
   1076 
   1077 static inline uint32_t validate_VkStencilFaceFlagBits(VkStencilFaceFlagBits input_value)
   1078 {
   1079     if (input_value > (VK_STENCIL_FACE_FRONT_BIT | VK_STENCIL_FACE_BACK_BIT | VK_STENCIL_FRONT_AND_BACK))
   1080         return 0;
   1081     return 1;
   1082 }
   1083 
   1084 
   1085 static inline uint32_t validate_VkStencilOp(VkStencilOp input_value)
   1086 {
   1087     switch ((VkStencilOp)input_value)
   1088     {
   1089         case VK_STENCIL_OP_DECREMENT_AND_CLAMP:
   1090         case VK_STENCIL_OP_DECREMENT_AND_WRAP:
   1091         case VK_STENCIL_OP_INCREMENT_AND_CLAMP:
   1092         case VK_STENCIL_OP_INCREMENT_AND_WRAP:
   1093         case VK_STENCIL_OP_INVERT:
   1094         case VK_STENCIL_OP_KEEP:
   1095         case VK_STENCIL_OP_REPLACE:
   1096         case VK_STENCIL_OP_ZERO:
   1097             return 1;
   1098         default:
   1099             return 0;
   1100     }
   1101 }
   1102 
   1103 
   1104 static inline uint32_t validate_VkStructureType(VkStructureType input_value)
   1105 {
   1106     switch ((VkStructureType)input_value)
   1107     {
   1108         case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:
   1109         case VK_STRUCTURE_TYPE_APPLICATION_INFO:
   1110         case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:
   1111         case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:
   1112         case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:
   1113         case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:
   1114         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:
   1115         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:
   1116         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:
   1117         case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:
   1118         case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:
   1119         case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:
   1120         case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:
   1121         case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:
   1122         case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:
   1123         case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:
   1124         case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
   1125         case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:
   1126         case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
   1127         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:
   1128         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:
   1129         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:
   1130         case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:
   1131         case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:
   1132         case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:
   1133         case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:
   1134         case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:
   1135         case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:
   1136         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:
   1137         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:
   1138         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:
   1139         case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:
   1140         case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:
   1141         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:
   1142         case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:
   1143         case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:
   1144         case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:
   1145         case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:
   1146         case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:
   1147         case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:
   1148         case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:
   1149         case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:
   1150         case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:
   1151         case VK_STRUCTURE_TYPE_MEMORY_BARRIER:
   1152         case VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR:
   1153         case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:
   1154         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:
   1155         case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:
   1156         case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:
   1157         case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:
   1158         case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:
   1159         case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:
   1160         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:
   1161         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:
   1162         case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:
   1163         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:
   1164         case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:
   1165         case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:
   1166         case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:
   1167         case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:
   1168         case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:
   1169         case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:
   1170         case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:
   1171         case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:
   1172         case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:
   1173         case VK_STRUCTURE_TYPE_SUBMIT_INFO:
   1174         case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:
   1175         case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:
   1176         case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:
   1177         case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:
   1178         case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:
   1179         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
   1180         case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:
   1181         case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:
   1182             return 1;
   1183         default:
   1184             return 0;
   1185     }
   1186 }
   1187 
   1188 
   1189 static inline uint32_t validate_VkSubpassContents(VkSubpassContents input_value)
   1190 {
   1191     switch ((VkSubpassContents)input_value)
   1192     {
   1193         case VK_SUBPASS_CONTENTS_INLINE:
   1194         case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:
   1195             return 1;
   1196         default:
   1197             return 0;
   1198     }
   1199 }
   1200 
   1201 
   1202 static inline uint32_t validate_VkSurfaceTransformFlagBitsKHR(VkSurfaceTransformFlagBitsKHR input_value)
   1203 {
   1204     if (input_value > (VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR | VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR | VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR | VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR | VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR | VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR | VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR | VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR | VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR))
   1205         return 0;
   1206     return 1;
   1207 }
   1208 
   1209 
   1210 static inline uint32_t validate_VkSystemAllocationScope(VkSystemAllocationScope input_value)
   1211 {
   1212     switch ((VkSystemAllocationScope)input_value)
   1213     {
   1214         case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:
   1215         case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:
   1216         case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:
   1217         case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:
   1218         case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:
   1219             return 1;
   1220         default:
   1221             return 0;
   1222     }
   1223 }
   1224 
   1225 
   1226 static inline uint32_t validate_VkValidationCheckEXT(VkValidationCheckEXT input_value)
   1227 {
   1228     switch ((VkValidationCheckEXT)input_value)
   1229     {
   1230         case VK_VALIDATION_CHECK_ALL_EXT:
   1231             return 1;
   1232         default:
   1233             return 0;
   1234     }
   1235 }
   1236 
   1237 
   1238 static inline uint32_t validate_VkVertexInputRate(VkVertexInputRate input_value)
   1239 {
   1240     switch ((VkVertexInputRate)input_value)
   1241     {
   1242         case VK_VERTEX_INPUT_RATE_INSTANCE:
   1243         case VK_VERTEX_INPUT_RATE_VERTEX:
   1244             return 1;
   1245         default:
   1246             return 0;
   1247     }
   1248 }
   1249 
   1250