text:
# Automatically generated using Clang.jl wrap_c, version 0.0.0

using Compat

const VULKAN_H_ = 1
const VK_VERSION_1_0 = 1

# Skipping MacroDefinition: VK_MAKE_VERSION ( major , minor , patch ) ( ( ( major ) << 22 ) | ( ( minor ) << 12 ) | ( patch ) )
# Skipping MacroDefinition: VK_API_VERSION_1_0 VK_MAKE_VERSION ( 1 , 0 , 0 )
# Skipping MacroDefinition: VK_VERSION_MAJOR ( version ) ( ( uint32_t ) ( version ) >> 22 )
# Skipping MacroDefinition: VK_VERSION_MINOR ( version ) ( ( ( uint32_t ) ( version ) >> 12 ) & 0x3ff )
# Skipping MacroDefinition: VK_VERSION_PATCH ( version ) ( ( uint32_t ) ( version ) & 0xfff )

const VK_HEADER_VERSION = 8
const VK_NULL_HANDLE = 0

# Skipping MacroDefinition: VK_DEFINE_HANDLE ( object ) typedef struct object ## _T * object ;
# Skipping MacroDefinition: VK_DEFINE_NON_DISPATCHABLE_HANDLE ( object ) typedef struct object ## _T * object ;

const VK_LOD_CLAMP_NONE = Float32(1000.0)
const VK_REMAINING_MIP_LEVELS = ~(UInt32(0))
const VK_REMAINING_ARRAY_LAYERS = ~(UInt32(0))
const VK_WHOLE_SIZE = ~(UInt64(0))
const VK_ATTACHMENT_UNUSED = ~(UInt32(0))
const VK_TRUE = 1
const VK_FALSE = 0
const VK_QUEUE_FAMILY_IGNORED = ~(UInt32(0))
const VK_SUBPASS_EXTERNAL = ~(UInt32(0))
const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256
const VK_UUID_SIZE = 16
const VK_MAX_MEMORY_TYPES = 32
const VK_MAX_MEMORY_HEAPS = 16
const VK_MAX_EXTENSION_NAME_SIZE = 256
const VK_MAX_DESCRIPTION_SIZE = 256
const VK_KHR_surface = 1
const VK_KHR_SURFACE_SPEC_VERSION = 25
const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"
const VK_KHR_swapchain = 1
const VK_KHR_SWAPCHAIN_SPEC_VERSION = 67
const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain"
const VK_KHR_display = 1
const VK_KHR_DISPLAY_SPEC_VERSION = 21
const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display"
const VK_KHR_display_swapchain = 1
const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 9
const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain"
const VK_KHR_xcb_surface = 1
const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6
const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface"
const VK_KHR_wayland_surface = 1
const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 5
const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface"
const VK_KHR_mir_surface = 1
const VK_KHR_MIR_SURFACE_SPEC_VERSION = 4
const VK_KHR_MIR_SURFACE_EXTENSION_NAME = "VK_KHR_mir_surface"
const VK_KHR_win32_surface = 1
const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 5
const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface"
const VK_KHR_sampler_mirror_clamp_to_edge = 1
const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 1
const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge"
const VK_EXT_debug_report = 1
const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 2
const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report"

@cenum(VkStructureType,
    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
    VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
    VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
    VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
    VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
    VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
    VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
    VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
    VK_STRUCTURE_TYPE_BEGIN_RANGE = 0,
    VK_STRUCTURE_TYPE_END_RANGE = 48,
    VK_STRUCTURE_TYPE_RANGE_SIZE = 49,
    VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647,
)

const VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
const VK_NV_glsl_shader = 1
const VK_NV_GLSL_SHADER_SPEC_VERSION = 1
const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader"
const VK_IMG_filter_cubic = 1
const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1
const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic"

typealias VkFlags UInt32
typealias VkBool32 UInt32
typealias VkDeviceSize UInt64
typealias VkSampleMask UInt32
typealias VkInstance_T Void
typealias VkInstance Ptr{VkInstance_T}
typealias VkPhysicalDevice_T Void
typealias VkPhysicalDevice Ptr{VkPhysicalDevice_T}
typealias VkDevice_T Void
typealias VkDevice Ptr{VkDevice_T}
typealias VkQueue_T Void
typealias VkQueue Ptr{VkQueue_T}
typealias VkSemaphore_T Void
typealias VkSemaphore Ptr{VkSemaphore_T}
typealias VkCommandBuffer_T Void
typealias VkCommandBuffer Ptr{VkCommandBuffer_T}
typealias VkFence_T Void
typealias VkFence Ptr{VkFence_T}
typealias VkDeviceMemory_T Void
typealias VkDeviceMemory Ptr{VkDeviceMemory_T}
typealias VkBuffer_T Void
typealias VkBuffer Ptr{VkBuffer_T}
typealias VkImage_T Void
typealias VkImage Ptr{VkImage_T}
typealias VkEvent_T Void
typealias VkEvent Ptr{VkEvent_T}
typealias VkQueryPool_T Void
typealias VkQueryPool Ptr{VkQueryPool_T}
typealias VkBufferView_T Void
typealias VkBufferView Ptr{VkBufferView_T}
typealias VkImageView_T Void
typealias VkImageView Ptr{VkImageView_T}
typealias VkShaderModule_T Void
typealias VkShaderModule Ptr{VkShaderModule_T}
typealias VkPipelineCache_T Void
typealias VkPipelineCache Ptr{VkPipelineCache_T}
typealias VkPipelineLayout_T Void
typealias VkPipelineLayout Ptr{VkPipelineLayout_T}
typealias VkRenderPass_T Void
typealias VkRenderPass Ptr{VkRenderPass_T}
typealias VkPipeline_T Void
typealias VkPipeline Ptr{VkPipeline_T}
typealias VkDescriptorSetLayout_T Void
typealias VkDescriptorSetLayout Ptr{VkDescriptorSetLayout_T}
typealias VkSampler_T Void
typealias VkSampler Ptr{VkSampler_T}
typealias VkDescriptorPool_T Void
typealias VkDescriptorPool Ptr{VkDescriptorPool_T}
typealias VkDescriptorSet_T Void
typealias VkDescriptorSet Ptr{VkDescriptorSet_T}
typealias VkFramebuffer_T Void
typealias VkFramebuffer Ptr{VkFramebuffer_T}
typealias VkCommandPool_T Void
typealias VkCommandPool Ptr{VkCommandPool_T}

