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