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_VkFenceCreateFlagBits(VkFenceCreateFlagBits input_value) 380 { 381 if (input_value > (VK_FENCE_CREATE_SIGNALED_BIT)) 382 return 0; 383 return 1; 384 } 385 386 387 static inline uint32_t validate_VkFilter(VkFilter input_value) 388 { 389 switch ((VkFilter)input_value) 390 { 391 case VK_FILTER_CUBIC_IMG: 392 case VK_FILTER_LINEAR: 393 case VK_FILTER_NEAREST: 394 return 1; 395 default: 396 return 0; 397 } 398 } 399 400 401 static inline uint32_t validate_VkFormat(VkFormat input_value) 402 { 403 switch ((VkFormat)input_value) 404 { 405 case VK_FORMAT_A1R5G5B5_UNORM_PACK16: 406 case VK_FORMAT_A2B10G10R10_SINT_PACK32: 407 case VK_FORMAT_A2B10G10R10_SNORM_PACK32: 408 case VK_FORMAT_A2B10G10R10_SSCALED_PACK32: 409 case VK_FORMAT_A2B10G10R10_UINT_PACK32: 410 case VK_FORMAT_A2B10G10R10_UNORM_PACK32: 411 case VK_FORMAT_A2B10G10R10_USCALED_PACK32: 412 case VK_FORMAT_A2R10G10B10_SINT_PACK32: 413 case VK_FORMAT_A2R10G10B10_SNORM_PACK32: 414 case VK_FORMAT_A2R10G10B10_SSCALED_PACK32: 415 case VK_FORMAT_A2R10G10B10_UINT_PACK32: 416 case VK_FORMAT_A2R10G10B10_UNORM_PACK32: 417 case VK_FORMAT_A2R10G10B10_USCALED_PACK32: 418 case VK_FORMAT_A8B8G8R8_SINT_PACK32: 419 case VK_FORMAT_A8B8G8R8_SNORM_PACK32: 420 case VK_FORMAT_A8B8G8R8_SRGB_PACK32: 421 case VK_FORMAT_A8B8G8R8_SSCALED_PACK32: 422 case VK_FORMAT_A8B8G8R8_UINT_PACK32: 423 case VK_FORMAT_A8B8G8R8_UNORM_PACK32: 424 case VK_FORMAT_A8B8G8R8_USCALED_PACK32: 425 case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: 426 case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: 427 case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: 428 case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: 429 case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: 430 case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: 431 case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: 432 case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: 433 case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: 434 case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: 435 case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: 436 case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: 437 case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: 438 case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: 439 case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: 440 case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: 441 case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: 442 case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: 443 case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: 444 case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: 445 case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: 446 case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: 447 case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: 448 case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: 449 case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: 450 case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: 451 case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: 452 case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: 453 case VK_FORMAT_B10G11R11_UFLOAT_PACK32: 454 case VK_FORMAT_B4G4R4A4_UNORM_PACK16: 455 case VK_FORMAT_B5G5R5A1_UNORM_PACK16: 456 case VK_FORMAT_B5G6R5_UNORM_PACK16: 457 case VK_FORMAT_B8G8R8A8_SINT: 458 case VK_FORMAT_B8G8R8A8_SNORM: 459 case VK_FORMAT_B8G8R8A8_SRGB: 460 case VK_FORMAT_B8G8R8A8_SSCALED: 461 case VK_FORMAT_B8G8R8A8_UINT: 462 case VK_FORMAT_B8G8R8A8_UNORM: 463 case VK_FORMAT_B8G8R8A8_USCALED: 464 case VK_FORMAT_B8G8R8_SINT: 465 case VK_FORMAT_B8G8R8_SNORM: 466 case VK_FORMAT_B8G8R8_SRGB: 467 case VK_FORMAT_B8G8R8_SSCALED: 468 case VK_FORMAT_B8G8R8_UINT: 469 case VK_FORMAT_B8G8R8_UNORM: 470 case VK_FORMAT_B8G8R8_USCALED: 471 case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: 472 case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: 473 case VK_FORMAT_BC1_RGB_SRGB_BLOCK: 474 case VK_FORMAT_BC1_RGB_UNORM_BLOCK: 475 case VK_FORMAT_BC2_SRGB_BLOCK: 476 case VK_FORMAT_BC2_UNORM_BLOCK: 477 case VK_FORMAT_BC3_SRGB_BLOCK: 478 case VK_FORMAT_BC3_UNORM_BLOCK: 479 case VK_FORMAT_BC4_SNORM_BLOCK: 480 case VK_FORMAT_BC4_UNORM_BLOCK: 481 case VK_FORMAT_BC5_SNORM_BLOCK: 482 case VK_FORMAT_BC5_UNORM_BLOCK: 483 case VK_FORMAT_BC6H_SFLOAT_BLOCK: 484 case VK_FORMAT_BC6H_UFLOAT_BLOCK: 485 case VK_FORMAT_BC7_SRGB_BLOCK: 486 case VK_FORMAT_BC7_UNORM_BLOCK: 487 case VK_FORMAT_D16_UNORM: 488 case VK_FORMAT_D16_UNORM_S8_UINT: 489 case VK_FORMAT_D24_UNORM_S8_UINT: 490 case VK_FORMAT_D32_SFLOAT: 491 case VK_FORMAT_D32_SFLOAT_S8_UINT: 492 case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: 493 case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: 494 case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: 495 case VK_FORMAT_EAC_R11_SNORM_BLOCK: 496 case VK_FORMAT_EAC_R11_UNORM_BLOCK: 497 case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: 498 case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: 499 case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: 500 case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: 501 case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: 502 case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: 503 case VK_FORMAT_R16G16B16A16_SFLOAT: 504 case VK_FORMAT_R16G16B16A16_SINT: 505 case VK_FORMAT_R16G16B16A16_SNORM: 506 case VK_FORMAT_R16G16B16A16_SSCALED: 507 case VK_FORMAT_R16G16B16A16_UINT: 508 case VK_FORMAT_R16G16B16A16_UNORM: 509 case VK_FORMAT_R16G16B16A16_USCALED: 510 case VK_FORMAT_R16G16B16_SFLOAT: 511 case VK_FORMAT_R16G16B16_SINT: 512 case VK_FORMAT_R16G16B16_SNORM: 513 case VK_FORMAT_R16G16B16_SSCALED: 514 case VK_FORMAT_R16G16B16_UINT: 515 case VK_FORMAT_R16G16B16_UNORM: 516 case VK_FORMAT_R16G16B16_USCALED: 517 case VK_FORMAT_R16G16_SFLOAT: 518 case VK_FORMAT_R16G16_SINT: 519 case VK_FORMAT_R16G16_SNORM: 520 case VK_FORMAT_R16G16_SSCALED: 521 case VK_FORMAT_R16G16_UINT: 522 case VK_FORMAT_R16G16_UNORM: 523 case VK_FORMAT_R16G16_USCALED: 524 case VK_FORMAT_R16_SFLOAT: 525 case VK_FORMAT_R16_SINT: 526 case VK_FORMAT_R16_SNORM: 527 case VK_FORMAT_R16_SSCALED: 528 case VK_FORMAT_R16_UINT: 529 case VK_FORMAT_R16_UNORM: 530 case VK_FORMAT_R16_USCALED: 531 case VK_FORMAT_R32G32B32A32_SFLOAT: 532 case VK_FORMAT_R32G32B32A32_SINT: 533 case VK_FORMAT_R32G32B32A32_UINT: 534 case VK_FORMAT_R32G32B32_SFLOAT: 535 case VK_FORMAT_R32G32B32_SINT: 536 case VK_FORMAT_R32G32B32_UINT: 537 case VK_FORMAT_R32G32_SFLOAT: 538 case VK_FORMAT_R32G32_SINT: 539 case VK_FORMAT_R32G32_UINT: 540 case VK_FORMAT_R32_SFLOAT: 541 case VK_FORMAT_R32_SINT: 542 case VK_FORMAT_R32_UINT: 543 case VK_FORMAT_R4G4B4A4_UNORM_PACK16: 544 case VK_FORMAT_R4G4_UNORM_PACK8: 545 case VK_FORMAT_R5G5B5A1_UNORM_PACK16: 546 case VK_FORMAT_R5G6B5_UNORM_PACK16: 547 case VK_FORMAT_R64G64B64A64_SFLOAT: 548 case VK_FORMAT_R64G64B64A64_SINT: 549 case VK_FORMAT_R64G64B64A64_UINT: 550 case VK_FORMAT_R64G64B64_SFLOAT: 551 case VK_FORMAT_R64G64B64_SINT: 552 case VK_FORMAT_R64G64B64_UINT: 553 case VK_FORMAT_R64G64_SFLOAT: 554 case VK_FORMAT_R64G64_SINT: 555 case VK_FORMAT_R64G64_UINT: 556 case VK_FORMAT_R64_SFLOAT: 557 case VK_FORMAT_R64_SINT: 558 case VK_FORMAT_R64_UINT: 559 case VK_FORMAT_R8G8B8A8_SINT: 560 case VK_FORMAT_R8G8B8A8_SNORM: 561 case VK_FORMAT_R8G8B8A8_SRGB: 562 case VK_FORMAT_R8G8B8A8_SSCALED: 563 case VK_FORMAT_R8G8B8A8_UINT: 564 case VK_FORMAT_R8G8B8A8_UNORM: 565 case VK_FORMAT_R8G8B8A8_USCALED: 566 case VK_FORMAT_R8G8B8_SINT: 567 case VK_FORMAT_R8G8B8_SNORM: 568 case VK_FORMAT_R8G8B8_SRGB: 569 case VK_FORMAT_R8G8B8_SSCALED: 570 case VK_FORMAT_R8G8B8_UINT: 571 case VK_FORMAT_R8G8B8_UNORM: 572 case VK_FORMAT_R8G8B8_USCALED: 573 case VK_FORMAT_R8G8_SINT: 574 case VK_FORMAT_R8G8_SNORM: 575 case VK_FORMAT_R8G8_SRGB: 576 case VK_FORMAT_R8G8_SSCALED: 577 case VK_FORMAT_R8G8_UINT: 578 case VK_FORMAT_R8G8_UNORM: 579 case VK_FORMAT_R8G8_USCALED: 580 case VK_FORMAT_R8_SINT: 581 case VK_FORMAT_R8_SNORM: 582 case VK_FORMAT_R8_SRGB: 583 case VK_FORMAT_R8_SSCALED: 584 case VK_FORMAT_R8_UINT: 585 case VK_FORMAT_R8_UNORM: 586 case VK_FORMAT_R8_USCALED: 587 case VK_FORMAT_S8_UINT: 588 case VK_FORMAT_UNDEFINED: 589 case VK_FORMAT_X8_D24_UNORM_PACK32: 590 return 1; 591 default: 592 return 0; 593 } 594 } 595 596 597 static inline uint32_t validate_VkFormatFeatureFlagBits(VkFormatFeatureFlagBits input_value) 598 { 599 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)) 600 return 0; 601 return 1; 602 } 603 604 605 static inline uint32_t validate_VkFrontFace(VkFrontFace input_value) 606 { 607 switch ((VkFrontFace)input_value) 608 { 609 case VK_FRONT_FACE_CLOCKWISE: 610 case VK_FRONT_FACE_COUNTER_CLOCKWISE: 611 return 1; 612 default: 613 return 0; 614 } 615 } 616 617 618 static inline uint32_t validate_VkImageAspectFlagBits(VkImageAspectFlagBits input_value) 619 { 620 if (input_value > (VK_IMAGE_ASPECT_COLOR_BIT | VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT | VK_IMAGE_ASPECT_METADATA_BIT)) 621 return 0; 622 return 1; 623 } 624 625 626 static inline uint32_t validate_VkImageCreateFlagBits(VkImageCreateFlagBits input_value) 627 { 628 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)) 629 return 0; 630 return 1; 631 } 632 633 634 static inline uint32_t validate_VkImageLayout(VkImageLayout input_value) 635 { 636 switch ((VkImageLayout)input_value) 637 { 638 case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: 639 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: 640 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: 641 case VK_IMAGE_LAYOUT_GENERAL: 642 case VK_IMAGE_LAYOUT_PREINITIALIZED: 643 case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: 644 case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: 645 case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: 646 case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: 647 case VK_IMAGE_LAYOUT_UNDEFINED: 648 return 1; 649 default: 650 return 0; 651 } 652 } 653 654 655 static inline uint32_t validate_VkImageTiling(VkImageTiling input_value) 656 { 657 switch ((VkImageTiling)input_value) 658 { 659 case VK_IMAGE_TILING_LINEAR: 660 case VK_IMAGE_TILING_OPTIMAL: 661 return 1; 662 default: 663 return 0; 664 } 665 } 666 667 668 static inline uint32_t validate_VkImageType(VkImageType input_value) 669 { 670 switch ((VkImageType)input_value) 671 { 672 case VK_IMAGE_TYPE_1D: 673 case VK_IMAGE_TYPE_2D: 674 case VK_IMAGE_TYPE_3D: 675 return 1; 676 default: 677 return 0; 678 } 679 } 680 681 682 static inline uint32_t validate_VkImageUsageFlagBits(VkImageUsageFlagBits input_value) 683 { 684 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)) 685 return 0; 686 return 1; 687 } 688 689 690 static inline uint32_t validate_VkImageViewType(VkImageViewType input_value) 691 { 692 switch ((VkImageViewType)input_value) 693 { 694 case VK_IMAGE_VIEW_TYPE_1D: 695 case VK_IMAGE_VIEW_TYPE_1D_ARRAY: 696 case VK_IMAGE_VIEW_TYPE_2D: 697 case VK_IMAGE_VIEW_TYPE_2D_ARRAY: 698 case VK_IMAGE_VIEW_TYPE_3D: 699 case VK_IMAGE_VIEW_TYPE_CUBE: 700 case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: 701 return 1; 702 default: 703 return 0; 704 } 705 } 706 707 708 static inline uint32_t validate_VkIndexType(VkIndexType input_value) 709 { 710 switch ((VkIndexType)input_value) 711 { 712 case VK_INDEX_TYPE_UINT16: 713 case VK_INDEX_TYPE_UINT32: 714 return 1; 715 default: 716 return 0; 717 } 718 } 719 720 721 static inline uint32_t validate_VkInternalAllocationType(VkInternalAllocationType input_value) 722 { 723 switch ((VkInternalAllocationType)input_value) 724 { 725 case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE: 726 return 1; 727 default: 728 return 0; 729 } 730 } 731 732 733 static inline uint32_t validate_VkLogicOp(VkLogicOp input_value) 734 { 735 switch ((VkLogicOp)input_value) 736 { 737 case VK_LOGIC_OP_AND: 738 case VK_LOGIC_OP_AND_INVERTED: 739 case VK_LOGIC_OP_AND_REVERSE: 740 case VK_LOGIC_OP_CLEAR: 741 case VK_LOGIC_OP_COPY: 742 case VK_LOGIC_OP_COPY_INVERTED: 743 case VK_LOGIC_OP_EQUIVALENT: 744 case VK_LOGIC_OP_INVERT: 745 case VK_LOGIC_OP_NAND: 746 case VK_LOGIC_OP_NOR: 747 case VK_LOGIC_OP_NO_OP: 748 case VK_LOGIC_OP_OR: 749 case VK_LOGIC_OP_OR_INVERTED: 750 case VK_LOGIC_OP_OR_REVERSE: 751 case VK_LOGIC_OP_SET: 752 case VK_LOGIC_OP_XOR: 753 return 1; 754 default: 755 return 0; 756 } 757 } 758 759 760 static inline uint32_t validate_VkMemoryHeapFlagBits(VkMemoryHeapFlagBits input_value) 761 { 762 if (input_value > (VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)) 763 return 0; 764 return 1; 765 } 766 767 768 static inline uint32_t validate_VkMemoryPropertyFlagBits(VkMemoryPropertyFlagBits input_value) 769 { 770 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)) 771 return 0; 772 return 1; 773 } 774 775 776 static inline uint32_t validate_VkPhysicalDeviceType(VkPhysicalDeviceType input_value) 777 { 778 switch ((VkPhysicalDeviceType)input_value) 779 { 780 case VK_PHYSICAL_DEVICE_TYPE_CPU: 781 case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: 782 case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: 783 case VK_PHYSICAL_DEVICE_TYPE_OTHER: 784 case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: 785 return 1; 786 default: 787 return 0; 788 } 789 } 790 791 792 static inline uint32_t validate_VkPipelineBindPoint(VkPipelineBindPoint input_value) 793 { 794 switch ((VkPipelineBindPoint)input_value) 795 { 796 case VK_PIPELINE_BIND_POINT_COMPUTE: 797 case VK_PIPELINE_BIND_POINT_GRAPHICS: 798 return 1; 799 default: 800 return 0; 801 } 802 } 803 804 805 static inline uint32_t validate_VkPipelineCacheHeaderVersion(VkPipelineCacheHeaderVersion input_value) 806 { 807 switch ((VkPipelineCacheHeaderVersion)input_value) 808 { 809 case VK_PIPELINE_CACHE_HEADER_VERSION_ONE: 810 return 1; 811 default: 812 return 0; 813 } 814 } 815 816 817 static inline uint32_t validate_VkPipelineCreateFlagBits(VkPipelineCreateFlagBits input_value) 818 { 819 if (input_value > (VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT | VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT | VK_PIPELINE_CREATE_DERIVATIVE_BIT)) 820 return 0; 821 return 1; 822 } 823 824 825 static inline uint32_t validate_VkPipelineStageFlagBits(VkPipelineStageFlagBits input_value) 826 { 827 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)) 828 return 0; 829 return 1; 830 } 831 832 833 static inline uint32_t validate_VkPolygonMode(VkPolygonMode input_value) 834 { 835 switch ((VkPolygonMode)input_value) 836 { 837 case VK_POLYGON_MODE_FILL: 838 case VK_POLYGON_MODE_LINE: 839 case VK_POLYGON_MODE_POINT: 840 return 1; 841 default: 842 return 0; 843 } 844 } 845 846 847 static inline uint32_t validate_VkPresentModeKHR(VkPresentModeKHR input_value) 848 { 849 switch ((VkPresentModeKHR)input_value) 850 { 851 case VK_PRESENT_MODE_FIFO_KHR: 852 case VK_PRESENT_MODE_FIFO_RELAXED_KHR: 853 case VK_PRESENT_MODE_IMMEDIATE_KHR: 854 case VK_PRESENT_MODE_MAILBOX_KHR: 855 return 1; 856 default: 857 return 0; 858 } 859 } 860 861 862 static inline uint32_t validate_VkPrimitiveTopology(VkPrimitiveTopology input_value) 863 { 864 switch ((VkPrimitiveTopology)input_value) 865 { 866 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: 867 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: 868 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: 869 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: 870 case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST: 871 case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: 872 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: 873 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: 874 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: 875 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: 876 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: 877 return 1; 878 default: 879 return 0; 880 } 881 } 882 883 884 static inline uint32_t validate_VkQueryControlFlagBits(VkQueryControlFlagBits input_value) 885 { 886 if (input_value > (VK_QUERY_CONTROL_PRECISE_BIT)) 887 return 0; 888 return 1; 889 } 890 891 892 static inline uint32_t validate_VkQueryPipelineStatisticFlagBits(VkQueryPipelineStatisticFlagBits input_value) 893 { 894 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)) 895 return 0; 896 return 1; 897 } 898 899 900 static inline uint32_t validate_VkQueryResultFlagBits(VkQueryResultFlagBits input_value) 901 { 902 if (input_value > (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | VK_QUERY_RESULT_PARTIAL_BIT)) 903 return 0; 904 return 1; 905 } 906 907 908 static inline uint32_t validate_VkQueryType(VkQueryType input_value) 909 { 910 switch ((VkQueryType)input_value) 911 { 912 case VK_QUERY_TYPE_OCCLUSION: 913 case VK_QUERY_TYPE_PIPELINE_STATISTICS: 914 case VK_QUERY_TYPE_TIMESTAMP: 915 return 1; 916 default: 917 return 0; 918 } 919 } 920 921 922 static inline uint32_t validate_VkQueueFlagBits(VkQueueFlagBits input_value) 923 { 924 if (input_value > (VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT | VK_QUEUE_SPARSE_BINDING_BIT)) 925 return 0; 926 return 1; 927 } 928 929 930 static inline uint32_t validate_VkRasterizationOrderAMD(VkRasterizationOrderAMD input_value) 931 { 932 switch ((VkRasterizationOrderAMD)input_value) 933 { 934 case VK_RASTERIZATION_ORDER_RELAXED_AMD: 935 case VK_RASTERIZATION_ORDER_STRICT_AMD: 936 return 1; 937 default: 938 return 0; 939 } 940 } 941 942 943 static inline uint32_t validate_VkResult(VkResult input_value) 944 { 945 switch ((VkResult)input_value) 946 { 947 case VK_ERROR_DEVICE_LOST: 948 case VK_ERROR_EXTENSION_NOT_PRESENT: 949 case VK_ERROR_FEATURE_NOT_PRESENT: 950 case VK_ERROR_FORMAT_NOT_SUPPORTED: 951 case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: 952 case VK_ERROR_INCOMPATIBLE_DRIVER: 953 case VK_ERROR_INITIALIZATION_FAILED: 954 case VK_ERROR_INVALID_SHADER_NV: 955 case VK_ERROR_LAYER_NOT_PRESENT: 956 case VK_ERROR_MEMORY_MAP_FAILED: 957 case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: 958 case VK_ERROR_OUT_OF_DATE_KHR: 959 case VK_ERROR_OUT_OF_DEVICE_MEMORY: 960 case VK_ERROR_OUT_OF_HOST_MEMORY: 961 case VK_ERROR_SURFACE_LOST_KHR: 962 case VK_ERROR_TOO_MANY_OBJECTS: 963 case VK_ERROR_VALIDATION_FAILED_EXT: 964 case VK_EVENT_RESET: 965 case VK_EVENT_SET: 966 case VK_INCOMPLETE: 967 case VK_NOT_READY: 968 case VK_SUBOPTIMAL_KHR: 969 case VK_SUCCESS: 970 case VK_TIMEOUT: 971 return 1; 972 default: 973 return 0; 974 } 975 } 976 977 978 static inline uint32_t validate_VkSampleCountFlagBits(VkSampleCountFlagBits input_value) 979 { 980 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)) 981 return 0; 982 return 1; 983 } 984 985 986 static inline uint32_t validate_VkSamplerAddressMode(VkSamplerAddressMode input_value) 987 { 988 switch ((VkSamplerAddressMode)input_value) 989 { 990 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER: 991 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE: 992 case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT: 993 case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE: 994 case VK_SAMPLER_ADDRESS_MODE_REPEAT: 995 return 1; 996 default: 997 return 0; 998 } 999 } 1000 1001 1002 static inline uint32_t validate_VkSamplerMipmapMode(VkSamplerMipmapMode input_value) 1003 { 1004 switch ((VkSamplerMipmapMode)input_value) 1005 { 1006 case VK_SAMPLER_MIPMAP_MODE_LINEAR: 1007 case VK_SAMPLER_MIPMAP_MODE_NEAREST: 1008 return 1; 1009 default: 1010 return 0; 1011 } 1012 } 1013 1014 1015 static inline uint32_t validate_VkShaderStageFlagBits(VkShaderStageFlagBits input_value) 1016 { 1017 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)) 1018 return 0; 1019 return 1; 1020 } 1021 1022 1023 static inline uint32_t validate_VkSharingMode(VkSharingMode input_value) 1024 { 1025 switch ((VkSharingMode)input_value) 1026 { 1027 case VK_SHARING_MODE_CONCURRENT: 1028 case VK_SHARING_MODE_EXCLUSIVE: 1029 return 1; 1030 default: 1031 return 0; 1032 } 1033 } 1034 1035 1036 static inline uint32_t validate_VkSparseImageFormatFlagBits(VkSparseImageFormatFlagBits input_value) 1037 { 1038 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)) 1039 return 0; 1040 return 1; 1041 } 1042 1043 1044 static inline uint32_t validate_VkSparseMemoryBindFlagBits(VkSparseMemoryBindFlagBits input_value) 1045 { 1046 if (input_value > (VK_SPARSE_MEMORY_BIND_METADATA_BIT)) 1047 return 0; 1048 return 1; 1049 } 1050 1051 1052 static inline uint32_t validate_VkStencilFaceFlagBits(VkStencilFaceFlagBits input_value) 1053 { 1054 if (input_value > (VK_STENCIL_FACE_FRONT_BIT | VK_STENCIL_FACE_BACK_BIT | VK_STENCIL_FRONT_AND_BACK)) 1055 return 0; 1056 return 1; 1057 } 1058 1059 1060 static inline uint32_t validate_VkStencilOp(VkStencilOp input_value) 1061 { 1062 switch ((VkStencilOp)input_value) 1063 { 1064 case VK_STENCIL_OP_DECREMENT_AND_CLAMP: 1065 case VK_STENCIL_OP_DECREMENT_AND_WRAP: 1066 case VK_STENCIL_OP_INCREMENT_AND_CLAMP: 1067 case VK_STENCIL_OP_INCREMENT_AND_WRAP: 1068 case VK_STENCIL_OP_INVERT: 1069 case VK_STENCIL_OP_KEEP: 1070 case VK_STENCIL_OP_REPLACE: 1071 case VK_STENCIL_OP_ZERO: 1072 return 1; 1073 default: 1074 return 0; 1075 } 1076 } 1077 1078 1079 static inline uint32_t validate_VkStructureType(VkStructureType input_value) 1080 { 1081 switch ((VkStructureType)input_value) 1082 { 1083 case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR: 1084 case VK_STRUCTURE_TYPE_APPLICATION_INFO: 1085 case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO: 1086 case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO: 1087 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: 1088 case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO: 1089 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO: 1090 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO: 1091 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO: 1092 case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO: 1093 case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO: 1094 case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET: 1095 case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT: 1096 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT: 1097 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT: 1098 case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: 1099 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO: 1100 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO: 1101 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO: 1102 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: 1103 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO: 1104 case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR: 1105 case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR: 1106 case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR: 1107 case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO: 1108 case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO: 1109 case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO: 1110 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO: 1111 case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO: 1112 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: 1113 case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO: 1114 case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO: 1115 case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO: 1116 case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO: 1117 case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE: 1118 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: 1119 case VK_STRUCTURE_TYPE_MEMORY_BARRIER: 1120 case VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR: 1121 case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO: 1122 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: 1123 case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: 1124 case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO: 1125 case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: 1126 case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO: 1127 case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: 1128 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO: 1129 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: 1130 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO: 1131 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO: 1132 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: 1133 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO: 1134 case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR: 1135 case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO: 1136 case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO: 1137 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: 1138 case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO: 1139 case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO: 1140 case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: 1141 case VK_STRUCTURE_TYPE_SUBMIT_INFO: 1142 case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR: 1143 case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR: 1144 case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR: 1145 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET: 1146 case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR: 1147 case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR: 1148 return 1; 1149 default: 1150 return 0; 1151 } 1152 } 1153 1154 1155 static inline uint32_t validate_VkSubpassContents(VkSubpassContents input_value) 1156 { 1157 switch ((VkSubpassContents)input_value) 1158 { 1159 case VK_SUBPASS_CONTENTS_INLINE: 1160 case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS: 1161 return 1; 1162 default: 1163 return 0; 1164 } 1165 } 1166 1167 1168 static inline uint32_t validate_VkSurfaceTransformFlagBitsKHR(VkSurfaceTransformFlagBitsKHR input_value) 1169 { 1170 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)) 1171 return 0; 1172 return 1; 1173 } 1174 1175 1176 static inline uint32_t validate_VkSystemAllocationScope(VkSystemAllocationScope input_value) 1177 { 1178 switch ((VkSystemAllocationScope)input_value) 1179 { 1180 case VK_SYSTEM_ALLOCATION_SCOPE_CACHE: 1181 case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND: 1182 case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE: 1183 case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE: 1184 case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT: 1185 return 1; 1186 default: 1187 return 0; 1188 } 1189 } 1190 1191 1192 static inline uint32_t validate_VkVertexInputRate(VkVertexInputRate input_value) 1193 { 1194 switch ((VkVertexInputRate)input_value) 1195 { 1196 case VK_VERTEX_INPUT_RATE_INSTANCE: 1197 case VK_VERTEX_INPUT_RATE_VERTEX: 1198 return 1; 1199 default: 1200 return 0; 1201 } 1202 } 1203 1204