@cenum(VkPipelineCacheHeaderVersion,
    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
    VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = 1,
    VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = 1,
    VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = 1,
    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647,
)
@cenum(VkResult,
    VK_SUCCESS = 0,
    VK_NOT_READY = 1,
    VK_TIMEOUT = 2,
    VK_EVENT_SET = 3,
    VK_EVENT_RESET = 4,
    VK_INCOMPLETE = 5,
    VK_ERROR_OUT_OF_HOST_MEMORY = -1,
    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
    VK_ERROR_INITIALIZATION_FAILED = -3,
    VK_ERROR_DEVICE_LOST = -4,
    VK_ERROR_MEMORY_MAP_FAILED = -5,
    VK_ERROR_LAYER_NOT_PRESENT = -6,
    VK_ERROR_EXTENSION_NOT_PRESENT = -7,
    VK_ERROR_FEATURE_NOT_PRESENT = -8,
    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
    VK_ERROR_TOO_MANY_OBJECTS = -10,
    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
    VK_ERROR_SURFACE_LOST_KHR = -1000000000,
    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
    VK_SUBOPTIMAL_KHR = 1000001003,
    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
    VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
    VK_ERROR_INVALID_SHADER_NV = -1000012000,
    VK_RESULT_BEGIN_RANGE = -11,
    VK_RESULT_END_RANGE = 5,
    VK_RESULT_RANGE_SIZE = 17,
    VK_RESULT_MAX_ENUM = 2147483647,
)
@cenum(VkSystemAllocationScope,
    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
    VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = 0,
    VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = 4,
    VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = 5,
    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647,
)
@cenum(VkInternalAllocationType,
    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
    VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = 0,
    VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = 0,
    VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = 1,
    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647,
)
@cenum(VkFormat,
    VK_FORMAT_UNDEFINED = 0,
    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 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_B8G8R8_UNORM = 30,
    VK_FORMAT_B8G8R8_SNORM = 31,
    VK_FORMAT_B8G8R8_USCALED = 32,
    VK_FORMAT_B8G8R8_SSCALED = 33,
    VK_FORMAT_B8G8R8_UINT = 34,
    VK_FORMAT_B8G8R8_SINT = 35,
    VK_FORMAT_B8G8R8_SRGB = 36,
    VK_FORMAT_R8G8B8A8_UNORM = 37,
    VK_FORMAT_R8G8B8A8_SNORM = 38,
    VK_FORMAT_R8G8B8A8_USCALED = 39,
    VK_FORMAT_R8G8B8A8_SSCALED = 40,
    VK_FORMAT_R8G8B8A8_UINT = 41,
    VK_FORMAT_R8G8B8A8_SINT = 42,
    VK_FORMAT_R8G8B8A8_SRGB = 43,
    VK_FORMAT_B8G8R8A8_UNORM = 44,
    VK_FORMAT_B8G8R8A8_SNORM = 45,
    VK_FORMAT_B8G8R8A8_USCALED = 46,
    VK_FORMAT_B8G8R8A8_SSCALED = 47,
    VK_FORMAT_B8G8R8A8_UINT = 48,
    VK_FORMAT_B8G8R8A8_SINT = 49,
    VK_FORMAT_B8G8R8A8_SRGB = 50,
    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
    VK_FORMAT_R16_UNORM = 70,
    VK_FORMAT_R16_SNORM = 71,
    VK_FORMAT_R16_USCALED = 72,
    VK_FORMAT_R16_SSCALED = 73,
    VK_FORMAT_R16_UINT = 74,
    VK_FORMAT_R16_SINT = 75,
    VK_FORMAT_R16_SFLOAT = 76,
    VK_FORMAT_R16G16_UNORM = 77,
    VK_FORMAT_R16G16_SNORM = 78,
    VK_FORMAT_R16G16_USCALED = 79,
    VK_FORMAT_R16G16_SSCALED = 80,
    VK_FORMAT_R16G16_UINT = 81,
    VK_FORMAT_R16G16_SINT = 82,
    VK_FORMAT_R16G16_SFLOAT = 83,
    VK_FORMAT_R16G16B16_UNORM = 84,
    VK_FORMAT_R16G16B16_SNORM = 85,
    VK_FORMAT_R16G16B16_USCALED = 86,
    VK_FORMAT_R16G16B16_SSCALED = 87,
    VK_FORMAT_R16G16B16_UINT = 88,
    VK_FORMAT_R16G16B16_SINT = 89,
    VK_FORMAT_R16G16B16_SFLOAT = 90,
    VK_FORMAT_R16G16B16A16_UNORM = 91,
    VK_FORMAT_R16G16B16A16_SNORM = 92,
    VK_FORMAT_R16G16B16A16_USCALED = 93,
    VK_FORMAT_R16G16B16A16_SSCALED = 94,
    VK_FORMAT_R16G16B16A16_UINT = 95,
    VK_FORMAT_R16G16B16A16_SINT = 96,
    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
    VK_FORMAT_R32_UINT = 98,
    VK_FORMAT_R32_SINT = 99,
    VK_FORMAT_R32_SFLOAT = 100,
    VK_FORMAT_R32G32_UINT = 101,
    VK_FORMAT_R32G32_SINT = 102,
    VK_FORMAT_R32G32_SFLOAT = 103,
    VK_FORMAT_R32G32B32_UINT = 104,
    VK_FORMAT_R32G32B32_SINT = 105,
    VK_FORMAT_R32G32B32_SFLOAT = 106,
    VK_FORMAT_R32G32B32A32_UINT = 107,
    VK_FORMAT_R32G32B32A32_SINT = 108,
    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
    VK_FORMAT_R64_UINT = 110,
    VK_FORMAT_R64_SINT = 111,
    VK_FORMAT_R64_SFLOAT = 112,
    VK_FORMAT_R64G64_UINT = 113,
    VK_FORMAT_R64G64_SINT = 114,
    VK_FORMAT_R64G64_SFLOAT = 115,
    VK_FORMAT_R64G64B64_UINT = 116,
    VK_FORMAT_R64G64B64_SINT = 117,
    VK_FORMAT_R64G64B64_SFLOAT = 118,
    VK_FORMAT_R64G64B64A64_UINT = 119,
    VK_FORMAT_R64G64B64A64_SINT = 120,
    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
    VK_FORMAT_D16_UNORM = 124,
    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
    VK_FORMAT_D32_SFLOAT = 126,
    VK_FORMAT_S8_UINT = 127,
    VK_FORMAT_D16_UNORM_S8_UINT = 128,
    VK_FORMAT_D24_UNORM_S8_UINT = 129,
    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
    VK_FORMAT_BC2_UNORM_BLOCK = 135,
    VK_FORMAT_BC2_SRGB_BLOCK = 136,
    VK_FORMAT_BC3_UNORM_BLOCK = 137,
    VK_FORMAT_BC3_SRGB_BLOCK = 138,
    VK_FORMAT_BC4_UNORM_BLOCK = 139,
    VK_FORMAT_BC4_SNORM_BLOCK = 140,
    VK_FORMAT_BC5_UNORM_BLOCK = 141,
    VK_FORMAT_BC5_SNORM_BLOCK = 142,
    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
    VK_FORMAT_BC7_UNORM_BLOCK = 145,
    VK_FORMAT_BC7_SRGB_BLOCK = 146,
    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
    VK_FORMAT_BEGIN_RANGE = 0,
    VK_FORMAT_END_RANGE = 184,
    VK_FORMAT_RANGE_SIZE = 185,
    VK_FORMAT_MAX_ENUM = 2147483647,
)
@cenum(VkImageType,
    VK_IMAGE_TYPE_1D = 0,
    VK_IMAGE_TYPE_2D = 1,
    VK_IMAGE_TYPE_3D = 2,
    VK_IMAGE_TYPE_BEGIN_RANGE = 0,
    VK_IMAGE_TYPE_END_RANGE = 2,
    VK_IMAGE_TYPE_RANGE_SIZE = 3,
    VK_IMAGE_TYPE_MAX_ENUM = 2147483647,
)
@cenum(VkImageTiling,
    VK_IMAGE_TILING_OPTIMAL = 0,
    VK_IMAGE_TILING_LINEAR = 1,
    VK_IMAGE_TILING_BEGIN_RANGE = 0,
    VK_IMAGE_TILING_END_RANGE = 1,
    VK_IMAGE_TILING_RANGE_SIZE = 2,
    VK_IMAGE_TILING_MAX_ENUM = 2147483647,
)
@cenum(VkPhysicalDeviceType,
    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 = 0,
    VK_PHYSICAL_DEVICE_TYPE_END_RANGE = 4,
    VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = 5,
    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647,
)
@cenum(VkQueryType,
    VK_QUERY_TYPE_OCCLUSION = 0,
    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
    VK_QUERY_TYPE_TIMESTAMP = 2,
    VK_QUERY_TYPE_BEGIN_RANGE = 0,
    VK_QUERY_TYPE_END_RANGE = 2,
    VK_QUERY_TYPE_RANGE_SIZE = 3,
    VK_QUERY_TYPE_MAX_ENUM = 2147483647,
)
@cenum(VkSharingMode,
    VK_SHARING_MODE_EXCLUSIVE = 0,
    VK_SHARING_MODE_CONCURRENT = 1,
    VK_SHARING_MODE_BEGIN_RANGE = 0,
    VK_SHARING_MODE_END_RANGE = 1,
    VK_SHARING_MODE_RANGE_SIZE = 2,
    VK_SHARING_MODE_MAX_ENUM = 2147483647,
)
@cenum(VkImageLayout,
    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_SRC_OPTIMAL = 6,
    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
    VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
    VK_IMAGE_LAYOUT_BEGIN_RANGE = 0,
    VK_IMAGE_LAYOUT_END_RANGE = 8,
    VK_IMAGE_LAYOUT_RANGE_SIZE = 9,
    VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647,
)
@cenum(VkImageViewType,
    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 = 0,
    VK_IMAGE_VIEW_TYPE_END_RANGE = 6,
    VK_IMAGE_VIEW_TYPE_RANGE_SIZE = 7,
    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647,
)
@cenum(VkComponentSwizzle,
    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
    VK_COMPONENT_SWIZZLE_ZERO = 1,
    VK_COMPONENT_SWIZZLE_ONE = 2,
    VK_COMPONENT_SWIZZLE_R = 3,
    VK_COMPONENT_SWIZZLE_G = 4,
    VK_COMPONENT_SWIZZLE_B = 5,
    VK_COMPONENT_SWIZZLE_A = 6,
    VK_COMPONENT_SWIZZLE_BEGIN_RANGE = 0,
    VK_COMPONENT_SWIZZLE_END_RANGE = 6,
    VK_COMPONENT_SWIZZLE_RANGE_SIZE = 7,
    VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647,
)
@cenum(VkVertexInputRate,
    VK_VERTEX_INPUT_RATE_VERTEX = 0,
    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
    VK_VERTEX_INPUT_RATE_BEGIN_RANGE = 0,
    VK_VERTEX_INPUT_RATE_END_RANGE = 1,
    VK_VERTEX_INPUT_RATE_RANGE_SIZE = 2,
    VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647,
)
@cenum(VkPrimitiveTopology,
    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_WITH_ADJACENCY = 6,
    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
    VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = 0,
    VK_PRIMITIVE_TOPOLOGY_END_RANGE = 10,
    VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = 11,
    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647,
)
@cenum(VkPolygonMode,
    VK_POLYGON_MODE_FILL = 0,
    VK_POLYGON_MODE_LINE = 1,
    VK_POLYGON_MODE_POINT = 2,
    VK_POLYGON_MODE_BEGIN_RANGE = 0,
    VK_POLYGON_MODE_END_RANGE = 2,
    VK_POLYGON_MODE_RANGE_SIZE = 3,
    VK_POLYGON_MODE_MAX_ENUM = 2147483647,
)
@cenum(VkFrontFace,
    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
    VK_FRONT_FACE_CLOCKWISE = 1,
    VK_FRONT_FACE_BEGIN_RANGE = 0,
    VK_FRONT_FACE_END_RANGE = 1,
    VK_FRONT_FACE_RANGE_SIZE = 2,
    VK_FRONT_FACE_MAX_ENUM = 2147483647,
)
@cenum(VkCompareOp,
    VK_COMPARE_OP_NEVER = 0,
    VK_COMPARE_OP_LESS = 1,
    VK_COMPARE_OP_EQUAL = 2,
    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
    VK_COMPARE_OP_GREATER = 4,
    VK_COMPARE_OP_NOT_EQUAL = 5,
    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
    VK_COMPARE_OP_ALWAYS = 7,
    VK_COMPARE_OP_BEGIN_RANGE = 0,
    VK_COMPARE_OP_END_RANGE = 7,
    VK_COMPARE_OP_RANGE_SIZE = 8,
    VK_COMPARE_OP_MAX_ENUM = 2147483647,
)
@cenum(VkStencilOp,
    VK_STENCIL_OP_KEEP = 0,
    VK_STENCIL_OP_ZERO = 1,
    VK_STENCIL_OP_REPLACE = 2,
    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
    VK_STENCIL_OP_INVERT = 5,
    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
    VK_STENCIL_OP_BEGIN_RANGE = 0,
    VK_STENCIL_OP_END_RANGE = 7,
    VK_STENCIL_OP_RANGE_SIZE = 8,
    VK_STENCIL_OP_MAX_ENUM = 2147483647,
)
@cenum(VkLogicOp,
    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_NO_OP = 5,
    VK_LOGIC_OP_XOR = 6,
    VK_LOGIC_OP_OR = 7,
    VK_LOGIC_OP_NOR = 8,
    VK_LOGIC_OP_EQUIVALENT = 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 = 0,
    VK_LOGIC_OP_END_RANGE = 15,
    VK_LOGIC_OP_RANGE_SIZE = 16,
    VK_LOGIC_OP_MAX_ENUM = 2147483647,
)
@cenum(VkBlendFactor,
    VK_BLEND_FACTOR_ZERO = 0,
    VK_BLEND_FACTOR_ONE = 1,
    VK_BLEND_FACTOR_SRC_COLOR = 2,
    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
    VK_BLEND_FACTOR_DST_COLOR = 4,
    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
    VK_BLEND_FACTOR_SRC_ALPHA = 6,
    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
    VK_BLEND_FACTOR_DST_ALPHA = 8,
    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
    VK_BLEND_FACTOR_SRC1_COLOR = 15,
    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
    VK_BLEND_FACTOR_BEGIN_RANGE = 0,
    VK_BLEND_FACTOR_END_RANGE = 18,
    VK_BLEND_FACTOR_RANGE_SIZE = 19,
    VK_BLEND_FACTOR_MAX_ENUM = 2147483647,
)
@cenum(VkBlendOp,
    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 = 0,
    VK_BLEND_OP_END_RANGE = 4,
    VK_BLEND_OP_RANGE_SIZE = 5,
    VK_BLEND_OP_MAX_ENUM = 2147483647,
)
@cenum(VkDynamicState,
    VK_DYNAMIC_STATE_VIEWPORT = 0,
    VK_DYNAMIC_STATE_SCISSOR = 1,
    VK_DYNAMIC_STATE_LINE_WIDTH = 2,
    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
    VK_DYNAMIC_STATE_BEGIN_RANGE = 0,
    VK_DYNAMIC_STATE_END_RANGE = 8,
    VK_DYNAMIC_STATE_RANGE_SIZE = 9,
    VK_DYNAMIC_STATE_MAX_ENUM = 2147483647,
)
@cenum(VkFilter,
    VK_FILTER_NEAREST = 0,
    VK_FILTER_LINEAR = 1,
    VK_FILTER_CUBIC_IMG = 1000015000,
    VK_FILTER_BEGIN_RANGE = 0,
    VK_FILTER_END_RANGE = 1,
    VK_FILTER_RANGE_SIZE = 2,
    VK_FILTER_MAX_ENUM = 2147483647,
)
@cenum(VkSamplerMipmapMode,
    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
    VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = 0,
    VK_SAMPLER_MIPMAP_MODE_END_RANGE = 1,
    VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = 2,
    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647,
)
@cenum(VkSamplerAddressMode,
    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
    VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = 0,
    VK_SAMPLER_ADDRESS_MODE_END_RANGE = 3,
    VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = 4,
    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647,
)
@cenum(VkBorderColor,
    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
    VK_BORDER_COLOR_BEGIN_RANGE = 0,
    VK_BORDER_COLOR_END_RANGE = 5,
    VK_BORDER_COLOR_RANGE_SIZE = 6,
    VK_BORDER_COLOR_MAX_ENUM = 2147483647,
)
@cenum(VkDescriptorType,
    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_INPUT_ATTACHMENT = 10,
    VK_DESCRIPTOR_TYPE_BEGIN_RANGE = 0,
    VK_DESCRIPTOR_TYPE_END_RANGE = 10,
    VK_DESCRIPTOR_TYPE_RANGE_SIZE = 11,
    VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647,
)
@cenum(VkAttachmentLoadOp,
    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 = 0,
    VK_ATTACHMENT_LOAD_OP_END_RANGE = 2,
    VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = 3,
    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647,
)
@cenum(VkAttachmentStoreOp,
    VK_ATTACHMENT_STORE_OP_STORE = 0,
    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
    VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = 0,
    VK_ATTACHMENT_STORE_OP_END_RANGE = 1,
    VK_ATTACHMENT_STORE_OP_RANGE_SIZE = 2,
    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647,
)
@cenum(VkPipelineBindPoint,
    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
    VK_PIPELINE_BIND_POINT_BEGIN_RANGE = 0,
    VK_PIPELINE_BIND_POINT_END_RANGE = 1,
    VK_PIPELINE_BIND_POINT_RANGE_SIZE = 2,
    VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647,
)
@cenum(VkCommandBufferLevel,
    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
    VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = 0,
    VK_COMMAND_BUFFER_LEVEL_END_RANGE = 1,
    VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = 2,
    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647,
)
@cenum(VkIndexType,
    VK_INDEX_TYPE_UINT16 = 0,
    VK_INDEX_TYPE_UINT32 = 1,
    VK_INDEX_TYPE_BEGIN_RANGE = 0,
    VK_INDEX_TYPE_END_RANGE = 1,
    VK_INDEX_TYPE_RANGE_SIZE = 2,
    VK_INDEX_TYPE_MAX_ENUM = 2147483647,
)
@cenum(VkSubpassContents,
    VK_SUBPASS_CONTENTS_INLINE = 0,
    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
    VK_SUBPASS_CONTENTS_BEGIN_RANGE = 0,
    VK_SUBPASS_CONTENTS_END_RANGE = 1,
    VK_SUBPASS_CONTENTS_RANGE_SIZE = 2,
    VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647,
)

