#ifndef __vulkan_h_ #define __vulkan_h_ 1 #ifdef __cplusplus extern "C" { #endif /* ** Copyright (c) 2015 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the ** "Materials"), to deal in the Materials without restriction, including ** without limitation the rights to use, copy, modify, merge, publish, ** distribute, sublicense, and/or sell copies of the Materials, and to ** permit persons to whom the Materials are furnished to do so, subject to ** the following conditions: ** ** The above copyright notice and this permission notice shall be included ** in all copies or substantial portions of the Materials. ** ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. */ #include "vk_platform.h" #define VK_MAKE_VERSION(major, minor, patch) \ ((major << 22) | (minor << 12) | patch) // Vulkan API version supported by this file #define VK_API_VERSION VK_MAKE_VERSION(0, 90, 0) #if defined (__cplusplus) && (VK_UINTPTRLEAST64_MAX == UINTPTR_MAX) #define VK_TYPE_SAFE_COMPATIBLE_HANDLES 1 #endif #if defined(VK_TYPE_SAFE_COMPATIBLE_HANDLES) && !defined(VK_DISABLE_TYPE_SAFE_HANDLES) #define VK_DEFINE_PTR_HANDLE(_obj) struct _obj##_T { char _dummy; }; typedef _obj##_T* _obj; #define VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base) struct _obj##_T : public _base##_T {}; typedef _obj##_T* _obj; #define VK_DEFINE_BASE_HANDLE(_obj) VK_DEFINE_PTR_HANDLE(_obj) #define VK_DEFINE_DISP_SUBCLASS_HANDLE(_obj, _base) VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base) #define VK_DEFINE_NONDISP_SUBCLASS_HANDLE(_obj, _base) VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base) #else #define VK_DEFINE_BASE_HANDLE(_obj) typedef VkUintPtrLeast64 _obj; #define VK_DEFINE_DISP_SUBCLASS_HANDLE(_obj, _base) typedef uintptr_t _obj; #define VK_DEFINE_NONDISP_SUBCLASS_HANDLE(_obj, _base) typedef VkUintPtrLeast64 _obj; #endif #define VK_MAX_PHYSICAL_DEVICE_NAME 256 #define VK_UUID_LENGTH 16 #define VK_MAX_EXTENSION_NAME 256 #define VK_MAX_MEMORY_TYPES 32 #define VK_MAX_MEMORY_HEAPS 16 #define VK_LOD_CLAMP_NONE MAX_FLOAT #define VK_LAST_MIP_LEVEL UINT32_MAX #define VK_LAST_ARRAY_SLICE UINT32_MAX #define VK_WHOLE_SIZE UINT64_MAX #define VK_TRUE 1 #define VK_FALSE 0 #define VK_NULL_HANDLE 0 VK_DEFINE_BASE_HANDLE(VkObject) VK_DEFINE_DISP_SUBCLASS_HANDLE(VkInstance, VkObject) VK_DEFINE_DISP_SUBCLASS_HANDLE(VkPhysicalDevice, VkObject) VK_DEFINE_DISP_SUBCLASS_HANDLE(VkDevice, VkObject) VK_DEFINE_DISP_SUBCLASS_HANDLE(VkQueue, VkObject) VK_DEFINE_DISP_SUBCLASS_HANDLE(VkCmdBuffer, VkObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkNonDispatchable, VkObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkFence, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDeviceMemory, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkBuffer, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkImage, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkSemaphore, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkEvent, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkQueryPool, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkBufferView, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkImageView, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkColorAttachmentView, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDepthStencilView, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkShaderModule, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkShader, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipelineCache, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipelineLayout, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipeline, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDescriptorSetLayout, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkSampler, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDescriptorPool, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDescriptorSet, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicStateObject, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicVpState, VkDynamicStateObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicRsState, VkDynamicStateObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicCbState, VkDynamicStateObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicDsState, VkDynamicStateObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkFramebuffer, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkRenderPass, VkNonDispatchable) // This macro defines INT_MAX in enumerations to force compilers to use 32 bits // to represent them. This may or may not be necessary on some compilers. The // option to compile it out may allow compilers that warn about missing enumerants // in switch statements to be silenced. // Using this macro is not needed for flag bit enums because those aren't used // as storage type anywhere. #define VK_MAX_ENUM(Prefix) VK_##Prefix##_MAX_ENUM = 0x7FFFFFFF // This macro defines the BEGIN_RANGE, END_RANGE, NUM, and MAX_ENUM constants for // the enumerations. #define VK_ENUM_RANGE(Prefix, First, Last) \ VK_##Prefix##_BEGIN_RANGE = VK_##Prefix##_##First, \ VK_##Prefix##_END_RANGE = VK_##Prefix##_##Last, \ VK_NUM_##Prefix = (VK_##Prefix##_END_RANGE - VK_##Prefix##_BEGIN_RANGE + 1), \ VK_MAX_ENUM(Prefix) // This is a helper macro to define the value of flag bit enum values. #define VK_BIT(bit) (1 << (bit)) typedef enum { VK_SUCCESS = 0, VK_UNSUPPORTED = 1, VK_NOT_READY = 2, VK_TIMEOUT = 3, VK_EVENT_SET = 4, VK_EVENT_RESET = 5, VK_ERROR_UNKNOWN = -1, VK_ERROR_UNAVAILABLE = -2, VK_ERROR_INITIALIZATION_FAILED = -3, VK_ERROR_OUT_OF_HOST_MEMORY = -4, VK_ERROR_OUT_OF_DEVICE_MEMORY = -5, VK_ERROR_DEVICE_ALREADY_CREATED = -6, VK_ERROR_DEVICE_LOST = -7, VK_ERROR_INVALID_POINTER = -8, VK_ERROR_INVALID_VALUE = -9, VK_ERROR_INVALID_HANDLE = -10, VK_ERROR_INVALID_ORDINAL = -11, VK_ERROR_INVALID_MEMORY_SIZE = -12, VK_ERROR_INVALID_EXTENSION = -13, VK_ERROR_INVALID_FLAGS = -14, VK_ERROR_INVALID_ALIGNMENT = -15, VK_ERROR_INVALID_FORMAT = -16, VK_ERROR_INVALID_IMAGE = -17, VK_ERROR_INVALID_DESCRIPTOR_SET_DATA = -18, VK_ERROR_INVALID_QUEUE_TYPE = -19, VK_ERROR_INVALID_OBJECT_TYPE = -20, VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION = -21, VK_ERROR_BAD_SHADER_CODE = -22, VK_ERROR_BAD_PIPELINE_DATA = -23, VK_ERROR_NOT_MAPPABLE = -24, VK_ERROR_MEMORY_MAP_FAILED = -25, VK_ERROR_MEMORY_UNMAP_FAILED = -26, VK_ERROR_INCOMPATIBLE_DEVICE = -27, VK_ERROR_INCOMPATIBLE_DRIVER = -28, VK_ERROR_INCOMPLETE_COMMAND_BUFFER = -29, VK_ERROR_BUILDING_COMMAND_BUFFER = -30, VK_ERROR_MEMORY_NOT_BOUND = -31, VK_ERROR_INCOMPATIBLE_QUEUE = -32, VK_RESULT_BEGIN_RANGE = VK_ERROR_INCOMPATIBLE_QUEUE, VK_RESULT_END_RANGE = VK_EVENT_RESET, VK_RESULT_NUM = (VK_EVENT_RESET - VK_ERROR_INCOMPATIBLE_QUEUE + 1), VK_RESULT_MAX_ENUM = 0x7FFFFFFF } VkResult; typedef enum { VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 1, VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 2, VK_STRUCTURE_TYPE_MEMORY_OPEN_INFO = 3, VK_STRUCTURE_TYPE_PEER_MEMORY_OPEN_INFO = 4, VK_STRUCTURE_TYPE_BUFFER_VIEW_ATTACH_INFO = 5, VK_STRUCTURE_TYPE_IMAGE_VIEW_ATTACH_INFO = 6, VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 7, VK_STRUCTURE_TYPE_COLOR_ATTACHMENT_VIEW_CREATE_INFO = 8, VK_STRUCTURE_TYPE_DEPTH_STENCIL_VIEW_CREATE_INFO = 9, VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 10, VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 11, VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 12, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 13, VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO = 14, VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO = 15, VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO = 16, VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO = 17, VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO = 18, VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 19, VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 20, VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 21, VK_STRUCTURE_TYPE_SEMAPHORE_OPEN_INFO = 22, VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 23, VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 24, VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 25, VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO = 26, VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO = 27, VK_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO = 28, VK_STRUCTURE_TYPE_PIPELINE_VP_STATE_CREATE_INFO = 29, VK_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO = 30, VK_STRUCTURE_TYPE_PIPELINE_MS_STATE_CREATE_INFO = 31, VK_STRUCTURE_TYPE_PIPELINE_CB_STATE_CREATE_INFO = 32, VK_STRUCTURE_TYPE_PIPELINE_DS_STATE_CREATE_INFO = 33, VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 34, VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 35, VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 36, VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 38, VK_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO = 39, VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 40, VK_STRUCTURE_TYPE_LAYER_CREATE_INFO = 41, VK_STRUCTURE_TYPE_MEMORY_BARRIER = 42, VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 43, VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 44, VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 45, VK_STRUCTURE_TYPE_UPDATE_SAMPLERS = 46, VK_STRUCTURE_TYPE_UPDATE_SAMPLER_TEXTURES = 47, VK_STRUCTURE_TYPE_UPDATE_IMAGES = 48, VK_STRUCTURE_TYPE_UPDATE_BUFFERS = 49, VK_STRUCTURE_TYPE_UPDATE_AS_COPY = 50, VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 51, VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 52, VK_ENUM_RANGE(STRUCTURE_TYPE, APPLICATION_INFO, PIPELINE_LAYOUT_CREATE_INFO) } VkStructureType; typedef enum { VK_SYSTEM_ALLOC_TYPE_API_OBJECT = 0, VK_SYSTEM_ALLOC_TYPE_INTERNAL = 1, VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP = 2, VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER = 3, VK_SYSTEM_ALLOC_TYPE_DEBUG = 4, VK_SYSTEM_ALLOC_TYPE_BEGIN_RANGE = VK_SYSTEM_ALLOC_TYPE_API_OBJECT, VK_SYSTEM_ALLOC_TYPE_END_RANGE = VK_SYSTEM_ALLOC_TYPE_DEBUG, VK_SYSTEM_ALLOC_TYPE_NUM = (VK_SYSTEM_ALLOC_TYPE_DEBUG - VK_SYSTEM_ALLOC_TYPE_API_OBJECT + 1), VK_SYSTEM_ALLOC_TYPE_MAX_ENUM = 0x7FFFFFFF } VkSystemAllocType; typedef enum { VK_FORMAT_UNDEFINED = 0, VK_FORMAT_R4G4_UNORM = 1, VK_FORMAT_R4G4_USCALED = 2, VK_FORMAT_R4G4B4A4_UNORM = 3, VK_FORMAT_R4G4B4A4_USCALED = 4, VK_FORMAT_R5G6B5_UNORM = 5, VK_FORMAT_R5G6B5_USCALED = 6, VK_FORMAT_R5G5B5A1_UNORM = 7, VK_FORMAT_R5G5B5A1_USCALED = 8, VK_FORMAT_R8_UNORM = 9, VK_FORMAT_R8_SNORM = 10, VK_FORMAT_R8_USCALED = 11, VK_FORMAT_R8_SSCALED = 12, VK_FORMAT_R8_UINT = 13, VK_FORMAT_R8_SINT = 14, VK_FORMAT_R8_SRGB = 15, VK_FORMAT_R8G8_UNORM = 16, VK_FORMAT_R8G8_SNORM = 17, VK_FORMAT_R8G8_USCALED = 18, VK_FORMAT_R8G8_SSCALED = 19, VK_FORMAT_R8G8_UINT = 20, VK_FORMAT_R8G8_SINT = 21, VK_FORMAT_R8G8_SRGB = 22, VK_FORMAT_R8G8B8_UNORM = 23, VK_FORMAT_R8G8B8_SNORM = 24, VK_FORMAT_R8G8B8_USCALED = 25, VK_FORMAT_R8G8B8_SSCALED = 26, VK_FORMAT_R8G8B8_UINT = 27, VK_FORMAT_R8G8B8_SINT = 28, VK_FORMAT_R8G8B8_SRGB = 29, VK_FORMAT_R8G8B8A8_UNORM = 30, VK_FORMAT_R8G8B8A8_SNORM = 31, VK_FORMAT_R8G8B8A8_USCALED = 32, VK_FORMAT_R8G8B8A8_SSCALED = 33, VK_FORMAT_R8G8B8A8_UINT = 34, VK_FORMAT_R8G8B8A8_SINT = 35, VK_FORMAT_R8G8B8A8_SRGB = 36, VK_FORMAT_R10G10B10A2_UNORM = 37, VK_FORMAT_R10G10B10A2_SNORM = 38, VK_FORMAT_R10G10B10A2_USCALED = 39, VK_FORMAT_R10G10B10A2_SSCALED = 40, VK_FORMAT_R10G10B10A2_UINT = 41, VK_FORMAT_R10G10B10A2_SINT = 42, VK_FORMAT_R16_UNORM = 43, VK_FORMAT_R16_SNORM = 44, VK_FORMAT_R16_USCALED = 45, VK_FORMAT_R16_SSCALED = 46, VK_FORMAT_R16_UINT = 47, VK_FORMAT_R16_SINT = 48, VK_FORMAT_R16_SFLOAT = 49, VK_FORMAT_R16G16_UNORM = 50, VK_FORMAT_R16G16_SNORM = 51, VK_FORMAT_R16G16_USCALED = 52, VK_FORMAT_R16G16_SSCALED = 53, VK_FORMAT_R16G16_UINT = 54, VK_FORMAT_R16G16_SINT = 55, VK_FORMAT_R16G16_SFLOAT = 56, VK_FORMAT_R16G16B16_UNORM = 57, VK_FORMAT_R16G16B16_SNORM = 58, VK_FORMAT_R16G16B16_USCALED = 59, VK_FORMAT_R16G16B16_SSCALED = 60, VK_FORMAT_R16G16B16_UINT = 61, VK_FORMAT_R16G16B16_SINT = 62, VK_FORMAT_R16G16B16_SFLOAT = 63, VK_FORMAT_R16G16B16A16_UNORM = 64, VK_FORMAT_R16G16B16A16_SNORM = 65, VK_FORMAT_R16G16B16A16_USCALED = 66, VK_FORMAT_R16G16B16A16_SSCALED = 67, VK_FORMAT_R16G16B16A16_UINT = 68, VK_FORMAT_R16G16B16A16_SINT = 69, VK_FORMAT_R16G16B16A16_SFLOAT = 70, VK_FORMAT_R32_UINT = 71, VK_FORMAT_R32_SINT = 72, VK_FORMAT_R32_SFLOAT = 73, VK_FORMAT_R32G32_UINT = 74, VK_FORMAT_R32G32_SINT = 75, VK_FORMAT_R32G32_SFLOAT = 76, VK_FORMAT_R32G32B32_UINT = 77, VK_FORMAT_R32G32B32_SINT = 78, VK_FORMAT_R32G32B32_SFLOAT = 79, VK_FORMAT_R32G32B32A32_UINT = 80, VK_FORMAT_R32G32B32A32_SINT = 81, VK_FORMAT_R32G32B32A32_SFLOAT = 82, VK_FORMAT_R64_SFLOAT = 83, VK_FORMAT_R64G64_SFLOAT = 84, VK_FORMAT_R64G64B64_SFLOAT = 85, VK_FORMAT_R64G64B64A64_SFLOAT = 86, VK_FORMAT_R11G11B10_UFLOAT = 87, VK_FORMAT_R9G9B9E5_UFLOAT = 88, VK_FORMAT_D16_UNORM = 89, VK_FORMAT_D24_UNORM = 90, VK_FORMAT_D32_SFLOAT = 91, VK_FORMAT_S8_UINT = 92, VK_FORMAT_D16_UNORM_S8_UINT = 93, VK_FORMAT_D24_UNORM_S8_UINT = 94, VK_FORMAT_D32_SFLOAT_S8_UINT = 95, VK_FORMAT_BC1_RGB_UNORM = 96, VK_FORMAT_BC1_RGB_SRGB = 97, VK_FORMAT_BC1_RGBA_UNORM = 98, VK_FORMAT_BC1_RGBA_SRGB = 99, VK_FORMAT_BC2_UNORM = 100, VK_FORMAT_BC2_SRGB = 101, VK_FORMAT_BC3_UNORM = 102, VK_FORMAT_BC3_SRGB = 103, VK_FORMAT_BC4_UNORM = 104, VK_FORMAT_BC4_SNORM = 105, VK_FORMAT_BC5_UNORM = 106, VK_FORMAT_BC5_SNORM = 107, VK_FORMAT_BC6H_UFLOAT = 108, VK_FORMAT_BC6H_SFLOAT = 109, VK_FORMAT_BC7_UNORM = 110, VK_FORMAT_BC7_SRGB = 111, VK_FORMAT_ETC2_R8G8B8_UNORM = 112, VK_FORMAT_ETC2_R8G8B8_SRGB = 113, VK_FORMAT_ETC2_R8G8B8A1_UNORM = 114, VK_FORMAT_ETC2_R8G8B8A1_SRGB = 115, VK_FORMAT_ETC2_R8G8B8A8_UNORM = 116, VK_FORMAT_ETC2_R8G8B8A8_SRGB = 117, VK_FORMAT_EAC_R11_UNORM = 118, VK_FORMAT_EAC_R11_SNORM = 119, VK_FORMAT_EAC_R11G11_UNORM = 120, VK_FORMAT_EAC_R11G11_SNORM = 121, VK_FORMAT_ASTC_4x4_UNORM = 122, VK_FORMAT_ASTC_4x4_SRGB = 123, VK_FORMAT_ASTC_5x4_UNORM = 124, VK_FORMAT_ASTC_5x4_SRGB = 125, VK_FORMAT_ASTC_5x5_UNORM = 126, VK_FORMAT_ASTC_5x5_SRGB = 127, VK_FORMAT_ASTC_6x5_UNORM = 128, VK_FORMAT_ASTC_6x5_SRGB = 129, VK_FORMAT_ASTC_6x6_UNORM = 130, VK_FORMAT_ASTC_6x6_SRGB = 131, VK_FORMAT_ASTC_8x5_UNORM = 132, VK_FORMAT_ASTC_8x5_SRGB = 133, VK_FORMAT_ASTC_8x6_UNORM = 134, VK_FORMAT_ASTC_8x6_SRGB = 135, VK_FORMAT_ASTC_8x8_UNORM = 136, VK_FORMAT_ASTC_8x8_SRGB = 137, VK_FORMAT_ASTC_10x5_UNORM = 138, VK_FORMAT_ASTC_10x5_SRGB = 139, VK_FORMAT_ASTC_10x6_UNORM = 140, VK_FORMAT_ASTC_10x6_SRGB = 141, VK_FORMAT_ASTC_10x8_UNORM = 142, VK_FORMAT_ASTC_10x8_SRGB = 143, VK_FORMAT_ASTC_10x10_UNORM = 144, VK_FORMAT_ASTC_10x10_SRGB = 145, VK_FORMAT_ASTC_12x10_UNORM = 146, VK_FORMAT_ASTC_12x10_SRGB = 147, VK_FORMAT_ASTC_12x12_UNORM = 148, VK_FORMAT_ASTC_12x12_SRGB = 149, VK_FORMAT_B4G4R4A4_UNORM = 150, VK_FORMAT_B5G5R5A1_UNORM = 151, VK_FORMAT_B5G6R5_UNORM = 152, VK_FORMAT_B5G6R5_USCALED = 153, VK_FORMAT_B8G8R8_UNORM = 154, VK_FORMAT_B8G8R8_SNORM = 155, VK_FORMAT_B8G8R8_USCALED = 156, VK_FORMAT_B8G8R8_SSCALED = 157, VK_FORMAT_B8G8R8_UINT = 158, VK_FORMAT_B8G8R8_SINT = 159, VK_FORMAT_B8G8R8_SRGB = 160, VK_FORMAT_B8G8R8A8_UNORM = 161, VK_FORMAT_B8G8R8A8_SNORM = 162, VK_FORMAT_B8G8R8A8_USCALED = 163, VK_FORMAT_B8G8R8A8_SSCALED = 164, VK_FORMAT_B8G8R8A8_UINT = 165, VK_FORMAT_B8G8R8A8_SINT = 166, VK_FORMAT_B8G8R8A8_SRGB = 167, VK_FORMAT_B10G10R10A2_UNORM = 168, VK_FORMAT_B10G10R10A2_SNORM = 169, VK_FORMAT_B10G10R10A2_USCALED = 170, VK_FORMAT_B10G10R10A2_SSCALED = 171, VK_FORMAT_B10G10R10A2_UINT = 172, VK_FORMAT_B10G10R10A2_SINT = 173, VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED, VK_FORMAT_END_RANGE = VK_FORMAT_B10G10R10A2_SINT, VK_FORMAT_NUM = (VK_FORMAT_B10G10R10A2_SINT - VK_FORMAT_UNDEFINED + 1), VK_FORMAT_MAX_ENUM = 0x7FFFFFFF } VkFormat; typedef enum { VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, VK_PHYSICAL_DEVICE_TYPE_CPU = 4, VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER, VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU, VK_PHYSICAL_DEVICE_TYPE_NUM = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1), VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkPhysicalDeviceType; typedef enum { VK_OBJECT_TYPE_INSTANCE = 0, VK_OBJECT_TYPE_PHYSICAL_DEVICE = 1, VK_OBJECT_TYPE_DEVICE = 2, VK_OBJECT_TYPE_QUEUE = 3, VK_OBJECT_TYPE_COMMAND_BUFFER = 4, VK_OBJECT_TYPE_DEVICE_MEMORY = 5, VK_OBJECT_TYPE_BUFFER = 6, VK_OBJECT_TYPE_BUFFER_VIEW = 7, VK_OBJECT_TYPE_IMAGE = 8, VK_OBJECT_TYPE_IMAGE_VIEW = 9, VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW = 10, VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW = 11, VK_OBJECT_TYPE_SHADER = 12, VK_OBJECT_TYPE_PIPELINE = 13, VK_OBJECT_TYPE_PIPELINE_LAYOUT = 14, VK_OBJECT_TYPE_SAMPLER = 15, VK_OBJECT_TYPE_DESCRIPTOR_SET = 16, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 17, VK_OBJECT_TYPE_DESCRIPTOR_POOL = 18, VK_OBJECT_TYPE_DYNAMIC_VP_STATE = 19, VK_OBJECT_TYPE_DYNAMIC_RS_STATE = 20, VK_OBJECT_TYPE_DYNAMIC_CB_STATE = 21, VK_OBJECT_TYPE_DYNAMIC_DS_STATE = 22, VK_OBJECT_TYPE_FENCE = 23, VK_OBJECT_TYPE_SEMAPHORE = 24, VK_OBJECT_TYPE_EVENT = 25, VK_OBJECT_TYPE_QUERY_POOL = 26, VK_OBJECT_TYPE_FRAMEBUFFER = 27, VK_OBJECT_TYPE_RENDER_PASS = 28, // Valid ranges for core Vulkan: VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_INSTANCE, VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_RENDER_PASS, VK_NUM_OBJECT_TYPE = (VK_OBJECT_TYPE_END_RANGE - VK_OBJECT_TYPE_BEGIN_RANGE + 1), VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF } VkObjectType; typedef enum { VK_IMAGE_ASPECT_COLOR = 0, VK_IMAGE_ASPECT_DEPTH = 1, VK_IMAGE_ASPECT_STENCIL = 2, VK_IMAGE_ASPECT_BEGIN_RANGE = VK_IMAGE_ASPECT_COLOR, VK_IMAGE_ASPECT_END_RANGE = VK_IMAGE_ASPECT_STENCIL, VK_IMAGE_ASPECT_NUM = (VK_IMAGE_ASPECT_STENCIL - VK_IMAGE_ASPECT_COLOR + 1), VK_IMAGE_ASPECT_MAX_ENUM = 0x7FFFFFFF } VkImageAspect; typedef enum { VK_QUERY_TYPE_OCCLUSION = 0, VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION, VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_PIPELINE_STATISTICS, VK_QUERY_TYPE_NUM = (VK_QUERY_TYPE_PIPELINE_STATISTICS - VK_QUERY_TYPE_OCCLUSION + 1), VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF } VkQueryType; typedef enum { VK_BUFFER_VIEW_TYPE_RAW = 0, VK_BUFFER_VIEW_TYPE_FORMATTED = 1, VK_BUFFER_VIEW_TYPE_BEGIN_RANGE = VK_BUFFER_VIEW_TYPE_RAW, VK_BUFFER_VIEW_TYPE_END_RANGE = VK_BUFFER_VIEW_TYPE_FORMATTED, VK_BUFFER_VIEW_TYPE_NUM = (VK_BUFFER_VIEW_TYPE_FORMATTED - VK_BUFFER_VIEW_TYPE_RAW + 1), VK_BUFFER_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF } VkBufferViewType; typedef enum { VK_IMAGE_TYPE_1D = 0, VK_IMAGE_TYPE_2D = 1, VK_IMAGE_TYPE_3D = 2, VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D, VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D, VK_IMAGE_TYPE_NUM = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1), VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkImageType; typedef enum { VK_IMAGE_TILING_LINEAR = 0, VK_IMAGE_TILING_OPTIMAL = 1, VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_LINEAR, VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_TILING_NUM = (VK_IMAGE_TILING_OPTIMAL - VK_IMAGE_TILING_LINEAR + 1), VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF } VkImageTiling; typedef enum { VK_IMAGE_VIEW_TYPE_1D = 0, VK_IMAGE_VIEW_TYPE_2D = 1, VK_IMAGE_VIEW_TYPE_3D = 2, VK_IMAGE_VIEW_TYPE_CUBE = 3, VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D, VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, VK_IMAGE_VIEW_TYPE_NUM = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1), VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF } VkImageViewType; typedef enum { VK_CHANNEL_SWIZZLE_ZERO = 0, VK_CHANNEL_SWIZZLE_ONE = 1, VK_CHANNEL_SWIZZLE_R = 2, VK_CHANNEL_SWIZZLE_G = 3, VK_CHANNEL_SWIZZLE_B = 4, VK_CHANNEL_SWIZZLE_A = 5, VK_CHANNEL_SWIZZLE_BEGIN_RANGE = VK_CHANNEL_SWIZZLE_ZERO, VK_CHANNEL_SWIZZLE_END_RANGE = VK_CHANNEL_SWIZZLE_A, VK_CHANNEL_SWIZZLE_NUM = (VK_CHANNEL_SWIZZLE_A - VK_CHANNEL_SWIZZLE_ZERO + 1), VK_CHANNEL_SWIZZLE_MAX_ENUM = 0x7FFFFFFF } VkChannelSwizzle; typedef enum { VK_SHADER_STAGE_VERTEX = 0, VK_SHADER_STAGE_TESS_CONTROL = 1, VK_SHADER_STAGE_TESS_EVALUATION = 2, VK_SHADER_STAGE_GEOMETRY = 3, VK_SHADER_STAGE_FRAGMENT = 4, VK_SHADER_STAGE_COMPUTE = 5, VK_SHADER_STAGE_BEGIN_RANGE = VK_SHADER_STAGE_VERTEX, VK_SHADER_STAGE_END_RANGE = VK_SHADER_STAGE_COMPUTE, VK_SHADER_STAGE_NUM = (VK_SHADER_STAGE_COMPUTE - VK_SHADER_STAGE_VERTEX + 1), VK_SHADER_STAGE_MAX_ENUM = 0x7FFFFFFF } VkShaderStage; typedef enum { VK_VERTEX_INPUT_STEP_RATE_VERTEX = 0, VK_VERTEX_INPUT_STEP_RATE_INSTANCE = 1, VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_STEP_RATE_VERTEX, VK_VERTEX_INPUT_STEP_RATE_END_RANGE = VK_VERTEX_INPUT_STEP_RATE_INSTANCE, VK_VERTEX_INPUT_STEP_RATE_NUM = (VK_VERTEX_INPUT_STEP_RATE_INSTANCE - VK_VERTEX_INPUT_STEP_RATE_VERTEX + 1), VK_VERTEX_INPUT_STEP_RATE_MAX_ENUM = 0x7FFFFFFF } VkVertexInputStepRate; typedef enum { VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ = 6, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ = 7, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ = 8, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ = 9, VK_PRIMITIVE_TOPOLOGY_PATCH = 10, VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH, VK_PRIMITIVE_TOPOLOGY_NUM = (VK_PRIMITIVE_TOPOLOGY_PATCH - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1), VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF } VkPrimitiveTopology; typedef enum { VK_FILL_MODE_POINTS = 0, VK_FILL_MODE_WIREFRAME = 1, VK_FILL_MODE_SOLID = 2, VK_FILL_MODE_BEGIN_RANGE = VK_FILL_MODE_POINTS, VK_FILL_MODE_END_RANGE = VK_FILL_MODE_SOLID, VK_FILL_MODE_NUM = (VK_FILL_MODE_SOLID - VK_FILL_MODE_POINTS + 1), VK_FILL_MODE_MAX_ENUM = 0x7FFFFFFF } VkFillMode; typedef enum { VK_CULL_MODE_NONE = 0, VK_CULL_MODE_FRONT = 1, VK_CULL_MODE_BACK = 2, VK_CULL_MODE_FRONT_AND_BACK = 3, VK_CULL_MODE_BEGIN_RANGE = VK_CULL_MODE_NONE, VK_CULL_MODE_END_RANGE = VK_CULL_MODE_FRONT_AND_BACK, VK_CULL_MODE_NUM = (VK_CULL_MODE_FRONT_AND_BACK - VK_CULL_MODE_NONE + 1), VK_CULL_MODE_MAX_ENUM = 0x7FFFFFFF } VkCullMode; typedef enum { VK_FRONT_FACE_CCW = 0, VK_FRONT_FACE_CW = 1, VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_CCW, VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CW, VK_FRONT_FACE_NUM = (VK_FRONT_FACE_CW - VK_FRONT_FACE_CCW + 1), VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF } VkFrontFace; typedef enum { VK_COMPARE_OP_NEVER = 0, VK_COMPARE_OP_LESS = 1, VK_COMPARE_OP_EQUAL = 2, VK_COMPARE_OP_LESS_EQUAL = 3, VK_COMPARE_OP_GREATER = 4, VK_COMPARE_OP_NOT_EQUAL = 5, VK_COMPARE_OP_GREATER_EQUAL = 6, VK_COMPARE_OP_ALWAYS = 7, VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER, VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NUM = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1), VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF } VkCompareOp; typedef enum { VK_STENCIL_OP_KEEP = 0, VK_STENCIL_OP_ZERO = 1, VK_STENCIL_OP_REPLACE = 2, VK_STENCIL_OP_INC_CLAMP = 3, VK_STENCIL_OP_DEC_CLAMP = 4, VK_STENCIL_OP_INVERT = 5, VK_STENCIL_OP_INC_WRAP = 6, VK_STENCIL_OP_DEC_WRAP = 7, VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP, VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DEC_WRAP, VK_STENCIL_OP_NUM = (VK_STENCIL_OP_DEC_WRAP - VK_STENCIL_OP_KEEP + 1), VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF } VkStencilOp; typedef enum { VK_LOGIC_OP_CLEAR = 0, VK_LOGIC_OP_AND = 1, VK_LOGIC_OP_AND_REVERSE = 2, VK_LOGIC_OP_COPY = 3, VK_LOGIC_OP_AND_INVERTED = 4, VK_LOGIC_OP_NOOP = 5, VK_LOGIC_OP_XOR = 6, VK_LOGIC_OP_OR = 7, VK_LOGIC_OP_NOR = 8, VK_LOGIC_OP_EQUIV = 9, VK_LOGIC_OP_INVERT = 10, VK_LOGIC_OP_OR_REVERSE = 11, VK_LOGIC_OP_COPY_INVERTED = 12, VK_LOGIC_OP_OR_INVERTED = 13, VK_LOGIC_OP_NAND = 14, VK_LOGIC_OP_SET = 15, VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR, VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET, VK_LOGIC_OP_NUM = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1), VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF } VkLogicOp; typedef enum { VK_BLEND_ZERO = 0, VK_BLEND_ONE = 1, VK_BLEND_SRC_COLOR = 2, VK_BLEND_ONE_MINUS_SRC_COLOR = 3, VK_BLEND_DEST_COLOR = 4, VK_BLEND_ONE_MINUS_DEST_COLOR = 5, VK_BLEND_SRC_ALPHA = 6, VK_BLEND_ONE_MINUS_SRC_ALPHA = 7, VK_BLEND_DEST_ALPHA = 8, VK_BLEND_ONE_MINUS_DEST_ALPHA = 9, VK_BLEND_CONSTANT_COLOR = 10, VK_BLEND_ONE_MINUS_CONSTANT_COLOR = 11, VK_BLEND_CONSTANT_ALPHA = 12, VK_BLEND_ONE_MINUS_CONSTANT_ALPHA = 13, VK_BLEND_SRC_ALPHA_SATURATE = 14, VK_BLEND_SRC1_COLOR = 15, VK_BLEND_ONE_MINUS_SRC1_COLOR = 16, VK_BLEND_SRC1_ALPHA = 17, VK_BLEND_ONE_MINUS_SRC1_ALPHA = 18, VK_BLEND_BEGIN_RANGE = VK_BLEND_ZERO, VK_BLEND_END_RANGE = VK_BLEND_ONE_MINUS_SRC1_ALPHA, VK_BLEND_NUM = (VK_BLEND_ONE_MINUS_SRC1_ALPHA - VK_BLEND_ZERO + 1), VK_BLEND_MAX_ENUM = 0x7FFFFFFF } VkBlend; typedef enum { VK_BLEND_OP_ADD = 0, VK_BLEND_OP_SUBTRACT = 1, VK_BLEND_OP_REVERSE_SUBTRACT = 2, VK_BLEND_OP_MIN = 3, VK_BLEND_OP_MAX = 4, VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD, VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX, VK_BLEND_OP_NUM = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1), VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF } VkBlendOp; typedef enum { VK_TEX_FILTER_NEAREST = 0, VK_TEX_FILTER_LINEAR = 1, VK_TEX_FILTER_BEGIN_RANGE = VK_TEX_FILTER_NEAREST, VK_TEX_FILTER_END_RANGE = VK_TEX_FILTER_LINEAR, VK_TEX_FILTER_NUM = (VK_TEX_FILTER_LINEAR - VK_TEX_FILTER_NEAREST + 1), VK_TEX_FILTER_MAX_ENUM = 0x7FFFFFFF } VkTexFilter; typedef enum { VK_TEX_MIPMAP_MODE_BASE = 0, VK_TEX_MIPMAP_MODE_NEAREST = 1, VK_TEX_MIPMAP_MODE_LINEAR = 2, VK_TEX_MIPMAP_MODE_BEGIN_RANGE = VK_TEX_MIPMAP_MODE_BASE, VK_TEX_MIPMAP_MODE_END_RANGE = VK_TEX_MIPMAP_MODE_LINEAR, VK_TEX_MIPMAP_MODE_NUM = (VK_TEX_MIPMAP_MODE_LINEAR - VK_TEX_MIPMAP_MODE_BASE + 1), VK_TEX_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF } VkTexMipmapMode; typedef enum { VK_TEX_ADDRESS_WRAP = 0, VK_TEX_ADDRESS_MIRROR = 1, VK_TEX_ADDRESS_CLAMP = 2, VK_TEX_ADDRESS_MIRROR_ONCE = 3, VK_TEX_ADDRESS_CLAMP_BORDER = 4, VK_TEX_ADDRESS_BEGIN_RANGE = VK_TEX_ADDRESS_WRAP, VK_TEX_ADDRESS_END_RANGE = VK_TEX_ADDRESS_CLAMP_BORDER, VK_TEX_ADDRESS_NUM = (VK_TEX_ADDRESS_CLAMP_BORDER - VK_TEX_ADDRESS_WRAP + 1), VK_TEX_ADDRESS_MAX_ENUM = 0x7FFFFFFF } VkTexAddress; typedef enum { VK_BORDER_COLOR_OPAQUE_WHITE = 0, VK_BORDER_COLOR_TRANSPARENT_BLACK = 1, VK_BORDER_COLOR_OPAQUE_BLACK = 2, VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_OPAQUE_WHITE, VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_OPAQUE_BLACK, VK_BORDER_COLOR_NUM = (VK_BORDER_COLOR_OPAQUE_BLACK - VK_BORDER_COLOR_OPAQUE_WHITE + 1), VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF } VkBorderColor; typedef enum { VK_DESCRIPTOR_TYPE_SAMPLER = 0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, VK_DESCRIPTOR_TYPE_NUM = (VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC - VK_DESCRIPTOR_TYPE_SAMPLER + 1), VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF } VkDescriptorType; typedef enum { VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT = 0, VK_DESCRIPTOR_POOL_USAGE_DYNAMIC = 1, VK_DESCRIPTOR_POOL_USAGE_BEGIN_RANGE = VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT, VK_DESCRIPTOR_POOL_USAGE_END_RANGE = VK_DESCRIPTOR_POOL_USAGE_DYNAMIC, VK_DESCRIPTOR_POOL_USAGE_NUM = (VK_DESCRIPTOR_POOL_USAGE_DYNAMIC - VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT + 1), VK_DESCRIPTOR_POOL_USAGE_MAX_ENUM = 0x7FFFFFFF } VkDescriptorPoolUsage; typedef enum { VK_DESCRIPTOR_UPDATE_MODE_COPY = 0, VK_DESCRIPTOR_UPDATE_MODE_FASTEST = 1, VK_ENUM_RANGE(DESCRIPTOR_UPDATE_MODE, COPY, FASTEST) } VkDescriptorUpdateMode; typedef enum { VK_DESCRIPTOR_SET_USAGE_ONE_SHOT = 0, VK_DESCRIPTOR_SET_USAGE_STATIC = 1, VK_DESCRIPTOR_SET_USAGE_BEGIN_RANGE = VK_DESCRIPTOR_SET_USAGE_ONE_SHOT, VK_DESCRIPTOR_SET_USAGE_END_RANGE = VK_DESCRIPTOR_SET_USAGE_STATIC, VK_DESCRIPTOR_SET_USAGE_NUM = (VK_DESCRIPTOR_SET_USAGE_STATIC - VK_DESCRIPTOR_SET_USAGE_ONE_SHOT + 1), VK_DESCRIPTOR_SET_USAGE_MAX_ENUM = 0x7FFFFFFF } VkDescriptorSetUsage; typedef enum { VK_IMAGE_LAYOUT_UNDEFINED = 0, VK_IMAGE_LAYOUT_GENERAL = 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL = 6, VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL = 7, VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL, VK_IMAGE_LAYOUT_NUM = (VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL - VK_IMAGE_LAYOUT_UNDEFINED + 1), VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF } VkImageLayout; typedef enum { VK_ATTACHMENT_LOAD_OP_LOAD = 0, VK_ATTACHMENT_LOAD_OP_CLEAR = 1, VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE, VK_ATTACHMENT_LOAD_OP_NUM = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1), VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF } VkAttachmentLoadOp; typedef enum { VK_ATTACHMENT_STORE_OP_STORE = 0, VK_ATTACHMENT_STORE_OP_RESOLVE_MSAA = 1, VK_ATTACHMENT_STORE_OP_DONT_CARE = 2, VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE, VK_ATTACHMENT_STORE_OP_NUM = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1), VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF } VkAttachmentStoreOp; typedef enum { VK_PIPELINE_BIND_POINT_COMPUTE = 0, VK_PIPELINE_BIND_POINT_GRAPHICS = 1, VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE, VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS, VK_PIPELINE_BIND_POINT_NUM = (VK_PIPELINE_BIND_POINT_GRAPHICS - VK_PIPELINE_BIND_POINT_COMPUTE + 1), VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF } VkPipelineBindPoint; typedef enum { VK_STATE_BIND_POINT_VIEWPORT = 0, VK_STATE_BIND_POINT_RASTER = 1, VK_STATE_BIND_POINT_COLOR_BLEND = 2, VK_STATE_BIND_POINT_DEPTH_STENCIL = 3, VK_STATE_BIND_POINT_BEGIN_RANGE = VK_STATE_BIND_POINT_VIEWPORT, VK_STATE_BIND_POINT_END_RANGE = VK_STATE_BIND_POINT_DEPTH_STENCIL, VK_STATE_BIND_POINT_NUM = (VK_STATE_BIND_POINT_DEPTH_STENCIL - VK_STATE_BIND_POINT_VIEWPORT + 1), VK_STATE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF } VkStateBindPoint; typedef enum { VK_INDEX_TYPE_UINT16 = 0, VK_INDEX_TYPE_UINT32 = 1, VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16, VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32, VK_INDEX_TYPE_NUM = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1), VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF } VkIndexType; typedef enum { VK_PIPE_EVENT_TOP_OF_PIPE = 1, VK_PIPE_EVENT_VERTEX_PROCESSING_COMPLETE = 2, VK_PIPE_EVENT_LOCAL_FRAGMENT_PROCESSING_COMPLETE = 3, VK_PIPE_EVENT_FRAGMENT_PROCESSING_COMPLETE = 4, VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE = 5, VK_PIPE_EVENT_COMPUTE_PIPELINE_COMPLETE = 6, VK_PIPE_EVENT_TRANSFER_COMPLETE = 7, VK_PIPE_EVENT_COMMANDS_COMPLETE = 8, VK_PIPE_EVENT_BEGIN_RANGE = VK_PIPE_EVENT_TOP_OF_PIPE, VK_PIPE_EVENT_END_RANGE = VK_PIPE_EVENT_COMMANDS_COMPLETE, VK_PIPE_EVENT_NUM = (VK_PIPE_EVENT_COMMANDS_COMPLETE - VK_PIPE_EVENT_TOP_OF_PIPE + 1), VK_PIPE_EVENT_MAX_ENUM = 0x7FFFFFFF } VkPipeEvent; typedef enum { VK_WAIT_EVENT_TOP_OF_PIPE = 1, VK_WAIT_EVENT_BEFORE_RASTERIZATION = 2, VK_WAIT_EVENT_BEGIN_RANGE = VK_WAIT_EVENT_TOP_OF_PIPE, VK_WAIT_EVENT_END_RANGE = VK_WAIT_EVENT_BEFORE_RASTERIZATION, VK_WAIT_EVENT_NUM = (VK_WAIT_EVENT_BEFORE_RASTERIZATION - VK_WAIT_EVENT_TOP_OF_PIPE + 1), VK_WAIT_EVENT_MAX_ENUM = 0x7FFFFFFF } VkWaitEvent; typedef enum { VK_TIMESTAMP_TYPE_TOP = 0, VK_TIMESTAMP_TYPE_BOTTOM = 1, VK_TIMESTAMP_TYPE_BEGIN_RANGE = VK_TIMESTAMP_TYPE_TOP, VK_TIMESTAMP_TYPE_END_RANGE = VK_TIMESTAMP_TYPE_BOTTOM, VK_TIMESTAMP_TYPE_NUM = (VK_TIMESTAMP_TYPE_BOTTOM - VK_TIMESTAMP_TYPE_TOP + 1), VK_TIMESTAMP_TYPE_MAX_ENUM = 0x7FFFFFFF } VkTimestampType; typedef enum { VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, VK_FORMAT_FEATURE_CONVERSION_BIT = 0x00000400, } VkFormatFeatureFlagBits; typedef VkFlags VkFormatFeatureFlags; typedef enum { VK_QUEUE_GRAPHICS_BIT = 0x00000001, VK_QUEUE_COMPUTE_BIT = 0x00000002, VK_QUEUE_DMA_BIT = 0x00000004, VK_QUEUE_SPARSE_MEMMGR_BIT = 0x00000008, VK_QUEUE_EXTENDED_BIT = 0x40000000, } VkQueueFlagBits; typedef VkFlags VkQueueFlags; typedef enum { VK_MEMORY_PROPERTY_DEVICE_ONLY = 0, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000001, VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT = 0x00000002, VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT = 0x00000004, VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT = 0x00000008, } VkMemoryPropertyFlagBits; typedef VkFlags VkMemoryPropertyFlags; typedef enum { VK_DEVICE_CREATE_VALIDATION_BIT = 0x00000001, VK_DEVICE_CREATE_MULTI_DEVICE_IQ_MATCH_BIT = 0x00000002, } VkDeviceCreateFlagBits; typedef VkFlags VkDeviceCreateFlags; typedef VkFlags VkMemoryMapFlags; typedef enum { VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, } VkFenceCreateFlagBits; typedef VkFlags VkFenceCreateFlags; typedef VkFlags VkSemaphoreCreateFlags; typedef VkFlags VkEventCreateFlags; typedef enum { VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT = 0x00000001, VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT = 0x00000002, VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT = 0x00000004, VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT = 0x00000008, VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT = 0x00000010, VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT = 0x00000020, VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT = 0x00000040, VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT = 0x00000080, VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT = 0x00000100, VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT = 0x00000200, VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT = 0x00000400, } VkQueryPipelineStatisticFlagBits; typedef VkFlags VkQueryPipelineStatisticFlags; typedef enum { VK_QUERY_RESULT_DEFAULT = 0, VK_QUERY_RESULT_64_BIT = 0x00000001, VK_QUERY_RESULT_WAIT_BIT = 0x00000002, VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, } VkQueryResultFlagBits; typedef VkFlags VkQueryResultFlags; typedef enum { VK_BUFFER_USAGE_GENERAL = 0, VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT = 0x00000001, VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002, VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, } VkBufferUsageFlagBits; typedef VkFlags VkBufferUsageFlags; typedef enum { VK_BUFFER_CREATE_SPARSE_BIT = 0x00000001, } VkBufferCreateFlagBits; typedef VkFlags VkBufferCreateFlags; typedef enum { VK_IMAGE_USAGE_GENERAL = 0, VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT = 0x00000001, VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002, VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, VK_IMAGE_USAGE_DEPTH_STENCIL_BIT = 0x00000020, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, } VkImageUsageFlagBits; typedef VkFlags VkImageUsageFlags; typedef enum { VK_IMAGE_CREATE_INVARIANT_DATA_BIT = 0x00000001, VK_IMAGE_CREATE_SPARSE_BIT = 0x00000002, VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000004, VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000008, } VkImageCreateFlagBits; typedef VkFlags VkImageCreateFlags; typedef enum { VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH_BIT = 0x00000001, VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002, } VkDepthStencilViewCreateFlagBits; typedef VkFlags VkDepthStencilViewCreateFlags; typedef VkFlags VkShaderCreateFlags; typedef enum { VK_CHANNEL_R_BIT = 0x00000001, VK_CHANNEL_G_BIT = 0x00000002, VK_CHANNEL_B_BIT = 0x00000004, VK_CHANNEL_A_BIT = 0x00000008, } VkChannelFlagBits; typedef VkFlags VkChannelFlags; typedef enum { VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, } VkPipelineCreateFlagBits; typedef VkFlags VkPipelineCreateFlags; typedef enum { VK_SHADER_STAGE_VERTEX_BIT = 0x00000001, VK_SHADER_STAGE_TESS_CONTROL_BIT = 0x00000002, VK_SHADER_STAGE_TESS_EVALUATION_BIT = 0x00000004, VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008, VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010, VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, VK_SHADER_STAGE_ALL = 0x7FFFFFFF, } VkShaderStageFlagBits; typedef VkFlags VkShaderStageFlags; typedef VkFlags VkCmdBufferCreateFlags; typedef enum { VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT = 0x00000001, VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT = 0x00000002, VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT = 0x00000004, VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT = 0x00000008, } VkCmdBufferOptimizeFlagBits; typedef VkFlags VkCmdBufferOptimizeFlags; typedef enum { VK_PIPE_EVENT_TOP_OF_PIPE_BIT = 0x00000001, VK_PIPE_EVENT_VERTEX_PROCESSING_COMPLETE_BIT = 0x00000002, VK_PIPE_EVENT_LOCAL_FRAGMENT_PROCESSING_COMPLETE_BIT = 0x00000004, VK_PIPE_EVENT_FRAGMENT_PROCESSING_COMPLETE_BIT = 0x00000008, VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE_BIT = 0x00000010, VK_PIPE_EVENT_COMPUTE_PIPELINE_COMPLETE_BIT = 0x00000020, VK_PIPE_EVENT_TRANSFER_COMPLETE_BIT = 0x00000040, VK_PIPE_EVENT_COMMANDS_COMPLETE_BIT = 0x00000080, VK_PIPE_EVENT_CPU_SIGNAL_BIT = 0x00000100, } VkPipeEventFlagBits; typedef VkFlags VkPipeEventFlags; typedef enum { VK_QUERY_CONTROL_CONSERVATIVE_BIT = 0x00000001, } VkQueryControlFlagBits; typedef VkFlags VkQueryControlFlags; typedef enum { VK_MEMORY_OUTPUT_HOST_WRITE_BIT = 0x00000001, VK_MEMORY_OUTPUT_SHADER_WRITE_BIT = 0x00000002, VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT = 0x00000004, VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000008, VK_MEMORY_OUTPUT_TRANSFER_BIT = 0x00000010, } VkMemoryOutputFlagBits; typedef VkFlags VkMemoryOutputFlags; typedef enum { VK_MEMORY_INPUT_HOST_READ_BIT = 0x00000001, VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT = 0x00000002, VK_MEMORY_INPUT_INDEX_FETCH_BIT = 0x00000004, VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT = 0x00000008, VK_MEMORY_INPUT_UNIFORM_READ_BIT = 0x00000010, VK_MEMORY_INPUT_SHADER_READ_BIT = 0x00000020, VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT = 0x00000040, VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000080, VK_MEMORY_INPUT_TRANSFER_BIT = 0x00000100, } VkMemoryInputFlagBits; typedef VkFlags VkMemoryInputFlags; typedef enum { // Info type for vkGetPhysicalDeviceInfo() VK_PHYSICAL_DEVICE_INFO_TYPE_PROPERTIES = 0x00000000, VK_PHYSICAL_DEVICE_INFO_TYPE_PERFORMANCE = 0x00000001, VK_PHYSICAL_DEVICE_INFO_TYPE_QUEUE_PROPERTIES = 0x00000002, VK_PHYSICAL_DEVICE_INFO_TYPE_MEMORY_PROPERTIES = 0x00000003, VK_ENUM_RANGE(PHYSICAL_DEVICE_INFO_TYPE, PROPERTIES, MEMORY_PROPERTIES) } VkPhysicalDeviceInfoType; typedef enum { // Info type for vkGetGlobalExtensionInfo() and vkGetPhysicalDeviceExtensionInfo() VK_EXTENSION_INFO_TYPE_COUNT = 0x00000000, VK_EXTENSION_INFO_TYPE_PROPERTIES = 0x00000001, VK_ENUM_RANGE(EXTENSION_INFO_TYPE, COUNT, PROPERTIES) } VkExtensionInfoType; typedef enum { // Info type for vkGetFormatInfo() VK_FORMAT_INFO_TYPE_PROPERTIES = 0x00000000, VK_ENUM_RANGE(FORMAT_INFO_TYPE, PROPERTIES, PROPERTIES) } VkFormatInfoType; typedef enum { // Info type for vkGetImageSubresourceInfo() VK_SUBRESOURCE_INFO_TYPE_LAYOUT = 0x00000000, VK_ENUM_RANGE(SUBRESOURCE_INFO_TYPE, LAYOUT, LAYOUT) } VkSubresourceInfoType; typedef enum { // Info type for vkGetObjectInfo() VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT = 0x00000000, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS = 0x00000001, VK_ENUM_RANGE(OBJECT_INFO_TYPE, MEMORY_ALLOCATION_COUNT, MEMORY_REQUIREMENTS) } VkObjectInfoType; // Physical device compatibility flags typedef VkFlags VkPhysicalDeviceCompatibilityFlags; typedef enum { VK_PHYSICAL_DEVICE_COMPATIBILITY_FEATURES_BIT = VK_BIT(0), VK_PHYSICAL_DEVICE_COMPATIBILITY_IQ_MATCH_BIT = VK_BIT(1), VK_PHYSICAL_DEVICE_COMPATIBILITY_PEER_TRANSFER_BIT = VK_BIT(2), VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_MEMORY_BIT = VK_BIT(3), VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_SYNC_BIT = VK_BIT(4), VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE0_DISPLAY_BIT = VK_BIT(5), VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE1_DISPLAY_BIT = VK_BIT(6), } VkPhysicalDeviceCompatibilityFlagBits; typedef struct { VkStructureType sType; const void* pNext; const char* pAppName; uint32_t appVersion; const char* pEngineName; uint32_t engineVersion; uint32_t apiVersion; } VkApplicationInfo; typedef void* (VKAPI *PFN_vkAllocFunction)( void* pUserData, size_t size, size_t alignment, VkSystemAllocType allocType); typedef void (VKAPI *PFN_vkFreeFunction)( void* pUserData, void* pMem); typedef struct { void* pUserData; PFN_vkAllocFunction pfnAlloc; PFN_vkFreeFunction pfnFree; } VkAllocCallbacks; typedef struct { VkStructureType sType; const void* pNext; const VkApplicationInfo* pAppInfo; const VkAllocCallbacks* pAllocCb; uint32_t extensionCount; const char*const* ppEnabledExtensionNames; } VkInstanceCreateInfo; typedef struct { uint32_t apiVersion; uint32_t driverVersion; uint32_t vendorId; uint32_t deviceId; VkPhysicalDeviceType deviceType; char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME]; VkDeviceSize maxInlineMemoryUpdateSize; uint32_t maxBoundDescriptorSets; uint32_t maxThreadGroupSize; uint64_t timestampFrequency; bool32_t multiColorAttachmentClears; uint32_t maxDescriptorSets; uint32_t maxViewports; uint32_t maxColorAttachments; } VkPhysicalDeviceProperties; typedef struct { float maxDeviceClock; float aluPerClock; float texPerClock; float primsPerClock; float pixelsPerClock; } VkPhysicalDevicePerformance; typedef struct { VkPhysicalDeviceCompatibilityFlags compatibilityFlags; } VkPhysicalDeviceCompatibilityInfo; typedef struct { VkQueueFlags queueFlags; uint32_t queueCount; bool32_t supportsTimestamps; } VkPhysicalDeviceQueueProperties; typedef struct { bool32_t supportsMigration; bool32_t supportsPinning; } VkPhysicalDeviceMemoryProperties; typedef struct { uint32_t queueNodeIndex; uint32_t queueCount; } VkDeviceQueueCreateInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t queueRecordCount; const VkDeviceQueueCreateInfo* pRequestedQueues; uint32_t extensionCount; const char*const* ppEnabledExtensionNames; VkDeviceCreateFlags flags; } VkDeviceCreateInfo; typedef struct { char extName[VK_MAX_EXTENSION_NAME]; uint32_t version; } VkExtensionProperties; typedef struct { VkStructureType sType; const void* pNext; VkDeviceSize allocationSize; VkMemoryPropertyFlags memProps; } VkMemoryAllocInfo; typedef struct { VkDeviceSize size; VkDeviceSize alignment; VkDeviceSize granularity; VkMemoryPropertyFlags memPropsAllowed; VkMemoryPropertyFlags memPropsRequired; } VkMemoryRequirements; typedef struct { VkImageAspect aspect; uint32_t mipLevel; uint32_t arraySlice; } VkImageSubresource; typedef struct { int32_t x; int32_t y; int32_t z; } VkOffset3D; typedef struct { int32_t width; int32_t height; int32_t depth; } VkExtent3D; typedef struct { VkImageSubresource subresource; VkOffset3D offset; VkExtent3D extent; } VkImageMemoryBindInfo; typedef struct { VkStructureType sType; const void* pNext; VkFenceCreateFlags flags; } VkFenceCreateInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t initialCount; VkSemaphoreCreateFlags flags; } VkSemaphoreCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkEventCreateFlags flags; } VkEventCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkQueryType queryType; uint32_t slots; VkQueryPipelineStatisticFlags pipelineStatistics; } VkQueryPoolCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkDeviceSize size; VkBufferUsageFlags usage; VkBufferCreateFlags flags; } VkBufferCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkBuffer buffer; VkBufferViewType viewType; VkFormat format; VkDeviceSize offset; VkDeviceSize range; } VkBufferViewCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkImageType imageType; VkFormat format; VkExtent3D extent; uint32_t mipLevels; uint32_t arraySize; uint32_t samples; VkImageTiling tiling; VkImageUsageFlags usage; VkImageCreateFlags flags; } VkImageCreateInfo; typedef struct { VkDeviceSize offset; VkDeviceSize size; VkDeviceSize rowPitch; VkDeviceSize depthPitch; } VkSubresourceLayout; typedef struct { VkChannelSwizzle r; VkChannelSwizzle g; VkChannelSwizzle b; VkChannelSwizzle a; } VkChannelMapping; typedef struct { VkImageAspect aspect; uint32_t baseMipLevel; uint32_t mipLevels; uint32_t baseArraySlice; uint32_t arraySize; } VkImageSubresourceRange; typedef struct { VkStructureType sType; const void* pNext; VkImage image; VkImageViewType viewType; VkFormat format; VkChannelMapping channels; VkImageSubresourceRange subresourceRange; float minLod; } VkImageViewCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkImage image; VkFormat format; uint32_t mipLevel; uint32_t baseArraySlice; uint32_t arraySize; VkImage msaaResolveImage; VkImageSubresourceRange msaaResolveSubResource; } VkColorAttachmentViewCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkImage image; uint32_t mipLevel; uint32_t baseArraySlice; uint32_t arraySize; VkImage msaaResolveImage; VkImageSubresourceRange msaaResolveSubResource; VkDepthStencilViewCreateFlags flags; } VkDepthStencilViewCreateInfo; typedef struct { VkStructureType sType; const void* pNext; size_t codeSize; const void* pCode; VkShaderCreateFlags flags; } VkShaderCreateInfo; typedef struct { uint32_t constantId; uint32_t offset; } VkSpecializationMapEntry; typedef struct { uint32_t bufferId; size_t bufferSize; const void* pBufferData; } VkLinkConstBuffer; typedef struct { uint32_t mapEntryCount; const VkSpecializationMapEntry* pMap; const void* pData; } VkSpecializationInfo; typedef struct { VkShaderStage stage; VkShader shader; uint32_t linkConstBufferCount; const VkLinkConstBuffer* pLinkConstBufferInfo; const VkSpecializationInfo* pSpecializationInfo; } VkPipelineShader; typedef struct { VkStructureType sType; const void* pNext; VkPipelineShader shader; } VkPipelineShaderStageCreateInfo; typedef struct { uint32_t binding; uint32_t strideInBytes; VkVertexInputStepRate stepRate; } VkVertexInputBindingDescription; typedef struct { uint32_t location; uint32_t binding; VkFormat format; uint32_t offsetInBytes; } VkVertexInputAttributeDescription; typedef struct { VkStructureType sType; const void* pNext; uint32_t bindingCount; const VkVertexInputBindingDescription* pVertexBindingDescriptions; uint32_t attributeCount; const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; } VkPipelineVertexInputCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkPrimitiveTopology topology; bool32_t primitiveRestartEnable; } VkPipelineIaStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t patchControlPoints; } VkPipelineTessStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t viewportCount; } VkPipelineVpStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; bool32_t depthClipEnable; bool32_t rasterizerDiscardEnable; bool32_t programPointSize; VkFillMode fillMode; VkCullMode cullMode; VkFrontFace frontFace; } VkPipelineRsStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t samples; bool32_t multisampleEnable; bool32_t sampleShadingEnable; float minSampleShading; VkSampleMask sampleMask; } VkPipelineMsStateCreateInfo; typedef struct { VkStencilOp stencilFailOp; VkStencilOp stencilPassOp; VkStencilOp stencilDepthFailOp; VkCompareOp stencilCompareOp; } VkStencilOpState; typedef struct { VkStructureType sType; const void* pNext; VkFormat format; bool32_t depthTestEnable; bool32_t depthWriteEnable; VkCompareOp depthCompareOp; bool32_t depthBoundsEnable; bool32_t stencilTestEnable; VkStencilOpState front; VkStencilOpState back; } VkPipelineDsStateCreateInfo; typedef struct { bool32_t blendEnable; VkFormat format; VkBlend srcBlendColor; VkBlend destBlendColor; VkBlendOp blendOpColor; VkBlend srcBlendAlpha; VkBlend destBlendAlpha; VkBlendOp blendOpAlpha; VkChannelFlags channelWriteMask; } VkPipelineCbAttachmentState; typedef struct { VkStructureType sType; const void* pNext; bool32_t alphaToCoverageEnable; bool32_t logicOpEnable; VkLogicOp logicOp; uint32_t attachmentCount; const VkPipelineCbAttachmentState* pAttachments; } VkPipelineCbStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkPipelineCreateFlags flags; VkPipelineLayout layout; } VkGraphicsPipelineCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkPipelineShader cs; VkPipelineCreateFlags flags; VkPipelineLayout layout; } VkComputePipelineCreateInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t descriptorSetCount; const VkDescriptorSetLayout* pSetLayouts; } VkPipelineLayoutCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkTexFilter magFilter; VkTexFilter minFilter; VkTexMipmapMode mipMode; VkTexAddress addressU; VkTexAddress addressV; VkTexAddress addressW; float mipLodBias; uint32_t maxAnisotropy; VkCompareOp compareOp; float minLod; float maxLod; VkBorderColor borderColor; } VkSamplerCreateInfo; typedef struct { VkDescriptorType descriptorType; uint32_t arraySize; VkShaderStageFlags stageFlags; const VkSampler* pImmutableSamplers; } VkDescriptorSetLayoutBinding; typedef struct { VkStructureType sType; const void* pNext; uint32_t count; const VkDescriptorSetLayoutBinding* pBinding; } VkDescriptorSetLayoutCreateInfo; typedef struct { VkDescriptorType type; uint32_t count; } VkDescriptorTypeCount; typedef struct { VkStructureType sType; const void* pNext; uint32_t count; const VkDescriptorTypeCount* pTypeCount; } VkDescriptorPoolCreateInfo; typedef struct { float originX; float originY; float width; float height; float minDepth; float maxDepth; } VkViewport; typedef struct { int32_t x; int32_t y; } VkOffset2D; typedef struct { int32_t width; int32_t height; } VkExtent2D; typedef struct { VkOffset2D offset; VkExtent2D extent; } VkRect2D; typedef struct { VkStructureType sType; const void* pNext; uint32_t viewportAndScissorCount; const VkViewport* pViewports; const VkRect2D* pScissors; } VkDynamicVpStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; float depthBias; float depthBiasClamp; float slopeScaledDepthBias; float lineWidth; } VkDynamicRsStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; float blendConst[4]; } VkDynamicCbStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; float minDepthBounds; float maxDepthBounds; uint32_t stencilReadMask; uint32_t stencilWriteMask; uint32_t stencilFrontRef; uint32_t stencilBackRef; } VkDynamicDsStateCreateInfo; typedef struct { VkColorAttachmentView view; VkImageLayout layout; } VkColorAttachmentBindInfo; typedef struct { VkDepthStencilView view; VkImageLayout layout; } VkDepthStencilBindInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t colorAttachmentCount; const VkColorAttachmentBindInfo* pColorAttachments; const VkDepthStencilBindInfo* pDepthStencilAttachment; uint32_t sampleCount; uint32_t width; uint32_t height; uint32_t layers; } VkFramebufferCreateInfo; typedef union VkClearColorValue_ { float floatColor[4]; uint32_t rawColor[4]; } VkClearColorValue; typedef struct { VkClearColorValue color; bool32_t useRawValue; } VkClearColor; typedef struct { VkStructureType sType; const void* pNext; VkRect2D renderArea; uint32_t colorAttachmentCount; VkExtent2D extent; uint32_t sampleCount; uint32_t layers; const VkFormat* pColorFormats; const VkImageLayout* pColorLayouts; const VkAttachmentLoadOp* pColorLoadOps; const VkAttachmentStoreOp* pColorStoreOps; const VkClearColor* pColorLoadClearValues; VkFormat depthStencilFormat; VkImageLayout depthStencilLayout; VkAttachmentLoadOp depthLoadOp; float depthLoadClearValue; VkAttachmentStoreOp depthStoreOp; VkAttachmentLoadOp stencilLoadOp; uint32_t stencilLoadClearValue; VkAttachmentStoreOp stencilStoreOp; } VkRenderPassCreateInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t queueNodeIndex; VkCmdBufferCreateFlags flags; } VkCmdBufferCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkCmdBufferOptimizeFlags flags; } VkCmdBufferBeginInfo; typedef struct { VkDeviceSize srcOffset; VkDeviceSize destOffset; VkDeviceSize copySize; } VkBufferCopy; typedef struct { VkImageSubresource srcSubresource; VkOffset3D srcOffset; VkImageSubresource destSubresource; VkOffset3D destOffset; VkExtent3D extent; } VkImageCopy; typedef struct { VkImageSubresource srcSubresource; VkOffset3D srcOffset; VkExtent3D srcExtent; VkImageSubresource destSubresource; VkOffset3D destOffset; VkExtent3D destExtent; } VkImageBlit; typedef struct { VkDeviceSize bufferOffset; VkImageSubresource imageSubresource; VkOffset3D imageOffset; VkExtent3D imageExtent; } VkBufferImageCopy; typedef struct { VkImageSubresource srcSubresource; VkOffset3D srcOffset; VkImageSubresource destSubresource; VkOffset3D destOffset; VkExtent3D extent; } VkImageResolve; typedef struct { VkRenderPass renderPass; VkFramebuffer framebuffer; } VkRenderPassBegin; typedef struct { VkStructureType sType; const void* pNext; VkMemoryOutputFlags outputMask; VkMemoryInputFlags inputMask; VkBuffer buffer; VkDeviceSize offset; VkDeviceSize size; } VkBufferMemoryBarrier; typedef struct { uint32_t x; uint32_t y; uint32_t z; } VkDispatchIndirectCmd; typedef struct { uint32_t indexCount; uint32_t instanceCount; uint32_t firstIndex; int32_t vertexOffset; uint32_t firstInstance; } VkDrawIndexedIndirectCmd; typedef struct { uint32_t vertexCount; uint32_t instanceCount; uint32_t firstVertex; uint32_t firstInstance; } VkDrawIndirectCmd; typedef struct { VkStructureType sType; const void* pNext; VkMemoryOutputFlags outputMask; VkMemoryInputFlags inputMask; VkImageLayout oldLayout; VkImageLayout newLayout; VkImage image; VkImageSubresourceRange subresourceRange; } VkImageMemoryBarrier; typedef struct { VkStructureType sType; const void* pNext; uint32_t layerCount; const char *const* ppActiveLayerNames; } VkLayerCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkMemoryOutputFlags outputMask; VkMemoryInputFlags inputMask; } VkMemoryBarrier; typedef struct { VkStructureType sType; const void* pNext; VkDeviceMemory originalMem; } VkPeerMemoryOpenInfo; typedef struct { VkFormatFeatureFlags linearTilingFeatures; VkFormatFeatureFlags optimalTilingFeatures; } VkFormatProperties; typedef struct { VkStructureType sType; const void* pNext; VkBufferView view; } VkBufferViewAttachInfo; typedef struct { VkStructureType sType; const void* pNext; VkImageView view; VkImageLayout layout; } VkImageViewAttachInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t binding; uint32_t arrayIndex; uint32_t count; const VkSampler* pSamplers; } VkUpdateSamplers; typedef struct { VkSampler sampler; const VkImageViewAttachInfo* pImageView; } VkSamplerImageViewInfo; typedef struct { VkStructureType sType; const void* pNext; uint32_t binding; uint32_t arrayIndex; uint32_t count; const VkSamplerImageViewInfo* pSamplerImageViews; } VkUpdateSamplerTextures; typedef struct { VkStructureType sType; const void* pNext; VkDescriptorType descriptorType; uint32_t binding; uint32_t arrayIndex; uint32_t count; const VkImageViewAttachInfo* pImageViews; } VkUpdateImages; typedef struct { VkStructureType sType; const void* pNext; VkDescriptorType descriptorType; uint32_t binding; uint32_t arrayIndex; uint32_t count; const VkBufferViewAttachInfo* pBufferViews; } VkUpdateBuffers; typedef struct { VkStructureType sType; const void* pNext; VkDescriptorType descriptorType; VkDescriptorSet descriptorSet; uint32_t binding; uint32_t arrayElement; uint32_t count; } VkUpdateAsCopy; typedef struct { VkStructureType sType; const void* pNext; VkRenderPassBegin renderPassContinue; } VkCmdBufferGraphicsBeginInfo; typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); typedef VkResult (VKAPI *PFN_vkDestroyInstance)(VkInstance instance); typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceInfo)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceInfoType infoType, size_t* pDataSize, void* pData); typedef void * (VKAPI *PFN_vkGetProcAddr)(VkPhysicalDevice physicalDevice, const char * pName); typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice); typedef VkResult (VKAPI *PFN_vkDestroyDevice)(VkDevice device); typedef VkResult (VKAPI *PFN_vkGetGlobalExtensionInfo)(VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceExtensionInfo)(VkPhysicalDevice physicalDevice, VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkEnumerateLayers)(VkPhysicalDevice physicalDevice, size_t maxStringSize, size_t* pLayerCount, char* const* pOutLayers, void* pReserved); typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue); typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence); typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue); typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device); typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem); typedef VkResult (VKAPI *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory mem); typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData); typedef VkResult (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory mem); typedef VkResult (VKAPI *PFN_vkFlushMappedMemory)(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size); typedef VkResult (VKAPI *PFN_vkPinSystemMemory)(VkDevice device, const void* pSysMem, size_t memSize, VkDeviceMemory* pMem); typedef VkResult (VKAPI *PFN_vkDestroyObject)(VkDevice device, VkObjectType objType, VkObject object); typedef VkResult (VKAPI *PFN_vkGetObjectInfo)(VkDevice device, VkObjectType objType, VkObject object, VkObjectInfoType infoType, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkQueueBindObjectMemory)(VkQueue queue, VkObjectType objType, VkObject object, uint32_t allocationIdx, VkDeviceMemory mem, VkDeviceSize offset); typedef VkResult (VKAPI *PFN_vkQueueBindObjectMemoryRange)(VkQueue queue, VkObjectType objType, VkObject object, uint32_t allocationIdx, VkDeviceSize rangeOffset, VkDeviceSize rangeSize, VkDeviceMemory mem, VkDeviceSize memOffset); typedef VkResult (VKAPI *PFN_vkQueueBindImageMemoryRange)(VkQueue queue, VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkDeviceMemory mem, VkDeviceSize memOffset); typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence); typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, VkFence* pFences); typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence); typedef VkResult (VKAPI *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, bool32_t waitAll, uint64_t timeout); typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore); typedef VkResult (VKAPI *PFN_vkQueueSignalSemaphore)(VkQueue queue, VkSemaphore semaphore); typedef VkResult (VKAPI *PFN_vkQueueWaitSemaphore)(VkQueue queue, VkSemaphore semaphore); typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent); typedef VkResult (VKAPI *PFN_vkGetEventStatus)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkSetEvent)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkResetEvent)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool); typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags); typedef VkResult (VKAPI *PFN_vkGetFormatInfo)(VkDevice device, VkFormat format, VkFormatInfoType infoType, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer); typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView); typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage); typedef VkResult (VKAPI *PFN_vkGetImageSubresourceInfo)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceInfoType infoType, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView); typedef VkResult (VKAPI *PFN_vkCreateColorAttachmentView)(VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo, VkColorAttachmentView* pView); typedef VkResult (VKAPI *PFN_vkCreateDepthStencilView)(VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo, VkDepthStencilView* pView); typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader); typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipeline)(VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline); typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelineDerivative)(VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline, VkPipeline* pPipeline); typedef VkResult (VKAPI *PFN_vkCreateComputePipeline)(VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline); typedef VkResult (VKAPI *PFN_vkStorePipeline)(VkDevice device, VkPipeline pipeline, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkLoadPipeline)(VkDevice device, size_t dataSize, const void* pData, VkPipeline* pPipeline); typedef VkResult (VKAPI *PFN_vkLoadPipelineDerivative)(VkDevice device, size_t dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline); typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout); typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler); typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout); typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool); typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount); typedef void (VKAPI *PFN_vkUpdateDescriptors)(VkDevice device, VkDescriptorSet descriptorSet, uint32_t updateCount, const void** ppUpdateArray); typedef VkResult (VKAPI *PFN_vkCreateDynamicViewportState)(VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState); typedef VkResult (VKAPI *PFN_vkCreateDynamicRasterState)(VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState); typedef VkResult (VKAPI *PFN_vkCreateDynamicColorBlendState)(VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState); typedef VkResult (VKAPI *PFN_vkCreateDynamicDepthStencilState)(VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState); typedef VkResult (VKAPI *PFN_vkCreateCommandBuffer)(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer); typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo); typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCmdBuffer cmdBuffer); typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCmdBuffer cmdBuffer); typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); typedef void (VKAPI *PFN_vkCmdBindDynamicStateObject)(VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject dynamicState); typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets); typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); typedef void (VKAPI *PFN_vkCmdBindVertexBuffers)(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); typedef void (VKAPI *PFN_vkCmdDraw)(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount); typedef void (VKAPI *PFN_vkCmdDrawIndexed)(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount); typedef void (VKAPI *PFN_vkCmdDrawIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride); typedef void (VKAPI *PFN_vkCmdDrawIndexedIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride); typedef void (VKAPI *PFN_vkCmdDispatch)(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z); typedef void (VKAPI *PFN_vkCmdDispatchIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset); typedef void (VKAPI *PFN_vkCmdCopyBuffer)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); typedef void (VKAPI *PFN_vkCmdCopyImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions); typedef void (VKAPI *PFN_vkCmdBlitImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions); typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions); typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions); typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData); typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data); typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); typedef void (VKAPI *PFN_vkCmdClearDepthStencil)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent); typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent); typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t eventCount, const VkEvent* pEvents, VkPipeEventFlags pipeEventMask, uint32_t memBarrierCount, const void* const* ppMemBarriers); typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, VkPipeEventFlags pipeEventMask, uint32_t memBarrierCount, const void* const* ppMemBarriers); typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags); typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot); typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount); typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset); typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags); typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values); typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer); typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass); typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin); typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCmdBuffer cmdBuffer, VkRenderPass renderPass); #ifdef VK_PROTOTYPES VkResult VKAPI vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); VkResult VKAPI vkDestroyInstance( VkInstance instance); VkResult VKAPI vkEnumeratePhysicalDevices( VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); VkResult VKAPI vkGetPhysicalDeviceInfo( VkPhysicalDevice physicalDevice, VkPhysicalDeviceInfoType infoType, size_t* pDataSize, void* pData); void * VKAPI vkGetProcAddr( VkPhysicalDevice physicalDevice, const char* pName); VkResult VKAPI vkCreateDevice( VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice); VkResult VKAPI vkDestroyDevice( VkDevice device); VkResult VKAPI vkGetGlobalExtensionInfo( VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData); VkResult VKAPI vkGetPhysicalDeviceExtensionInfo( VkPhysicalDevice physicalDevice, VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData); VkResult VKAPI vkEnumerateLayers( VkPhysicalDevice physicalDevice, size_t maxStringSize, size_t* pLayerCount, char* const* pOutLayers, void* pReserved); VkResult VKAPI vkGetDeviceQueue( VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue); VkResult VKAPI vkQueueSubmit( VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence); VkResult VKAPI vkQueueWaitIdle( VkQueue queue); VkResult VKAPI vkDeviceWaitIdle( VkDevice device); VkResult VKAPI vkAllocMemory( VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem); VkResult VKAPI vkFreeMemory( VkDevice device, VkDeviceMemory mem); VkResult VKAPI vkMapMemory( VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData); VkResult VKAPI vkUnmapMemory( VkDevice device, VkDeviceMemory mem); VkResult VKAPI vkFlushMappedMemory( VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size); VkResult VKAPI vkPinSystemMemory( VkDevice device, const void* pSysMem, size_t memSize, VkDeviceMemory* pMem); VkResult VKAPI vkDestroyObject( VkDevice device, VkObjectType objType, VkObject object); VkResult VKAPI vkGetObjectInfo( VkDevice device, VkObjectType objType, VkObject object, VkObjectInfoType infoType, size_t* pDataSize, void* pData); VkResult VKAPI vkQueueBindObjectMemory( VkQueue queue, VkObjectType objType, VkObject object, uint32_t allocationIdx, VkDeviceMemory mem, VkDeviceSize memOffset); VkResult VKAPI vkQueueBindObjectMemoryRange( VkQueue queue, VkObjectType objType, VkObject object, uint32_t allocationIdx, VkDeviceSize rangeOffset, VkDeviceSize rangeSize, VkDeviceMemory mem, VkDeviceSize memOffset); VkResult VKAPI vkQueueBindImageMemoryRange( VkQueue queue, VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkDeviceMemory mem, VkDeviceSize memOffset); VkResult VKAPI vkCreateFence( VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence); VkResult VKAPI vkResetFences( VkDevice device, uint32_t fenceCount, VkFence* pFences); VkResult VKAPI vkGetFenceStatus( VkDevice device, VkFence fence); VkResult VKAPI vkWaitForFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences, bool32_t waitAll, uint64_t timeout); // timeout in nanoseconds VkResult VKAPI vkCreateSemaphore( VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore); VkResult VKAPI vkQueueSignalSemaphore( VkQueue queue, VkSemaphore semaphore); VkResult VKAPI vkQueueWaitSemaphore( VkQueue queue, VkSemaphore semaphore); VkResult VKAPI vkCreateEvent( VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent); VkResult VKAPI vkGetEventStatus( VkDevice device, VkEvent event); VkResult VKAPI vkSetEvent( VkDevice device, VkEvent event); VkResult VKAPI vkResetEvent( VkDevice device, VkEvent event); VkResult VKAPI vkCreateQueryPool( VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool); VkResult VKAPI vkGetQueryPoolResults( VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags); VkResult VKAPI vkGetFormatInfo( VkDevice device, VkFormat format, VkFormatInfoType infoType, size_t* pDataSize, void* pData); VkResult VKAPI vkCreateBuffer( VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer); VkResult VKAPI vkCreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView); VkResult VKAPI vkCreateImage( VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage); VkResult VKAPI vkGetImageSubresourceInfo( VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceInfoType infoType, size_t* pDataSize, void* pData); VkResult VKAPI vkCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView); VkResult VKAPI vkCreateColorAttachmentView( VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo, VkColorAttachmentView* pView); VkResult VKAPI vkCreateDepthStencilView( VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo, VkDepthStencilView* pView); VkResult VKAPI vkCreateShader( VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader); VkResult VKAPI vkCreateGraphicsPipeline( VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline); VkResult VKAPI vkCreateGraphicsPipelineDerivative( VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline, VkPipeline* pPipeline); VkResult VKAPI vkCreateComputePipeline( VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline); VkResult VKAPI vkStorePipeline( VkDevice device, VkPipeline pipeline, size_t* pDataSize, void* pData); VkResult VKAPI vkLoadPipeline( VkDevice device, size_t dataSize, const void* pData, VkPipeline* pPipeline); VkResult VKAPI vkLoadPipelineDerivative( VkDevice device, size_t dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline); VkResult VKAPI vkCreatePipelineLayout( VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout); VkResult VKAPI vkCreateSampler( VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler); VkResult VKAPI vkCreateDescriptorSetLayout( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout); VkResult VKAPI vkCreateDescriptorPool( VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); VkResult VKAPI vkResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool); VkResult VKAPI vkAllocDescriptorSets( VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount); void VKAPI vkUpdateDescriptors( VkDevice device, VkDescriptorSet descriptorSet, uint32_t updateCount, const void** ppUpdateArray); VkResult VKAPI vkCreateDynamicViewportState( VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState); VkResult VKAPI vkCreateDynamicRasterState( VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState); VkResult VKAPI vkCreateDynamicColorBlendState( VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState); VkResult VKAPI vkCreateDynamicDepthStencilState( VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState); VkResult VKAPI vkCreateFramebuffer( VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer); VkResult VKAPI vkCreateRenderPass( VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass); VkResult VKAPI vkCreateCommandBuffer( VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer); VkResult VKAPI vkBeginCommandBuffer( VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo); VkResult VKAPI vkEndCommandBuffer( VkCmdBuffer cmdBuffer); VkResult VKAPI vkResetCommandBuffer( VkCmdBuffer cmdBuffer); void VKAPI vkCmdBindPipeline( VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); void VKAPI vkCmdBindDynamicStateObject( VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject dynamicState); void VKAPI vkCmdBindDescriptorSets( VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets); void VKAPI vkCmdBindIndexBuffer( VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); void VKAPI vkCmdBindVertexBuffers( VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); void VKAPI vkCmdDraw( VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount); void VKAPI vkCmdDrawIndexed( VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount); void VKAPI vkCmdDrawIndirect( VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride); void VKAPI vkCmdDrawIndexedIndirect( VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride); void VKAPI vkCmdDispatch( VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z); void VKAPI vkCmdDispatchIndirect( VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset); void VKAPI vkCmdCopyBuffer( VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); void VKAPI vkCmdCopyImage( VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions); void VKAPI vkCmdBlitImage( VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions); void VKAPI vkCmdCopyBufferToImage( VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions); void VKAPI vkCmdCopyImageToBuffer( VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions); void VKAPI vkCmdUpdateBuffer( VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData); void VKAPI vkCmdFillBuffer( VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data); void VKAPI vkCmdClearColorImage( VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); void VKAPI vkCmdClearDepthStencil( VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); void VKAPI vkCmdResolveImage( VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); void VKAPI vkCmdSetEvent( VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent); void VKAPI vkCmdResetEvent( VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent); void VKAPI vkCmdWaitEvents( VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t eventCount, const VkEvent* pEvents, VkPipeEventFlags pipeEventMask, uint32_t memBarrierCount, const void* const* ppMemBarriers); void VKAPI vkCmdPipelineBarrier( VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, VkPipeEventFlags pipeEventMask, uint32_t memBarrierCount, const void* const* ppMemBarriers); void VKAPI vkCmdBeginQuery( VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags); void VKAPI vkCmdEndQuery( VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot); void VKAPI vkCmdResetQueryPool( VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount); void VKAPI vkCmdWriteTimestamp( VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset); void VKAPI vkCmdCopyQueryPoolResults( VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags); void VKAPI vkCmdPushConstants( VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values); void VKAPI vkCmdBeginRenderPass( VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin); void VKAPI vkCmdEndRenderPass( VkCmdBuffer cmdBuffer, VkRenderPass renderPass); #endif #ifdef __cplusplus } #endif #endif