typealias VkInstanceCreateFlags VkFlags

@cenum(VkFormatFeatureFlagBits,
    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1,
    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2,
    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4,
    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8,
    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16,
    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32,
    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64,
    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128,
    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256,
    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512,
    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024,
    VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048,
    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096,
    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192,
    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkFormatFeatureFlags VkFlags

@cenum(VkImageUsageFlagBits,
    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1,
    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2,
    VK_IMAGE_USAGE_SAMPLED_BIT = 4,
    VK_IMAGE_USAGE_STORAGE_BIT = 8,
    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16,
    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32,
    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64,
    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128,
    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkImageUsageFlags VkFlags

@cenum(VkImageCreateFlagBits,
    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1,
    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2,
    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4,
    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8,
    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16,
    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkImageCreateFlags VkFlags

@cenum(VkSampleCountFlagBits,
    VK_SAMPLE_COUNT_1_BIT = 1,
    VK_SAMPLE_COUNT_2_BIT = 2,
    VK_SAMPLE_COUNT_4_BIT = 4,
    VK_SAMPLE_COUNT_8_BIT = 8,
    VK_SAMPLE_COUNT_16_BIT = 16,
    VK_SAMPLE_COUNT_32_BIT = 32,
    VK_SAMPLE_COUNT_64_BIT = 64,
    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkSampleCountFlags VkFlags

@cenum(VkQueueFlagBits,
    VK_QUEUE_GRAPHICS_BIT = 1,
    VK_QUEUE_COMPUTE_BIT = 2,
    VK_QUEUE_TRANSFER_BIT = 4,
    VK_QUEUE_SPARSE_BINDING_BIT = 8,
    VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkQueueFlags VkFlags

@cenum(VkMemoryPropertyFlagBits,
    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1,
    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2,
    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4,
    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8,
    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16,
    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkMemoryPropertyFlags VkFlags

@cenum(VkMemoryHeapFlagBits,
    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1,
    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkMemoryHeapFlags VkFlags
typealias VkDeviceCreateFlags VkFlags
typealias VkDeviceQueueCreateFlags VkFlags

@cenum(VkPipelineStageFlagBits,
    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1,
    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2,
    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4,
    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8,
    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16,
    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32,
    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64,
    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128,
    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256,
    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512,
    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024,
    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048,
    VK_PIPELINE_STAGE_TRANSFER_BIT = 4096,
    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192,
    VK_PIPELINE_STAGE_HOST_BIT = 16384,
    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768,
    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536,
    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkPipelineStageFlags VkFlags
typealias VkMemoryMapFlags VkFlags

@cenum(VkImageAspectFlagBits,
    VK_IMAGE_ASPECT_COLOR_BIT = 1,
    VK_IMAGE_ASPECT_DEPTH_BIT = 2,
    VK_IMAGE_ASPECT_STENCIL_BIT = 4,
    VK_IMAGE_ASPECT_METADATA_BIT = 8,
    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkImageAspectFlags VkFlags

@cenum(VkSparseImageFormatFlagBits,
    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1,
    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2,
    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4,
    VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkSparseImageFormatFlags VkFlags

@cenum(VkSparseMemoryBindFlagBits,
    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1,
    VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkSparseMemoryBindFlags VkFlags

@cenum(VkFenceCreateFlagBits,
    VK_FENCE_CREATE_SIGNALED_BIT = 1,
    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkFenceCreateFlags VkFlags
typealias VkSemaphoreCreateFlags VkFlags
typealias VkEventCreateFlags VkFlags
typealias VkQueryPoolCreateFlags VkFlags

@cenum(VkQueryPipelineStatisticFlagBits,
    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1,
    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2,
    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4,
    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8,
    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16,
    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32,
    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64,
    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128,
    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256,
    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512,
    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024,
    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkQueryPipelineStatisticFlags VkFlags

@cenum(VkQueryResultFlagBits,
    VK_QUERY_RESULT_64_BIT = 1,
    VK_QUERY_RESULT_WAIT_BIT = 2,
    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4,
    VK_QUERY_RESULT_PARTIAL_BIT = 8,
    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkQueryResultFlags VkFlags

@cenum(VkBufferCreateFlagBits,
    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1,
    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2,
    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4,
    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkBufferCreateFlags VkFlags

@cenum(VkBufferUsageFlagBits,
    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1,
    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2,
    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4,
    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8,
    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16,
    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32,
    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64,
    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128,
    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256,
    VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkBufferUsageFlags VkFlags
typealias VkBufferViewCreateFlags VkFlags
typealias VkImageViewCreateFlags VkFlags
typealias VkShaderModuleCreateFlags VkFlags
typealias VkPipelineCacheCreateFlags VkFlags

@cenum(VkPipelineCreateFlagBits,
    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1,
    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2,
    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4,
    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkPipelineCreateFlags VkFlags
typealias VkPipelineShaderStageCreateFlags VkFlags

@cenum(VkShaderStageFlagBits,
    VK_SHADER_STAGE_VERTEX_BIT = 1,
    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2,
    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4,
    VK_SHADER_STAGE_GEOMETRY_BIT = 8,
    VK_SHADER_STAGE_FRAGMENT_BIT = 16,
    VK_SHADER_STAGE_COMPUTE_BIT = 32,
    VK_SHADER_STAGE_ALL_GRAPHICS = 31,
    VK_SHADER_STAGE_ALL = 2147483647,
    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkPipelineVertexInputStateCreateFlags VkFlags
typealias VkPipelineInputAssemblyStateCreateFlags VkFlags
typealias VkPipelineTessellationStateCreateFlags VkFlags
typealias VkPipelineViewportStateCreateFlags VkFlags
typealias VkPipelineRasterizationStateCreateFlags VkFlags

@cenum(VkCullModeFlagBits,
    VK_CULL_MODE_NONE = 0,
    VK_CULL_MODE_FRONT_BIT = 1,
    VK_CULL_MODE_BACK_BIT = 2,
    VK_CULL_MODE_FRONT_AND_BACK = 3,
    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkCullModeFlags VkFlags
typealias VkPipelineMultisampleStateCreateFlags VkFlags
typealias VkPipelineDepthStencilStateCreateFlags VkFlags
typealias VkPipelineColorBlendStateCreateFlags VkFlags

@cenum(VkColorComponentFlagBits,
    VK_COLOR_COMPONENT_R_BIT = 1,
    VK_COLOR_COMPONENT_G_BIT = 2,
    VK_COLOR_COMPONENT_B_BIT = 4,
    VK_COLOR_COMPONENT_A_BIT = 8,
    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkColorComponentFlags VkFlags
typealias VkPipelineDynamicStateCreateFlags VkFlags
typealias VkPipelineLayoutCreateFlags VkFlags
typealias VkShaderStageFlags VkFlags
typealias VkSamplerCreateFlags VkFlags
typealias VkDescriptorSetLayoutCreateFlags VkFlags

@cenum(VkDescriptorPoolCreateFlagBits,
    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1,
    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkDescriptorPoolCreateFlags VkFlags
typealias VkDescriptorPoolResetFlags VkFlags
typealias VkFramebufferCreateFlags VkFlags
typealias VkRenderPassCreateFlags VkFlags

@cenum(VkAttachmentDescriptionFlagBits,
    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1,
    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkAttachmentDescriptionFlags VkFlags
typealias VkSubpassDescriptionFlags VkFlags

@cenum(VkAccessFlagBits,
    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1,
    VK_ACCESS_INDEX_READ_BIT = 2,
    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4,
    VK_ACCESS_UNIFORM_READ_BIT = 8,
    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16,
    VK_ACCESS_SHADER_READ_BIT = 32,
    VK_ACCESS_SHADER_WRITE_BIT = 64,
    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128,
    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256,
    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512,
    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024,
    VK_ACCESS_TRANSFER_READ_BIT = 2048,
    VK_ACCESS_TRANSFER_WRITE_BIT = 4096,
    VK_ACCESS_HOST_READ_BIT = 8192,
    VK_ACCESS_HOST_WRITE_BIT = 16384,
    VK_ACCESS_MEMORY_READ_BIT = 32768,
    VK_ACCESS_MEMORY_WRITE_BIT = 65536,
    VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkAccessFlags VkFlags

@cenum(VkDependencyFlagBits,
    VK_DEPENDENCY_BY_REGION_BIT = 1,
    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkDependencyFlags VkFlags

@cenum(VkCommandPoolCreateFlagBits,
    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1,
    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2,
    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkCommandPoolCreateFlags VkFlags

@cenum(VkCommandPoolResetFlagBits,
    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1,
    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkCommandPoolResetFlags VkFlags

@cenum(VkCommandBufferUsageFlagBits,
    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1,
    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2,
    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4,
    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkCommandBufferUsageFlags VkFlags

@cenum(VkQueryControlFlagBits,
    VK_QUERY_CONTROL_PRECISE_BIT = 1,
    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkQueryControlFlags VkFlags

@cenum(VkCommandBufferResetFlagBits,
    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1,
    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkCommandBufferResetFlags VkFlags

@cenum(VkStencilFaceFlagBits,
    VK_STENCIL_FACE_FRONT_BIT = 1,
    VK_STENCIL_FACE_BACK_BIT = 2,
    VK_STENCIL_FRONT_AND_BACK = 3,
    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647,
)

typealias VkStencilFaceFlags VkFlags
typealias PFN_vkAllocationFunction Ptr{Void}
typealias PFN_vkReallocationFunction Ptr{Void}
typealias PFN_vkFreeFunction Ptr{Void}
typealias PFN_vkInternalAllocationNotification Ptr{Void}
typealias PFN_vkInternalFreeNotification Ptr{Void}
typealias PFN_vkVoidFunction Ptr{Void}

immutable VkApplicationInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    pApplicationName::Cstring
    applicationVersion::UInt32
    pEngineName::Cstring
    engineVersion::UInt32
    apiVersion::UInt32
end

immutable VkInstanceCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkInstanceCreateFlags
    pApplicationInfo::Ptr{VkApplicationInfo}
    enabledLayerCount::UInt32
    ppEnabledLayerNames::Ptr{Cstring}
    enabledExtensionCount::UInt32
    ppEnabledExtensionNames::Ptr{Cstring}
end

immutable VkAllocationCallbacks
    pUserData::Ptr{Void}
    pfnAllocation::PFN_vkAllocationFunction
    pfnReallocation::PFN_vkReallocationFunction
    pfnFree::PFN_vkFreeFunction
    pfnInternalAllocation::PFN_vkInternalAllocationNotification
    pfnInternalFree::PFN_vkInternalFreeNotification
end

immutable VkPhysicalDeviceFeatures
    robustBufferAccess::VkBool32
    fullDrawIndexUint32::VkBool32
    imageCubeArray::VkBool32
    independentBlend::VkBool32
    geometryShader::VkBool32
    tessellationShader::VkBool32
    sampleRateShading::VkBool32
    dualSrcBlend::VkBool32
    logicOp::VkBool32
    multiDrawIndirect::VkBool32
    drawIndirectFirstInstance::VkBool32
    depthClamp::VkBool32
    depthBiasClamp::VkBool32
    fillModeNonSolid::VkBool32
    depthBounds::VkBool32
    wideLines::VkBool32
    largePoints::VkBool32
    alphaToOne::VkBool32
    multiViewport::VkBool32
    samplerAnisotropy::VkBool32
    textureCompressionETC2::VkBool32
    textureCompressionASTC_LDR::VkBool32
    textureCompressionBC::VkBool32
    occlusionQueryPrecise::VkBool32
    pipelineStatisticsQuery::VkBool32
    vertexPipelineStoresAndAtomics::VkBool32
    fragmentStoresAndAtomics::VkBool32
    shaderTessellationAndGeometryPointSize::VkBool32
    shaderImageGatherExtended::VkBool32
    shaderStorageImageExtendedFormats::VkBool32
    shaderStorageImageMultisample::VkBool32
    shaderStorageImageReadWithoutFormat::VkBool32
    shaderStorageImageWriteWithoutFormat::VkBool32
    shaderUniformBufferArrayDynamicIndexing::VkBool32
    shaderSampledImageArrayDynamicIndexing::VkBool32
    shaderStorageBufferArrayDynamicIndexing::VkBool32
    shaderStorageImageArrayDynamicIndexing::VkBool32
    shaderClipDistance::VkBool32
    shaderCullDistance::VkBool32
    shaderFloat64::VkBool32
    shaderInt64::VkBool32
    shaderInt16::VkBool32
    shaderResourceResidency::VkBool32
    shaderResourceMinLod::VkBool32
    sparseBinding::VkBool32
    sparseResidencyBuffer::VkBool32
    sparseResidencyImage2D::VkBool32
    sparseResidencyImage3D::VkBool32
    sparseResidency2Samples::VkBool32
    sparseResidency4Samples::VkBool32
    sparseResidency8Samples::VkBool32
    sparseResidency16Samples::VkBool32
    sparseResidencyAliased::VkBool32
    variableMultisampleRate::VkBool32
    inheritedQueries::VkBool32
end

immutable VkFormatProperties
    linearTilingFeatures::VkFormatFeatureFlags
    optimalTilingFeatures::VkFormatFeatureFlags
    bufferFeatures::VkFormatFeatureFlags
end

immutable VkExtent3D
    width::UInt32
    height::UInt32
    depth::UInt32
end

immutable VkImageFormatProperties
    maxExtent::VkExtent3D
    maxMipLevels::UInt32
    maxArrayLayers::UInt32
    sampleCounts::VkSampleCountFlags
    maxResourceSize::VkDeviceSize
end

immutable VkPhysicalDeviceLimits
    maxImageDimension1D::UInt32
    maxImageDimension2D::UInt32
    maxImageDimension3D::UInt32
    maxImageDimensionCube::UInt32
    maxImageArrayLayers::UInt32
    maxTexelBufferElements::UInt32
    maxUniformBufferRange::UInt32
    maxStorageBufferRange::UInt32
    maxPushConstantsSize::UInt32
    maxMemoryAllocationCount::UInt32
    maxSamplerAllocationCount::UInt32
    bufferImageGranularity::VkDeviceSize
    sparseAddressSpaceSize::VkDeviceSize
    maxBoundDescriptorSets::UInt32
    maxPerStageDescriptorSamplers::UInt32
    maxPerStageDescriptorUniformBuffers::UInt32
    maxPerStageDescriptorStorageBuffers::UInt32
    maxPerStageDescriptorSampledImages::UInt32
    maxPerStageDescriptorStorageImages::UInt32
    maxPerStageDescriptorInputAttachments::UInt32
    maxPerStageResources::UInt32
    maxDescriptorSetSamplers::UInt32
    maxDescriptorSetUniformBuffers::UInt32
    maxDescriptorSetUniformBuffersDynamic::UInt32
    maxDescriptorSetStorageBuffers::UInt32
    maxDescriptorSetStorageBuffersDynamic::UInt32
    maxDescriptorSetSampledImages::UInt32
    maxDescriptorSetStorageImages::UInt32
    maxDescriptorSetInputAttachments::UInt32
    maxVertexInputAttributes::UInt32
    maxVertexInputBindings::UInt32
    maxVertexInputAttributeOffset::UInt32
    maxVertexInputBindingStride::UInt32
    maxVertexOutputComponents::UInt32
    maxTessellationGenerationLevel::UInt32
    maxTessellationPatchSize::UInt32
    maxTessellationControlPerVertexInputComponents::UInt32
    maxTessellationControlPerVertexOutputComponents::UInt32
    maxTessellationControlPerPatchOutputComponents::UInt32
    maxTessellationControlTotalOutputComponents::UInt32
    maxTessellationEvaluationInputComponents::UInt32
    maxTessellationEvaluationOutputComponents::UInt32
    maxGeometryShaderInvocations::UInt32
    maxGeometryInputComponents::UInt32
    maxGeometryOutputComponents::UInt32
    maxGeometryOutputVertices::UInt32
    maxGeometryTotalOutputComponents::UInt32
    maxFragmentInputComponents::UInt32
    maxFragmentOutputAttachments::UInt32
    maxFragmentDualSrcAttachments::UInt32
    maxFragmentCombinedOutputResources::UInt32
    maxComputeSharedMemorySize::UInt32
    maxComputeWorkGroupCount::NTuple{3,UInt32}
    maxComputeWorkGroupInvocations::UInt32
    maxComputeWorkGroupSize::NTuple{3,UInt32}
    subPixelPrecisionBits::UInt32
    subTexelPrecisionBits::UInt32
    mipmapPrecisionBits::UInt32
    maxDrawIndexedIndexValue::UInt32
    maxDrawIndirectCount::UInt32
    maxSamplerLodBias::Cfloat
    maxSamplerAnisotropy::Cfloat
    maxViewports::UInt32
    maxViewportDimensions::NTuple{2,UInt32}
    viewportBoundsRange::NTuple{2,Cfloat}
    viewportSubPixelBits::UInt32
    minMemoryMapAlignment::Csize_t
    minTexelBufferOffsetAlignment::VkDeviceSize
    minUniformBufferOffsetAlignment::VkDeviceSize
    minStorageBufferOffsetAlignment::VkDeviceSize
    minTexelOffset::Int32
    maxTexelOffset::UInt32
    minTexelGatherOffset::Int32
    maxTexelGatherOffset::UInt32
    minInterpolationOffset::Cfloat
    maxInterpolationOffset::Cfloat
    subPixelInterpolationOffsetBits::UInt32
    maxFramebufferWidth::UInt32
    maxFramebufferHeight::UInt32
    maxFramebufferLayers::UInt32
    framebufferColorSampleCounts::VkSampleCountFlags
    framebufferDepthSampleCounts::VkSampleCountFlags
    framebufferStencilSampleCounts::VkSampleCountFlags
    framebufferNoAttachmentsSampleCounts::VkSampleCountFlags
    maxColorAttachments::UInt32
    sampledImageColorSampleCounts::VkSampleCountFlags
    sampledImageIntegerSampleCounts::VkSampleCountFlags
    sampledImageDepthSampleCounts::VkSampleCountFlags
    sampledImageStencilSampleCounts::VkSampleCountFlags
    storageImageSampleCounts::VkSampleCountFlags
    maxSampleMaskWords::UInt32
    timestampComputeAndGraphics::VkBool32
    timestampPeriod::Cfloat
    maxClipDistances::UInt32
    maxCullDistances::UInt32
    maxCombinedClipAndCullDistances::UInt32
    discreteQueuePriorities::UInt32
    pointSizeRange::NTuple{2,Cfloat}
    lineWidthRange::NTuple{2,Cfloat}
    pointSizeGranularity::Cfloat
    lineWidthGranularity::Cfloat
    strictLines::VkBool32
    standardSampleLocations::VkBool32
    optimalBufferCopyOffsetAlignment::VkDeviceSize
    optimalBufferCopyRowPitchAlignment::VkDeviceSize
    nonCoherentAtomSize::VkDeviceSize
end

immutable VkPhysicalDeviceSparseProperties
    residencyStandard2DBlockShape::VkBool32
    residencyStandard2DMultisampleBlockShape::VkBool32
    residencyStandard3DBlockShape::VkBool32
    residencyAlignedMipSize::VkBool32
    residencyNonResidentStrict::VkBool32
end

immutable VkPhysicalDeviceProperties
    apiVersion::UInt32
    driverVersion::UInt32
    vendorID::UInt32
    deviceID::UInt32
    deviceType::VkPhysicalDeviceType
    deviceName::NTuple{256,UInt8}
    pipelineCacheUUID::NTuple{16,UInt8}
    limits::VkPhysicalDeviceLimits
    sparseProperties::VkPhysicalDeviceSparseProperties
end

immutable VkQueueFamilyProperties
    queueFlags::VkQueueFlags
    queueCount::UInt32
    timestampValidBits::UInt32
    minImageTransferGranularity::VkExtent3D
end

immutable VkMemoryType
    propertyFlags::VkMemoryPropertyFlags
    heapIndex::UInt32
end

immutable VkMemoryHeap
    size::VkDeviceSize
    flags::VkMemoryHeapFlags
end

immutable VkPhysicalDeviceMemoryProperties
    memoryTypeCount::UInt32
    memoryTypes::NTuple{32,VkMemoryType}
    memoryHeapCount::UInt32
    memoryHeaps::NTuple{16,VkMemoryHeap}
end

immutable VkDeviceQueueCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkDeviceQueueCreateFlags
    queueFamilyIndex::UInt32
    queueCount::UInt32
    pQueuePriorities::Ptr{Cfloat}
end

immutable VkDeviceCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkDeviceCreateFlags
    queueCreateInfoCount::UInt32
    pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo}
    enabledLayerCount::UInt32
    ppEnabledLayerNames::Ptr{Cstring}
    enabledExtensionCount::UInt32
    ppEnabledExtensionNames::Ptr{Cstring}
    pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures}
end

immutable VkExtensionProperties
    extensionName::NTuple{256,UInt8}
    specVersion::UInt32
end

immutable VkLayerProperties
    layerName::NTuple{256,UInt8}
    specVersion::UInt32
    implementationVersion::UInt32
    description::NTuple{256,UInt8}
end

immutable VkSubmitInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    waitSemaphoreCount::UInt32
    pWaitSemaphores::Ptr{VkSemaphore}
    pWaitDstStageMask::Ptr{VkPipelineStageFlags}
    commandBufferCount::UInt32
    pCommandBuffers::Ptr{VkCommandBuffer}
    signalSemaphoreCount::UInt32
    pSignalSemaphores::Ptr{VkSemaphore}
end

immutable VkMemoryAllocateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    allocationSize::VkDeviceSize
    memoryTypeIndex::UInt32
end

immutable VkMappedMemoryRange
    sType::VkStructureType
    pNext::Ptr{Void}
    memory::VkDeviceMemory
    offset::VkDeviceSize
    size::VkDeviceSize
end

immutable VkMemoryRequirements
    size::VkDeviceSize
    alignment::VkDeviceSize
    memoryTypeBits::UInt32
end

immutable VkSparseImageFormatProperties
    aspectMask::VkImageAspectFlags
    imageGranularity::VkExtent3D
    flags::VkSparseImageFormatFlags
end

immutable VkSparseImageMemoryRequirements
    formatProperties::VkSparseImageFormatProperties
    imageMipTailFirstLod::UInt32
    imageMipTailSize::VkDeviceSize
    imageMipTailOffset::VkDeviceSize
    imageMipTailStride::VkDeviceSize
end

immutable VkSparseMemoryBind
    resourceOffset::VkDeviceSize
    size::VkDeviceSize
    memory::VkDeviceMemory
    memoryOffset::VkDeviceSize
    flags::VkSparseMemoryBindFlags
end

immutable VkSparseBufferMemoryBindInfo
    buffer::VkBuffer
    bindCount::UInt32
    pBinds::Ptr{VkSparseMemoryBind}
end

immutable VkSparseImageOpaqueMemoryBindInfo
    image::VkImage
    bindCount::UInt32
    pBinds::Ptr{VkSparseMemoryBind}
end

immutable VkImageSubresource
    aspectMask::VkImageAspectFlags
    mipLevel::UInt32
    arrayLayer::UInt32
end

immutable VkOffset3D
    x::Int32
    y::Int32
    z::Int32
end

immutable VkSparseImageMemoryBind
    subresource::VkImageSubresource
    offset::VkOffset3D
    extent::VkExtent3D
    memory::VkDeviceMemory
    memoryOffset::VkDeviceSize
    flags::VkSparseMemoryBindFlags
end

immutable VkSparseImageMemoryBindInfo
    image::VkImage
    bindCount::UInt32
    pBinds::Ptr{VkSparseImageMemoryBind}
end

immutable VkBindSparseInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    waitSemaphoreCount::UInt32
    pWaitSemaphores::Ptr{VkSemaphore}
    bufferBindCount::UInt32
    pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo}
    imageOpaqueBindCount::UInt32
    pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo}
    imageBindCount::UInt32
    pImageBinds::Ptr{VkSparseImageMemoryBindInfo}
    signalSemaphoreCount::UInt32
    pSignalSemaphores::Ptr{VkSemaphore}
end

immutable VkFenceCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkFenceCreateFlags
end

immutable VkSemaphoreCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkSemaphoreCreateFlags
end

immutable VkEventCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkEventCreateFlags
end

immutable VkQueryPoolCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkQueryPoolCreateFlags
    queryType::VkQueryType
    queryCount::UInt32
    pipelineStatistics::VkQueryPipelineStatisticFlags
end

immutable VkBufferCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkBufferCreateFlags
    size::VkDeviceSize
    usage::VkBufferUsageFlags
    sharingMode::VkSharingMode
    queueFamilyIndexCount::UInt32
    pQueueFamilyIndices::Ptr{UInt32}
end

immutable VkBufferViewCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkBufferViewCreateFlags
    buffer::VkBuffer
    format::VkFormat
    offset::VkDeviceSize
    range::VkDeviceSize
end

immutable VkImageCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkImageCreateFlags
    imageType::VkImageType
    format::VkFormat
    extent::VkExtent3D
    mipLevels::UInt32
    arrayLayers::UInt32
    samples::VkSampleCountFlagBits
    tiling::VkImageTiling
    usage::VkImageUsageFlags
    sharingMode::VkSharingMode
    queueFamilyIndexCount::UInt32
    pQueueFamilyIndices::Ptr{UInt32}
    initialLayout::VkImageLayout
end

immutable VkSubresourceLayout
    offset::VkDeviceSize
    size::VkDeviceSize
    rowPitch::VkDeviceSize
    arrayPitch::VkDeviceSize
    depthPitch::VkDeviceSize
end

immutable VkComponentMapping
    r::VkComponentSwizzle
    g::VkComponentSwizzle
    b::VkComponentSwizzle
    a::VkComponentSwizzle
end

immutable VkImageSubresourceRange
    aspectMask::VkImageAspectFlags
    baseMipLevel::UInt32
    levelCount::UInt32
    baseArrayLayer::UInt32
    layerCount::UInt32
end

immutable VkImageViewCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkImageViewCreateFlags
    image::VkImage
    viewType::VkImageViewType
    format::VkFormat
    components::VkComponentMapping
    subresourceRange::VkImageSubresourceRange
end

immutable VkShaderModuleCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkShaderModuleCreateFlags
    codeSize::Csize_t
    pCode::Ptr{UInt32}
end

immutable VkPipelineCacheCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineCacheCreateFlags
    initialDataSize::Csize_t
    pInitialData::Ptr{Void}
end

immutable VkSpecializationMapEntry
    constantID::UInt32
    offset::UInt32
    size::Csize_t
end

immutable VkSpecializationInfo
    mapEntryCount::UInt32
    pMapEntries::Ptr{VkSpecializationMapEntry}
    dataSize::Csize_t
    pData::Ptr{Void}
end

immutable VkPipelineShaderStageCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineShaderStageCreateFlags
    stage::VkShaderStageFlagBits
    _module::VkShaderModule
    pName::Cstring
    pSpecializationInfo::Ptr{VkSpecializationInfo}
end

immutable VkVertexInputBindingDescription
    binding::UInt32
    stride::UInt32
    inputRate::VkVertexInputRate
end

immutable VkVertexInputAttributeDescription
    location::UInt32
    binding::UInt32
    format::VkFormat
    offset::UInt32
end

immutable VkPipelineVertexInputStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineVertexInputStateCreateFlags
    vertexBindingDescriptionCount::UInt32
    pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription}
    vertexAttributeDescriptionCount::UInt32
    pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription}
end

immutable VkPipelineInputAssemblyStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineInputAssemblyStateCreateFlags
    topology::VkPrimitiveTopology
    primitiveRestartEnable::VkBool32
end

immutable VkPipelineTessellationStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineTessellationStateCreateFlags
    patchControlPoints::UInt32
end

immutable VkViewport
    x::Cfloat
    y::Cfloat
    width::Cfloat
    height::Cfloat
    minDepth::Cfloat
    maxDepth::Cfloat
end

immutable VkOffset2D
    x::Int32
    y::Int32
end

immutable VkExtent2D
    width::UInt32
    height::UInt32
end

immutable VkRect2D
    offset::VkOffset2D
    extent::VkExtent2D
end

immutable VkPipelineViewportStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineViewportStateCreateFlags
    viewportCount::UInt32
    pViewports::Ptr{VkViewport}
    scissorCount::UInt32
    pScissors::Ptr{VkRect2D}
end

immutable VkPipelineRasterizationStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineRasterizationStateCreateFlags
    depthClampEnable::VkBool32
    rasterizerDiscardEnable::VkBool32
    polygonMode::VkPolygonMode
    cullMode::VkCullModeFlags
    frontFace::VkFrontFace
    depthBiasEnable::VkBool32
    depthBiasConstantFactor::Cfloat
    depthBiasClamp::Cfloat
    depthBiasSlopeFactor::Cfloat
    lineWidth::Cfloat
end

immutable VkPipelineMultisampleStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineMultisampleStateCreateFlags
    rasterizationSamples::VkSampleCountFlagBits
    sampleShadingEnable::VkBool32
    minSampleShading::Cfloat
    pSampleMask::Ptr{VkSampleMask}
    alphaToCoverageEnable::VkBool32
    alphaToOneEnable::VkBool32
end

immutable VkStencilOpState
    failOp::VkStencilOp
    passOp::VkStencilOp
    depthFailOp::VkStencilOp
    compareOp::VkCompareOp
    compareMask::UInt32
    writeMask::UInt32
    reference::UInt32
end

immutable VkPipelineDepthStencilStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineDepthStencilStateCreateFlags
    depthTestEnable::VkBool32
    depthWriteEnable::VkBool32
    depthCompareOp::VkCompareOp
    depthBoundsTestEnable::VkBool32
    stencilTestEnable::VkBool32
    front::VkStencilOpState
    back::VkStencilOpState
    minDepthBounds::Cfloat
    maxDepthBounds::Cfloat
end

immutable VkPipelineColorBlendAttachmentState
    blendEnable::VkBool32
    srcColorBlendFactor::VkBlendFactor
    dstColorBlendFactor::VkBlendFactor
    colorBlendOp::VkBlendOp
    srcAlphaBlendFactor::VkBlendFactor
    dstAlphaBlendFactor::VkBlendFactor
    alphaBlendOp::VkBlendOp
    colorWriteMask::VkColorComponentFlags
end

immutable VkPipelineColorBlendStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineColorBlendStateCreateFlags
    logicOpEnable::VkBool32
    logicOp::VkLogicOp
    attachmentCount::UInt32
    pAttachments::Ptr{VkPipelineColorBlendAttachmentState}
    blendConstants::NTuple{4,Cfloat}
end

immutable VkPipelineDynamicStateCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineDynamicStateCreateFlags
    dynamicStateCount::UInt32
    pDynamicStates::Ptr{VkDynamicState}
end

immutable VkGraphicsPipelineCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineCreateFlags
    stageCount::UInt32
    pStages::Ptr{VkPipelineShaderStageCreateInfo}
    pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo}
    pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo}
    pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo}
    pViewportState::Ptr{VkPipelineViewportStateCreateInfo}
    pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo}
    pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo}
    pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo}
    pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo}
    pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo}
    layout::VkPipelineLayout
    renderPass::VkRenderPass
    subpass::UInt32
    basePipelineHandle::VkPipeline
    basePipelineIndex::Int32
end

immutable VkComputePipelineCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineCreateFlags
    stage::VkPipelineShaderStageCreateInfo
    layout::VkPipelineLayout
    basePipelineHandle::VkPipeline
    basePipelineIndex::Int32
end

immutable VkPushConstantRange
    stageFlags::VkShaderStageFlags
    offset::UInt32
    size::UInt32
end

immutable VkPipelineLayoutCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkPipelineLayoutCreateFlags
    setLayoutCount::UInt32
    pSetLayouts::Ptr{VkDescriptorSetLayout}
    pushConstantRangeCount::UInt32
    pPushConstantRanges::Ptr{VkPushConstantRange}
end

immutable VkSamplerCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkSamplerCreateFlags
    magFilter::VkFilter
    minFilter::VkFilter
    mipmapMode::VkSamplerMipmapMode
    addressModeU::VkSamplerAddressMode
    addressModeV::VkSamplerAddressMode
    addressModeW::VkSamplerAddressMode
    mipLodBias::Cfloat
    anisotropyEnable::VkBool32
    maxAnisotropy::Cfloat
    compareEnable::VkBool32
    compareOp::VkCompareOp
    minLod::Cfloat
    maxLod::Cfloat
    borderColor::VkBorderColor
    unnormalizedCoordinates::VkBool32
end

immutable VkDescriptorSetLayoutBinding
    binding::UInt32
    descriptorType::VkDescriptorType
    descriptorCount::UInt32
    stageFlags::VkShaderStageFlags
    pImmutableSamplers::Ptr{VkSampler}
end

immutable VkDescriptorSetLayoutCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkDescriptorSetLayoutCreateFlags
    bindingCount::UInt32
    pBindings::Ptr{VkDescriptorSetLayoutBinding}
end

immutable VkDescriptorPoolSize
    _type::VkDescriptorType
    descriptorCount::UInt32
end

immutable VkDescriptorPoolCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkDescriptorPoolCreateFlags
    maxSets::UInt32
    poolSizeCount::UInt32
    pPoolSizes::Ptr{VkDescriptorPoolSize}
end

immutable VkDescriptorSetAllocateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    descriptorPool::VkDescriptorPool
    descriptorSetCount::UInt32
    pSetLayouts::Ptr{VkDescriptorSetLayout}
end

immutable VkDescriptorImageInfo
    sampler::VkSampler
    imageView::VkImageView
    imageLayout::VkImageLayout
end

immutable VkDescriptorBufferInfo
    buffer::VkBuffer
    offset::VkDeviceSize
    range::VkDeviceSize
end

immutable VkWriteDescriptorSet
    sType::VkStructureType
    pNext::Ptr{Void}
    dstSet::VkDescriptorSet
    dstBinding::UInt32
    dstArrayElement::UInt32
    descriptorCount::UInt32
    descriptorType::VkDescriptorType
    pImageInfo::Ptr{VkDescriptorImageInfo}
    pBufferInfo::Ptr{VkDescriptorBufferInfo}
    pTexelBufferView::Ptr{VkBufferView}
end

immutable VkCopyDescriptorSet
    sType::VkStructureType
    pNext::Ptr{Void}
    srcSet::VkDescriptorSet
    srcBinding::UInt32
    srcArrayElement::UInt32
    dstSet::VkDescriptorSet
    dstBinding::UInt32
    dstArrayElement::UInt32
    descriptorCount::UInt32
end

immutable VkFramebufferCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkFramebufferCreateFlags
    renderPass::VkRenderPass
    attachmentCount::UInt32
    pAttachments::Ptr{VkImageView}
    width::UInt32
    height::UInt32
    layers::UInt32
end

immutable VkAttachmentDescription
    flags::VkAttachmentDescriptionFlags
    format::VkFormat
    samples::VkSampleCountFlagBits
    loadOp::VkAttachmentLoadOp
    storeOp::VkAttachmentStoreOp
    stencilLoadOp::VkAttachmentLoadOp
    stencilStoreOp::VkAttachmentStoreOp
    initialLayout::VkImageLayout
    finalLayout::VkImageLayout
end

immutable VkAttachmentReference
    attachment::UInt32
    layout::VkImageLayout
end

immutable VkSubpassDescription
    flags::VkSubpassDescriptionFlags
    pipelineBindPoint::VkPipelineBindPoint
    inputAttachmentCount::UInt32
    pInputAttachments::Ptr{VkAttachmentReference}
    colorAttachmentCount::UInt32
    pColorAttachments::Ptr{VkAttachmentReference}
    pResolveAttachments::Ptr{VkAttachmentReference}
    pDepthStencilAttachment::Ptr{VkAttachmentReference}
    preserveAttachmentCount::UInt32
    pPreserveAttachments::Ptr{UInt32}
end

immutable VkSubpassDependency
    srcSubpass::UInt32
    dstSubpass::UInt32
    srcStageMask::VkPipelineStageFlags
    dstStageMask::VkPipelineStageFlags
    srcAccessMask::VkAccessFlags
    dstAccessMask::VkAccessFlags
    dependencyFlags::VkDependencyFlags
end

immutable VkRenderPassCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkRenderPassCreateFlags
    attachmentCount::UInt32
    pAttachments::Ptr{VkAttachmentDescription}
    subpassCount::UInt32
    pSubpasses::Ptr{VkSubpassDescription}
    dependencyCount::UInt32
    pDependencies::Ptr{VkSubpassDependency}
end

immutable VkCommandPoolCreateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkCommandPoolCreateFlags
    queueFamilyIndex::UInt32
end

immutable VkCommandBufferAllocateInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    commandPool::VkCommandPool
    level::VkCommandBufferLevel
    commandBufferCount::UInt32
end

immutable VkCommandBufferInheritanceInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    renderPass::VkRenderPass
    subpass::UInt32
    framebuffer::VkFramebuffer
    occlusionQueryEnable::VkBool32
    queryFlags::VkQueryControlFlags
    pipelineStatistics::VkQueryPipelineStatisticFlags
end

immutable VkCommandBufferBeginInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkCommandBufferUsageFlags
    pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo}
end

immutable VkBufferCopy
    srcOffset::VkDeviceSize
    dstOffset::VkDeviceSize
    size::VkDeviceSize
end

immutable VkImageSubresourceLayers
    aspectMask::VkImageAspectFlags
    mipLevel::UInt32
    baseArrayLayer::UInt32
    layerCount::UInt32
end

immutable VkImageCopy
    srcSubresource::VkImageSubresourceLayers
    srcOffset::VkOffset3D
    dstSubresource::VkImageSubresourceLayers
    dstOffset::VkOffset3D
    extent::VkExtent3D
end

immutable VkImageBlit
    srcSubresource::VkImageSubresourceLayers
    srcOffsets::NTuple{2,VkOffset3D}
    dstSubresource::VkImageSubresourceLayers
    dstOffsets::NTuple{2,VkOffset3D}
end

immutable VkBufferImageCopy
    bufferOffset::VkDeviceSize
    bufferRowLength::UInt32
    bufferImageHeight::UInt32
    imageSubresource::VkImageSubresourceLayers
    imageOffset::VkOffset3D
    imageExtent::VkExtent3D
end

immutable VkClearColorValue
    _VkClearColorValue::NTuple{4,Cfloat}
end

immutable VkClearDepthStencilValue
    depth::Cfloat
    stencil::UInt32
end

immutable VkClearValue
    _VkClearValue::VkClearColorValue
end

immutable VkClearAttachment
    aspectMask::VkImageAspectFlags
    colorAttachment::UInt32
    clearValue::VkClearValue
end

immutable VkClearRect
    rect::VkRect2D
    baseArrayLayer::UInt32
    layerCount::UInt32
end

immutable VkImageResolve
    srcSubresource::VkImageSubresourceLayers
    srcOffset::VkOffset3D
    dstSubresource::VkImageSubresourceLayers
    dstOffset::VkOffset3D
    extent::VkExtent3D
end

immutable VkMemoryBarrier
    sType::VkStructureType
    pNext::Ptr{Void}
    srcAccessMask::VkAccessFlags
    dstAccessMask::VkAccessFlags
end

immutable VkBufferMemoryBarrier
    sType::VkStructureType
    pNext::Ptr{Void}
    srcAccessMask::VkAccessFlags
    dstAccessMask::VkAccessFlags
    srcQueueFamilyIndex::UInt32
    dstQueueFamilyIndex::UInt32
    buffer::VkBuffer
    offset::VkDeviceSize
    size::VkDeviceSize
end

immutable VkImageMemoryBarrier
    sType::VkStructureType
    pNext::Ptr{Void}
    srcAccessMask::VkAccessFlags
    dstAccessMask::VkAccessFlags
    oldLayout::VkImageLayout
    newLayout::VkImageLayout
    srcQueueFamilyIndex::UInt32
    dstQueueFamilyIndex::UInt32
    image::VkImage
    subresourceRange::VkImageSubresourceRange
end

immutable VkRenderPassBeginInfo
    sType::VkStructureType
    pNext::Ptr{Void}
    renderPass::VkRenderPass
    framebuffer::VkFramebuffer
    renderArea::VkRect2D
    clearValueCount::UInt32
    pClearValues::Ptr{VkClearValue}
end

immutable VkDispatchIndirectCommand
    x::UInt32
    y::UInt32
    z::UInt32
end

immutable VkDrawIndexedIndirectCommand
    indexCount::UInt32
    instanceCount::UInt32
    firstIndex::UInt32
    vertexOffset::Int32
    firstInstance::UInt32
end

immutable VkDrawIndirectCommand
    vertexCount::UInt32
    instanceCount::UInt32
    firstVertex::UInt32
    firstInstance::UInt32
end

typealias PFN_vkCreateInstance Ptr{Void}
typealias PFN_vkDestroyInstance Ptr{Void}
typealias PFN_vkEnumeratePhysicalDevices Ptr{Void}
typealias PFN_vkGetPhysicalDeviceFeatures Ptr{Void}
typealias PFN_vkGetPhysicalDeviceFormatProperties Ptr{Void}
typealias PFN_vkGetPhysicalDeviceImageFormatProperties Ptr{Void}
typealias PFN_vkGetPhysicalDeviceProperties Ptr{Void}
typealias PFN_vkGetPhysicalDeviceQueueFamilyProperties Ptr{Void}
typealias PFN_vkGetPhysicalDeviceMemoryProperties Ptr{Void}
typealias PFN_vkGetInstanceProcAddr Ptr{Void}
typealias PFN_vkGetDeviceProcAddr Ptr{Void}
typealias PFN_vkCreateDevice Ptr{Void}
typealias PFN_vkDestroyDevice Ptr{Void}
typealias PFN_vkEnumerateInstanceExtensionProperties Ptr{Void}
typealias PFN_vkEnumerateDeviceExtensionProperties Ptr{Void}
typealias PFN_vkEnumerateInstanceLayerProperties Ptr{Void}
typealias PFN_vkEnumerateDeviceLayerProperties Ptr{Void}
typealias PFN_vkGetDeviceQueue Ptr{Void}
typealias PFN_vkQueueSubmit Ptr{Void}
typealias PFN_vkQueueWaitIdle Ptr{Void}
typealias PFN_vkDeviceWaitIdle Ptr{Void}
typealias PFN_vkAllocateMemory Ptr{Void}
typealias PFN_vkFreeMemory Ptr{Void}
typealias PFN_vkMapMemory Ptr{Void}
typealias PFN_vkUnmapMemory Ptr{Void}
typealias PFN_vkFlushMappedMemoryRanges Ptr{Void}
typealias PFN_vkInvalidateMappedMemoryRanges Ptr{Void}
typealias PFN_vkGetDeviceMemoryCommitment Ptr{Void}
typealias PFN_vkBindBufferMemory Ptr{Void}
typealias PFN_vkBindImageMemory Ptr{Void}
typealias PFN_vkGetBufferMemoryRequirements Ptr{Void}
typealias PFN_vkGetImageMemoryRequirements Ptr{Void}
typealias PFN_vkGetImageSparseMemoryRequirements Ptr{Void}
typealias PFN_vkGetPhysicalDeviceSparseImageFormatProperties Ptr{Void}
typealias PFN_vkQueueBindSparse Ptr{Void}
typealias PFN_vkCreateFence Ptr{Void}
typealias PFN_vkDestroyFence Ptr{Void}
typealias PFN_vkResetFences Ptr{Void}
typealias PFN_vkGetFenceStatus Ptr{Void}
typealias PFN_vkWaitForFences Ptr{Void}
typealias PFN_vkCreateSemaphore Ptr{Void}
typealias PFN_vkDestroySemaphore Ptr{Void}
typealias PFN_vkCreateEvent Ptr{Void}
typealias PFN_vkDestroyEvent Ptr{Void}
typealias PFN_vkGetEventStatus Ptr{Void}
typealias PFN_vkSetEvent Ptr{Void}
typealias PFN_vkResetEvent Ptr{Void}
typealias PFN_vkCreateQueryPool Ptr{Void}
typealias PFN_vkDestroyQueryPool Ptr{Void}
typealias PFN_vkGetQueryPoolResults Ptr{Void}
typealias PFN_vkCreateBuffer Ptr{Void}
typealias PFN_vkDestroyBuffer Ptr{Void}
typealias PFN_vkCreateBufferView Ptr{Void}
typealias PFN_vkDestroyBufferView Ptr{Void}
typealias PFN_vkCreateImage Ptr{Void}
typealias PFN_vkDestroyImage Ptr{Void}
typealias PFN_vkGetImageSubresourceLayout Ptr{Void}
typealias PFN_vkCreateImageView Ptr{Void}
typealias PFN_vkDestroyImageView Ptr{Void}
typealias PFN_vkCreateShaderModule Ptr{Void}
typealias PFN_vkDestroyShaderModule Ptr{Void}
typealias PFN_vkCreatePipelineCache Ptr{Void}
typealias PFN_vkDestroyPipelineCache Ptr{Void}
typealias PFN_vkGetPipelineCacheData Ptr{Void}
typealias PFN_vkMergePipelineCaches Ptr{Void}
typealias PFN_vkCreateGraphicsPipelines Ptr{Void}
typealias PFN_vkCreateComputePipelines Ptr{Void}
typealias PFN_vkDestroyPipeline Ptr{Void}
typealias PFN_vkCreatePipelineLayout Ptr{Void}
typealias PFN_vkDestroyPipelineLayout Ptr{Void}
typealias PFN_vkCreateSampler Ptr{Void}
typealias PFN_vkDestroySampler Ptr{Void}
typealias PFN_vkCreateDescriptorSetLayout Ptr{Void}
typealias PFN_vkDestroyDescriptorSetLayout Ptr{Void}
typealias PFN_vkCreateDescriptorPool Ptr{Void}
typealias PFN_vkDestroyDescriptorPool Ptr{Void}
typealias PFN_vkResetDescriptorPool Ptr{Void}
typealias PFN_vkAllocateDescriptorSets Ptr{Void}
typealias PFN_vkFreeDescriptorSets Ptr{Void}
typealias PFN_vkUpdateDescriptorSets Ptr{Void}
typealias PFN_vkCreateFramebuffer Ptr{Void}
typealias PFN_vkDestroyFramebuffer Ptr{Void}
typealias PFN_vkCreateRenderPass Ptr{Void}
typealias PFN_vkDestroyRenderPass Ptr{Void}
typealias PFN_vkGetRenderAreaGranularity Ptr{Void}
typealias PFN_vkCreateCommandPool Ptr{Void}
typealias PFN_vkDestroyCommandPool Ptr{Void}
typealias PFN_vkResetCommandPool Ptr{Void}
typealias PFN_vkAllocateCommandBuffers Ptr{Void}
typealias PFN_vkFreeCommandBuffers Ptr{Void}
typealias PFN_vkBeginCommandBuffer Ptr{Void}
typealias PFN_vkEndCommandBuffer Ptr{Void}
typealias PFN_vkResetCommandBuffer Ptr{Void}
typealias PFN_vkCmdBindPipeline Ptr{Void}
typealias PFN_vkCmdSetViewport Ptr{Void}
typealias PFN_vkCmdSetScissor Ptr{Void}
typealias PFN_vkCmdSetLineWidth Ptr{Void}
typealias PFN_vkCmdSetDepthBias Ptr{Void}
typealias PFN_vkCmdSetBlendConstants Ptr{Void}
typealias PFN_vkCmdSetDepthBounds Ptr{Void}
typealias PFN_vkCmdSetStencilCompareMask Ptr{Void}
typealias PFN_vkCmdSetStencilWriteMask Ptr{Void}
typealias PFN_vkCmdSetStencilReference Ptr{Void}
typealias PFN_vkCmdBindDescriptorSets Ptr{Void}
typealias PFN_vkCmdBindIndexBuffer Ptr{Void}
typealias PFN_vkCmdBindVertexBuffers Ptr{Void}
typealias PFN_vkCmdDraw Ptr{Void}
typealias PFN_vkCmdDrawIndexed Ptr{Void}
typealias PFN_vkCmdDrawIndirect Ptr{Void}
typealias PFN_vkCmdDrawIndexedIndirect Ptr{Void}
typealias PFN_vkCmdDispatch Ptr{Void}
typealias PFN_vkCmdDispatchIndirect Ptr{Void}
typealias PFN_vkCmdCopyBuffer Ptr{Void}
typealias PFN_vkCmdCopyImage Ptr{Void}
typealias PFN_vkCmdBlitImage Ptr{Void}
typealias PFN_vkCmdCopyBufferToImage Ptr{Void}
typealias PFN_vkCmdCopyImageToBuffer Ptr{Void}
typealias PFN_vkCmdUpdateBuffer Ptr{Void}
typealias PFN_vkCmdFillBuffer Ptr{Void}
typealias PFN_vkCmdClearColorImage Ptr{Void}
typealias PFN_vkCmdClearDepthStencilImage Ptr{Void}
typealias PFN_vkCmdClearAttachments Ptr{Void}
typealias PFN_vkCmdResolveImage Ptr{Void}
typealias PFN_vkCmdSetEvent Ptr{Void}
typealias PFN_vkCmdResetEvent Ptr{Void}
typealias PFN_vkCmdWaitEvents Ptr{Void}
typealias PFN_vkCmdPipelineBarrier Ptr{Void}
typealias PFN_vkCmdBeginQuery Ptr{Void}
typealias PFN_vkCmdEndQuery Ptr{Void}
typealias PFN_vkCmdResetQueryPool Ptr{Void}
typealias PFN_vkCmdWriteTimestamp Ptr{Void}
typealias PFN_vkCmdCopyQueryPoolResults Ptr{Void}
typealias PFN_vkCmdPushConstants Ptr{Void}
typealias PFN_vkCmdBeginRenderPass Ptr{Void}
typealias PFN_vkCmdNextSubpass Ptr{Void}
typealias PFN_vkCmdEndRenderPass Ptr{Void}
typealias PFN_vkCmdExecuteCommands Ptr{Void}
typealias VkSurfaceKHR_T Void
typealias VkSurfaceKHR Ptr{VkSurfaceKHR_T}

@cenum(VkColorSpaceKHR,
    VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
    VK_COLOR_SPACE_BEGIN_RANGE_KHR = 0,
    VK_COLOR_SPACE_END_RANGE_KHR = 0,
    VK_COLOR_SPACE_RANGE_SIZE_KHR = 1,
    VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647,
)
@cenum(VkPresentModeKHR,
    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
    VK_PRESENT_MODE_MAILBOX_KHR = 1,
    VK_PRESENT_MODE_FIFO_KHR = 2,
    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
    VK_PRESENT_MODE_BEGIN_RANGE_KHR = 0,
    VK_PRESENT_MODE_END_RANGE_KHR = 3,
    VK_PRESENT_MODE_RANGE_SIZE_KHR = 4,
    VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647,
)
@cenum(VkSurfaceTransformFlagBitsKHR,
    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1,
    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2,
    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4,
    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8,
    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16,
    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32,
    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64,
    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128,
    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256,
    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647,
)

typealias VkSurfaceTransformFlagsKHR VkFlags

@cenum(VkCompositeAlphaFlagBitsKHR,
    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1,
    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2,
    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4,
    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8,
    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647,
)

typealias VkCompositeAlphaFlagsKHR VkFlags

immutable VkSurfaceCapabilitiesKHR
    minImageCount::UInt32
    maxImageCount::UInt32
    currentExtent::VkExtent2D
    minImageExtent::VkExtent2D
    maxImageExtent::VkExtent2D
    maxImageArrayLayers::UInt32
    supportedTransforms::VkSurfaceTransformFlagsKHR
    currentTransform::VkSurfaceTransformFlagBitsKHR
    supportedCompositeAlpha::VkCompositeAlphaFlagsKHR
    supportedUsageFlags::VkImageUsageFlags
end

immutable VkSurfaceFormatKHR
    format::VkFormat
    colorSpace::VkColorSpaceKHR
end

typealias PFN_vkDestroySurfaceKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceSurfaceSupportKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceSurfaceFormatsKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceSurfacePresentModesKHR Ptr{Void}
typealias VkSwapchainKHR_T Void
typealias VkSwapchainKHR Ptr{VkSwapchainKHR_T}
typealias VkSwapchainCreateFlagsKHR VkFlags

immutable VkSwapchainCreateInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkSwapchainCreateFlagsKHR
    surface::VkSurfaceKHR
    minImageCount::UInt32
    imageFormat::VkFormat
    imageColorSpace::VkColorSpaceKHR
    imageExtent::VkExtent2D
    imageArrayLayers::UInt32
    imageUsage::VkImageUsageFlags
    imageSharingMode::VkSharingMode
    queueFamilyIndexCount::UInt32
    pQueueFamilyIndices::Ptr{UInt32}
    preTransform::VkSurfaceTransformFlagBitsKHR
    compositeAlpha::VkCompositeAlphaFlagBitsKHR
    presentMode::VkPresentModeKHR
    clipped::VkBool32
    oldSwapchain::VkSwapchainKHR
end

immutable VkPresentInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    waitSemaphoreCount::UInt32
    pWaitSemaphores::Ptr{VkSemaphore}
    swapchainCount::UInt32
    pSwapchains::Ptr{VkSwapchainKHR}
    pImageIndices::Ptr{UInt32}
    pResults::Ptr{VkResult}
end

typealias PFN_vkCreateSwapchainKHR Ptr{Void}
typealias PFN_vkDestroySwapchainKHR Ptr{Void}
typealias PFN_vkGetSwapchainImagesKHR Ptr{Void}
typealias PFN_vkAcquireNextImageKHR Ptr{Void}
typealias PFN_vkQueuePresentKHR Ptr{Void}
typealias VkDisplayKHR_T Void
typealias VkDisplayKHR Ptr{VkDisplayKHR_T}
typealias VkDisplayModeKHR_T Void
typealias VkDisplayModeKHR Ptr{VkDisplayModeKHR_T}

@cenum(VkDisplayPlaneAlphaFlagBitsKHR,
    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1,
    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2,
    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4,
    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8,
    VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647,
)

typealias VkDisplayPlaneAlphaFlagsKHR VkFlags
typealias VkDisplayModeCreateFlagsKHR VkFlags
typealias VkDisplaySurfaceCreateFlagsKHR VkFlags

immutable VkDisplayPropertiesKHR
    display::VkDisplayKHR
    displayName::Cstring
    physicalDimensions::VkExtent2D
    physicalResolution::VkExtent2D
    supportedTransforms::VkSurfaceTransformFlagsKHR
    planeReorderPossible::VkBool32
    persistentContent::VkBool32
end

immutable VkDisplayModeParametersKHR
    visibleRegion::VkExtent2D
    refreshRate::UInt32
end

immutable VkDisplayModePropertiesKHR
    displayMode::VkDisplayModeKHR
    parameters::VkDisplayModeParametersKHR
end

immutable VkDisplayModeCreateInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkDisplayModeCreateFlagsKHR
    parameters::VkDisplayModeParametersKHR
end

immutable VkDisplayPlaneCapabilitiesKHR
    supportedAlpha::VkDisplayPlaneAlphaFlagsKHR
    minSrcPosition::VkOffset2D
    maxSrcPosition::VkOffset2D
    minSrcExtent::VkExtent2D
    maxSrcExtent::VkExtent2D
    minDstPosition::VkOffset2D
    maxDstPosition::VkOffset2D
    minDstExtent::VkExtent2D
    maxDstExtent::VkExtent2D
end

immutable VkDisplayPlanePropertiesKHR
    currentDisplay::VkDisplayKHR
    currentStackIndex::UInt32
end

immutable VkDisplaySurfaceCreateInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkDisplaySurfaceCreateFlagsKHR
    displayMode::VkDisplayModeKHR
    planeIndex::UInt32
    planeStackIndex::UInt32
    transform::VkSurfaceTransformFlagBitsKHR
    globalAlpha::Cfloat
    alphaMode::VkDisplayPlaneAlphaFlagBitsKHR
    imageExtent::VkExtent2D
end

typealias PFN_vkGetPhysicalDeviceDisplayPropertiesKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR Ptr{Void}
typealias PFN_vkGetDisplayPlaneSupportedDisplaysKHR Ptr{Void}
typealias PFN_vkGetDisplayModePropertiesKHR Ptr{Void}
typealias PFN_vkCreateDisplayModeKHR Ptr{Void}
typealias PFN_vkGetDisplayPlaneCapabilitiesKHR Ptr{Void}
typealias PFN_vkCreateDisplayPlaneSurfaceKHR Ptr{Void}

immutable VkDisplayPresentInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    srcRect::VkRect2D
    dstRect::VkRect2D
    persistent::VkBool32
end

typealias PFN_vkCreateSharedSwapchainsKHR Ptr{Void}
typealias VkXcbSurfaceCreateFlagsKHR VkFlags

immutable VkXcbSurfaceCreateInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkXcbSurfaceCreateFlagsKHR
    connection::Ptr{xcb_connection_t}
    window::xcb_window_t
end

typealias PFN_vkCreateXcbSurfaceKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR Ptr{Void}
typealias VkWaylandSurfaceCreateFlagsKHR VkFlags

immutable VkWaylandSurfaceCreateInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkWaylandSurfaceCreateFlagsKHR
    display::Ptr{wl_display}
    surface::Ptr{wl_surface}
end

typealias PFN_vkCreateWaylandSurfaceKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR Ptr{Void}
typealias VkMirSurfaceCreateFlagsKHR VkFlags

immutable VkMirSurfaceCreateInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkMirSurfaceCreateFlagsKHR
    connection::Ptr{Cint}
    mirSurface::Ptr{Cint}
end

typealias PFN_vkCreateMirSurfaceKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceMirPresentationSupportKHR Ptr{Void}
typealias VkWin32SurfaceCreateFlagsKHR VkFlags

immutable VkWin32SurfaceCreateInfoKHR
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkWin32SurfaceCreateFlagsKHR
    hinstance::Cint
    hwnd::Cint
end

typealias PFN_vkCreateWin32SurfaceKHR Ptr{Void}
typealias PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR Ptr{Void}
typealias VkDebugReportCallbackEXT_T Void
typealias VkDebugReportCallbackEXT Ptr{VkDebugReportCallbackEXT_T}

@cenum(VkDebugReportObjectTypeEXT,
    VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
    VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
    VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
    VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
    VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
    VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
    VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
    VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
    VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
    VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
    VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
    VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
    VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28,
    VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = 0,
    VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = 28,
    VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = 29,
    VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647,
)
@cenum(VkDebugReportErrorEXT,
    VK_DEBUG_REPORT_ERROR_NONE_EXT = 0,
    VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1,
    VK_DEBUG_REPORT_ERROR_BEGIN_RANGE_EXT = 0,
    VK_DEBUG_REPORT_ERROR_END_RANGE_EXT = 1,
    VK_DEBUG_REPORT_ERROR_RANGE_SIZE_EXT = 2,
    VK_DEBUG_REPORT_ERROR_MAX_ENUM_EXT = 2147483647,
)
@cenum(VkDebugReportFlagBitsEXT,
    VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1,
    VK_DEBUG_REPORT_WARNING_BIT_EXT = 2,
    VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4,
    VK_DEBUG_REPORT_ERROR_BIT_EXT = 8,
    VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16,
    VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647,
)

typealias VkDebugReportFlagsEXT VkFlags
typealias PFN_vkDebugReportCallbackEXT Ptr{Void}

immutable VkDebugReportCallbackCreateInfoEXT
    sType::VkStructureType
    pNext::Ptr{Void}
    flags::VkDebugReportFlagsEXT
    pfnCallback::PFN_vkDebugReportCallbackEXT
    pUserData::Ptr{Void}
end

typealias PFN_vkCreateDebugReportCallbackEXT Ptr{Void}
typealias PFN_vkDestroyDebugReportCallbackEXT Ptr{Void}
typealias PFN_vkDebugReportMessageEXT Ptr{Void}


text:
function stmt_effect_free(@nospecialize(stmt), src::IRCode, mod::Module)
    isa(stmt, Union{PiNode, PhiNode}) && return true
    isa(stmt, Union{ReturnNode, GotoNode, GotoIfNot}) && return false
    return statement_effect_free(stmt, src, mod)
end

function abstract_eval_ssavalue(s::SSAValue, src::IRCode)
    return src.types[s.id]
end

ext: jl

max_stars_repo_name: blegat/julia

max_issues_repo_name: blegat/julia

max_forks_repo_name: blegat/julia


text:
# Jeg startede med at lave den den "forkerte" vej - indefra og ud (denne måde er dog klart hurtigst)

function makedict(edgelist)
    d = Dict{String, Vector{String}}()
    for line in edgelist
        src, dest = split(line, ')')
        if !haskey(d, src)
            d[src] = [dest]
        else
            push!(d[src], dest)
        end
    end
    d
end

traverse(edges::Dict, current::String, counter::Int) =
    counter + (haskey(edges, current) ?
        sum(map(x->traverse(edges, x, counter + 1), edges[current])) : 0)

test = split("""
COM)B
B)C
C)D
D)E
E)F
B)G
G)H
D)I
E)J
J)K
K)L""", '\n')

traverse(makedict(test), "COM", 0)

edgelist = makedict(readlines("Dec6_data.txt"))
traverse(edgelist, "COM", 0)

## Alternativt kan man gøre det udefra og ind. Her bytter man om på src og dest
# når man laver sin dict. Eller - man gør som jeg og "vender" sin dict om

function reversedict(d)
    rev = Dict{String, String}()
    for (key, value) in d
        for v in value
            rev[v] = key
        end
    end
    rev
end

# Så bliver traverse meget nem at programmere:
function traverse_reverseddict(d)
    acc = 0
    for planet in keys(d)
        while planet != "COM"
            acc += 1
            planet = d[planet]
        end
    end
    acc
end

traverse_reverseddict(reversedict(edgelist)) # giver samme resultat

# Løsningen på spørgsmål 2 bruger også den "reversed" dictionary
# Jeg laver en linje fra "YOU" og hele vejen ind. Så laver jeg et
# `Set` af alle de planeter jeg møder på vejen (et Set er som en liste
# hvor elementerne ikke har rækkefølge, men den er meget hurtig at søge i).
# Endelig laver jeg en linje fra "SAN" og indtil første gang jeg møder et
# element fra den første linje

function moves(l1, l2, rd)
    yous = String[]
    d = rd[l1]
    while d != "COM"
        d = rd[d]
        push!(yous, d)
    end
    youset = Set(yous)
    d = rd[l2]
    counter = 0
    while !(d ∈ youset)
        counter += 1
        d = rd[d]
    end
    counter + findfirst(==(d), yous)
end

test2 = reversedict(makedict(split("""
COM)B
B)C
C)D
D)E
E)F
B)G
G)H
D)I
E)J
J)K
K)L
K)YOU
I)SAN""", '\n')))

moves("SAN", "YOU", test2)

moves("SAN", "YOU", reversedict(edgelist))


text:
#!/usr/bin/env julia

"""
This program is similar to `simple.jl`, but splits up getkeypress into its
unexported components to print the byte sequence as well as the detected key
press.
"""

using KeyboardDriven

function main()
    keyboarddriven()
    while true
        bs = KeyboardDriven.getkeybytes()
        k = KeyboardDriven.bytestokey(bs)
        println(string(bs, "\t", k))
        if k == ctrl | CharKey('d')
            break
        end
    end
end

main()


text:
### Abstract parameter NStates

abstract type ParameterNState{S<:ValueSupport, F<:VariateForm} <: VariableNState{F} end

const MarkovChain = ParameterNState

DiscreteParameterNState{F<:VariateForm} = ParameterNState{Discrete, F}
ContinuousParameterNState{F<:VariateForm} = ParameterNState{Continuous, F}

UnivariateParameterNState{S<:ValueSupport} = ParameterNState{S, Univariate}
MultivariateParameterNState{S<:ValueSupport} = ParameterNState{S, Multivariate}
MatrixvariateParameterNState{S<:ValueSupport} = ParameterNState{S, Matrixvariate}

diagnostics(nstate::ParameterNState) =
  Dict(zip(nstate.diagnostickeys, Any[nstate.diagnosticvalues[i, :][:] for i = 1:size(nstate.diagnosticvalues, 1)]))

copy!(nstate::ParameterNState{S, F}, state::ParameterState{S, F}, i::Integer) where {S<:ValueSupport, F<:VariateForm} =
  nstate.copy(nstate, state, i)


text:
# Fichier simplifié car ne gère plus qu'un seul format d'instance : "alp"

# ===========
relfile = "test/data/alp_01.alp"
print("Lecture du fichier au format alp $relfile...")
inst = Instance("$APPDIR/$relfile")
@test inst.name == "alp_01_p10"
alp_alpx_str = to_s_long(inst)
# println(alp_alpx_str)
# @test length(alp_alpx_str) == 1164  # FORMAT ALPX (pour alap)
@test length(alp_alpx_str) == 750     # FORMAT ALP (pour seqata)
@test alp_alpx_str[29:43] == "name alp_01_p10"
print(" fait\n")

# ===========
print("Statistiques sur l'instance $(inst.name)... ")
@test inst.nb_planes == length(inst.planes)
@test inst.nb_planes == 10
@test inst.nb_kinds == 2
@test inst.name == "alp_01_p10"
print(" fait\n")

# ===========
print("Lecture et test du premier avion (p1)... ")
p1 = inst.planes[1]
@test p1.name == "p1"
@test to_s_alp(p1)[1:9] == "plane  p1"
@test p1.id == 1
@test p1.kind == 1
@test p1.at == 55
@test p1.lb == 130
@test p1.target == 156
@test p1.ub == 560
@test p1.ep == 10.0
@test p1.tp == 10.0
print(" fait\n")

#./


text:
"""
`Prog = run_speedy(NF,kwargs...)`
`Prog = run_speedy(kwargs...)`

Runs SpeedyWeather.jl with number format `NF` and any additional parameters in the keyword arguments
`kwargs...`. Any unspeficied parameters will use the default values as defined in `src/parameters.jl`."""
function run_speedy(::Type{NF}=Float64;         # number format, use Float64 as default
                    kwargs...                   # all additional non-default parameters
                    ) where {NF<:AbstractFloat}

    P = Parameters(NF=NF,kwargs...)
    C = Constants(P)
    G = GeoSpectral(P)
    B = Boundaries(P,G)

    Prog = initial_conditions(P,B,G)
    # Diag = initial_conditions(Prog,P,B,G)

    # M = ModelSetup(P,C,G,B)

    #time_stepping!(Prog,Diag,M)

    return Prog
end


text:
export pointestimate

"""

	point_estimate_avg(psm::Array{Float64, 2})

Find optimal partition which minimizes the lower bound to the Variation of Information
obtain from Jensen's inequality where the expectation and log are reversed.

Code based on R implementation by Sara Wade <sara.wade@eng.cam.ac.uk>
"""
function point_estimate_hclust(psm::Array{Float64, 2}; maxk = -1, mink = mink, method = :average)

	havg = hclust(1-psm, method)
	cls = reduce(hcat, map(k -> cutree(havg; k = k), mink:maxk))

	# compute Variation of Information lower bound
	vi = variation_of_information_lb(cls, psm)

	idx = findfirst(minimum(vi) .== vi)

	if ndims(cls) == 2
		cl = cls[:,idx]
	else
		cl = cls
	end

	return (cl, minimum(vi))

end

"""
	point_estimate(psm::Array{Float64, 2})

Find optimal partition which minimizes the lower bound to the Variation of Information
obtain from Jensen's inequality where the expectation and log are reversed.

Code based on R implementation by Sara Wade <sara.wade@eng.cam.ac.uk>
"""
function pointestimate(psm::Array{Float64, 2}; method = :avg, maxk = -1, mink = 2)

	methods = [:average, :complete, :greedy]
	@assert method in methods "Method must be in $(methods)."

	if maxk == -1
		maxk = convert(Int, ceil(size(psm)[1] / 4.0))
	end

	if method in [:average, :complete]
		return point_estimate_hclust(psm, maxk = maxk, mink = mink, method = method)
	else
		println("not implemented, yet")
	end
end

"""
	variation_of_information_lb()
Computes the lower bound to the posterior expected Variation of Information.
"""
function variation_of_information_lb(cls::Array{Int, 2}, psm)

	N = size(psm)[1]
	F = zeros(size(cls)[2])

	for ci in 1:size(cls)[2]
		c = cls[:,ci]
		for i in 1:N
			ind = c .== c[i]
			F[ci] += (log2(sum(ind)) +log2(sum(psm[i,:])) -2 * log2(sum(ind' .* psm[i,:]))) / N
		end
	end

	return F

end

"""
	variation_of_information_lb()
Computes the lower bound to the posterior expected Variation of Information.
"""
function variation_of_information_lb(cls::Vector{Int}, psm)

	N = size(psm)[1]
	F = zeros(1)

	for i in 1:N
		ind = cls .== cls[i]
		F[1] += (log2(sum(ind))+log2(sum(psm[i,:]))-2*log2(sum(ind' .* psm[i,:]))) / N
	end

	return F

end


text:
function raster(::Type{IT}, source::ST; layer::Integer=1, left=nothing, right=nothing, bottom=nothing, top=nothing) where {IT <: SimpleSDMLayer, ST <: SimpleSDMSource}
    file = download_layer(source, layer)
    left = isnothing(left) ? minimum(longitudes(ST)) : left
    right = isnothing(right) ? maximum(longitudes(ST)) : right
    bottom = isnothing(bottom) ? minimum(latitudes(ST)) : bottom
    top = isnothing(top) ? maximum(latitudes(ST)) : top
    return geotiff(IT, ST, file; left=left, right=right, bottom=bottom, top=top)
end

function raster(::Type{IT}, source::ST, file; left=nothing, right=nothing, bottom=nothing, top=nothing) where {IT <: SimpleSDMLayer, ST <: SimpleSDMSource}
    left = isnothing(left) ? minimum(longitudes(ST)) : left
    right = isnothing(right) ? maximum(longitudes(ST)) : right
    bottom = isnothing(bottom) ? minimum(latitudes(ST)) : bottom
    top = isnothing(top) ? maximum(latitudes(ST)) : top
    return geotiff(IT, ST, file; left=left, right=right, bottom=bottom, top=top)
end


text:
function getFFF()
    factorUrl =
        "http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily_TXT.zip"
    (data, dataNames, varnames) = readFamaFrenchRaw(factorUrl)

    newVarnames = ["MktRf", "SMB", "HML", "RF"]
    finalData = TimeSeries.rename(data[1], newVarnames)

    fileName = joinpath(Pkg.dir("EconDatasets"), "data", "FFF.csv")
    writetimearray(finalData, fileName)
end