#
# Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Docs/master/include/vulkan/vulkan_core.h"
#

from ctypes import c_int8, c_uint16, c_int32, c_uint32, c_uint64, c_size_t, c_float, c_char, c_char_p, c_void_p, POINTER, Structure, Union, cast
from platform import system

# Helper functions
repr_fn = lambda self: str(dict(self._fields_))

def MAKE_VERSION(major, minor, patch):
    return (major<<22) | (minor<<12) | patch

def define_struct(name, *args):
    return type(name, (Structure,), {'_fields_': args, '__repr__': repr_fn})

def define_union(name, *args):
    return type(name, (Union,), {'_fields_': args, '__repr__': repr_fn})

def load_functions(vk_object, functions_list, loader):
    functions = []
    for name, prototype in functions_list:
        py_name = name.decode()[2::]
        fn_ptr = loader(vk_object, name)
        fn_ptr = cast(fn_ptr, c_void_p)
        if fn_ptr:
            fn = prototype(fn_ptr.value)
            functions.append((py_name, fn))
        elif __debug__ == True:
            print('Function {} could not be loaded. (__debug__ == True)'.format(py_name))
    return functions

API_VERSION_1_0 = MAKE_VERSION(1,0,0)

# System initialization
system_name = system()
if system_name == 'Windows':
    from ctypes import WINFUNCTYPE, windll
    FUNCTYPE = WINFUNCTYPE
    vk = windll.LoadLibrary('vulkan-1')
elif system_name == 'Linux':
    from ctypes import CFUNCTYPE, cdll
    FUNCTYPE = CFUNCTYPE
    vk = cdll.LoadLibrary('libvulkan.so.1')

# System types
HINSTANCE = c_size_t
HWND = c_size_t
HANDLE = c_size_t
DWORD = c_uint32
BOOL = c_uint32
LPCWSTR = POINTER(c_uint16)
xcb_connection_t = c_size_t
xcb_window_t = c_uint32
xcb_visualid_t = c_uint32
MirConnection = c_size_t
MirSurface = c_size_t
wl_display = c_void_p
wl_surface = c_void_p
Display = c_size_t
Window = c_uint32
VisualID = c_uint32
ANativeWindow = c_size_t
RROutput = c_uint32

SECURITY_ATTRIBUTES = define_struct('SECURITY_ATTRIBUTES', 
    ('nLength', c_uint32),
    ('lpSecurityDescriptor', c_void_p),
    ('bInheritHandle', c_uint32),
)

# Base types
Flags = c_uint32
Bool32 = c_uint32
DeviceSize = c_uint64
SampleMask = c_uint32

# Base constants
LOD_CLAMP_NONE = 1000.0
REMAINING_MIP_LEVELS = c_uint32(-1)
REMAINING_ARRAY_LAYERS = c_uint32(-1)
WHOLE_SIZE = c_uint64(-1)
ATTACHMENT_UNUSED = c_uint32(-1)
TRUE = 1
FALSE = 0
QUEUE_FAMILY_IGNORED = c_uint32(-1)
SUBPASS_EXTERNAL = c_uint32(-1)
MAX_PHYSICAL_DEVICE_NAME_SIZE = 256
UUID_SIZE = 16
MAX_MEMORY_TYPES = 32
MAX_MEMORY_HEAPS = 16
MAX_EXTENSION_NAME_SIZE = 256
MAX_DESCRIPTION_SIZE = 256
MAX_DEVICE_GROUP_SIZE_KHX = 32
MAX_DEVICE_GROUP_SIZE = 32
LUID_SIZE_KHX = 8
LUID_SIZE_KHR = 8
LUID_SIZE = 8
MAX_DRIVER_NAME_SIZE_KHR = 256
MAX_DRIVER_INFO_SIZE_KHR = 256


# Handles types
Instance = c_size_t
PhysicalDevice = c_size_t
Device = c_size_t
Queue = c_size_t
CommandBuffer = c_size_t
Semaphore = c_uint64
Fence = c_uint64
DeviceMemory = c_uint64
Buffer = c_uint64
Image = c_uint64
Event = c_uint64
QueryPool = c_uint64
BufferView = c_uint64
ImageView = c_uint64
ShaderModule = c_uint64
PipelineCache = c_uint64
PipelineLayout = c_uint64
RenderPass = c_uint64
Pipeline = c_uint64
DescriptorSetLayout = c_uint64
Sampler = c_uint64
DescriptorPool = c_uint64
DescriptorSet = c_uint64
Framebuffer = c_uint64
CommandPool = c_uint64
SamplerYcbcrConversion = c_uint64
DescriptorUpdateTemplate = c_uint64
SurfaceKHR = c_uint64
SwapchainKHR = c_uint64
DisplayKHR = c_uint64
DisplayModeKHR = c_uint64
DebugReportCallbackEXT = c_uint64
ObjectTableNVX = c_uint64
IndirectCommandsLayoutNVX = c_uint64
DebugUtilsMessengerEXT = c_uint64
ValidationCacheEXT = c_uint64
AccelerationStructureNV = c_uint64


# Flags types
InstanceCreateFlags = Flags
FormatFeatureFlags = Flags
ImageUsageFlags = Flags
ImageCreateFlags = Flags
SampleCountFlags = Flags
QueueFlags = Flags
MemoryPropertyFlags = Flags
MemoryHeapFlags = Flags
DeviceCreateFlags = Flags
DeviceQueueCreateFlags = Flags
PipelineStageFlags = Flags
MemoryMapFlags = Flags
ImageAspectFlags = Flags
SparseImageFormatFlags = Flags
SparseMemoryBindFlags = Flags
FenceCreateFlags = Flags
SemaphoreCreateFlags = Flags
EventCreateFlags = Flags
QueryPoolCreateFlags = Flags
QueryPipelineStatisticFlags = Flags
QueryResultFlags = Flags
BufferCreateFlags = Flags
BufferUsageFlags = Flags
BufferViewCreateFlags = Flags
ImageViewCreateFlags = Flags
ShaderModuleCreateFlags = Flags
PipelineCacheCreateFlags = Flags
PipelineCreateFlags = Flags
PipelineShaderStageCreateFlags = Flags
PipelineVertexInputStateCreateFlags = Flags
PipelineInputAssemblyStateCreateFlags = Flags
PipelineTessellationStateCreateFlags = Flags
PipelineViewportStateCreateFlags = Flags
PipelineRasterizationStateCreateFlags = Flags
CullModeFlags = Flags
PipelineMultisampleStateCreateFlags = Flags
PipelineDepthStencilStateCreateFlags = Flags
PipelineColorBlendStateCreateFlags = Flags
ColorComponentFlags = Flags
PipelineDynamicStateCreateFlags = Flags
PipelineLayoutCreateFlags = Flags
ShaderStageFlags = Flags
SamplerCreateFlags = Flags
DescriptorSetLayoutCreateFlags = Flags
DescriptorPoolCreateFlags = Flags
DescriptorPoolResetFlags = Flags
FramebufferCreateFlags = Flags
RenderPassCreateFlags = Flags
AttachmentDescriptionFlags = Flags
SubpassDescriptionFlags = Flags
AccessFlags = Flags
DependencyFlags = Flags
CommandPoolCreateFlags = Flags
CommandPoolResetFlags = Flags
CommandBufferUsageFlags = Flags
QueryControlFlags = Flags
CommandBufferResetFlags = Flags
StencilFaceFlags = Flags
SubgroupFeatureFlags = Flags
PeerMemoryFeatureFlags = Flags
MemoryAllocateFlags = Flags
CommandPoolTrimFlags = Flags
DescriptorUpdateTemplateCreateFlags = Flags
ExternalMemoryHandleTypeFlags = Flags
ExternalMemoryFeatureFlags = Flags
ExternalFenceHandleTypeFlags = Flags
ExternalFenceFeatureFlags = Flags
FenceImportFlags = Flags
SemaphoreImportFlags = Flags
ExternalSemaphoreHandleTypeFlags = Flags
ExternalSemaphoreFeatureFlags = Flags
SurfaceTransformFlagsKHR = Flags
CompositeAlphaFlagsKHR = Flags
SwapchainCreateFlagsKHR = Flags
DeviceGroupPresentModeFlagsKHR = Flags
DisplayPlaneAlphaFlagsKHR = Flags
DisplayModeCreateFlagsKHR = Flags
DisplaySurfaceCreateFlagsKHR = Flags
DebugReportFlagsEXT = Flags
PipelineRasterizationStateStreamCreateFlagsEXT = Flags
ExternalMemoryHandleTypeFlagsNV = Flags
ExternalMemoryFeatureFlagsNV = Flags
ConditionalRenderingFlagsEXT = Flags
IndirectCommandsLayoutUsageFlagsNVX = Flags
ObjectEntryUsageFlagsNVX = Flags
SurfaceCounterFlagsEXT = Flags
PipelineViewportSwizzleStateCreateFlagsNV = Flags
PipelineDiscardRectangleStateCreateFlagsEXT = Flags
PipelineRasterizationConservativeStateCreateFlagsEXT = Flags
DebugUtilsMessengerCallbackDataFlagsEXT = Flags
DebugUtilsMessengerCreateFlagsEXT = Flags
DebugUtilsMessageSeverityFlagsEXT = Flags
DebugUtilsMessageTypeFlagsEXT = Flags
PipelineCoverageToColorStateCreateFlagsNV = Flags
PipelineCoverageModulationStateCreateFlagsNV = Flags
ValidationCacheCreateFlagsEXT = Flags
DescriptorBindingFlagsEXT = Flags
GeometryFlagsNV = Flags
GeometryInstanceFlagsNV = Flags
BuildAccelerationStructureFlagsNV = Flags
Win32SurfaceCreateFlagsKHR = Flags
XcbSurfaceCreateFlagsKHR = Flags


# Enums
PipelineCacheHeaderVersion = c_uint32
PIPELINE_CACHE_HEADER_VERSION_ONE = 1
PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = PIPELINE_CACHE_HEADER_VERSION_ONE
PIPELINE_CACHE_HEADER_VERSION_END_RANGE = PIPELINE_CACHE_HEADER_VERSION_ONE
PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (PIPELINE_CACHE_HEADER_VERSION_ONE - PIPELINE_CACHE_HEADER_VERSION_ONE + 1)

Result = c_uint32
SUCCESS = 0
NOT_READY = 1
TIMEOUT = 2
EVENT_SET = 3
EVENT_RESET = 4
INCOMPLETE = 5
ERROR_OUT_OF_HOST_MEMORY = -1
ERROR_OUT_OF_DEVICE_MEMORY = -2
ERROR_INITIALIZATION_FAILED = -3
ERROR_DEVICE_LOST = -4
ERROR_MEMORY_MAP_FAILED = -5
ERROR_LAYER_NOT_PRESENT = -6
ERROR_EXTENSION_NOT_PRESENT = -7
ERROR_FEATURE_NOT_PRESENT = -8
ERROR_INCOMPATIBLE_DRIVER = -9
ERROR_TOO_MANY_OBJECTS = -10
ERROR_FORMAT_NOT_SUPPORTED = -11
ERROR_FRAGMENTED_POOL = -12
ERROR_OUT_OF_POOL_MEMORY = -1000069000
ERROR_INVALID_EXTERNAL_HANDLE = -1000072003
ERROR_SURFACE_LOST_KHR = -1000000000
ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001
SUBOPTIMAL_KHR = 1000001003
ERROR_OUT_OF_DATE_KHR = -1000001004
ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001
ERROR_VALIDATION_FAILED_EXT = -1000011001
ERROR_INVALID_SHADER_NV = -1000012000
ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000
ERROR_FRAGMENTATION_EXT = -1000161000
ERROR_NOT_PERMITTED_EXT = -1000174001
ERROR_OUT_OF_POOL_MEMORY_KHR = ERROR_OUT_OF_POOL_MEMORY
ERROR_INVALID_EXTERNAL_HANDLE_KHR = ERROR_INVALID_EXTERNAL_HANDLE
RESULT_BEGIN_RANGE = ERROR_FRAGMENTED_POOL
RESULT_END_RANGE = INCOMPLETE
RESULT_RANGE_SIZE = (INCOMPLETE - ERROR_FRAGMENTED_POOL + 1)

StructureType = c_uint32
STRUCTURE_TYPE_APPLICATION_INFO = 0
STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1
STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2
STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3
STRUCTURE_TYPE_SUBMIT_INFO = 4
STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5
STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6
STRUCTURE_TYPE_BIND_SPARSE_INFO = 7
STRUCTURE_TYPE_FENCE_CREATE_INFO = 8
STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9
STRUCTURE_TYPE_EVENT_CREATE_INFO = 10
STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11
STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12
STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13
STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14
STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15
STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16
STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17
STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18
STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19
STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20
STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21
STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23
STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24
STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25
STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26
STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27
STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28
STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29
STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30
STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32
STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33
STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34
STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35
STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36
STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37
STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38
STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39
STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40
STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41
STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42
STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43
STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44
STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45
STRUCTURE_TYPE_MEMORY_BARRIER = 46
STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47
STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000
STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001
STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000
STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000
STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001
STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000
STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003
STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004
STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005
STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006
STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014
STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000
STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001
STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000
STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001
STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002
STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003
STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004
STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000
STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001
STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002
STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004
STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005
STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006
STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007
STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008
STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000
STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001
STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002
STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003
STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002
STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000
STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000
STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001
STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002
STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001
STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002
STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003
STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005
STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000
STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002
STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003
STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004
STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000
STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001
STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000
STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001
STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000
STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000
STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000
STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000
STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001
STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007
STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009
STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010
STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011
STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012
STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000
STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001
STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000
STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000
STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000
STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000
STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000
STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000
STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000
STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000
STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001
STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002
STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000
STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001
STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002
STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000
STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002
STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000
STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000
STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000
STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001
STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000
STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001
STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000
STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000
STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000
STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000
STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001
STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000
STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001
STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002
STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003
STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000
STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001
STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002
STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000
STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000
STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001
STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002
STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003
STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000
STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001
STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000
STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000
STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001
STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002
STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000
STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000
STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001
STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002
STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003
STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004
STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005
STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000
STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000
STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000
STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001
STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002
STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003
STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000
STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000
STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000
STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001
STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001
STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000
STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000
STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001
STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002
STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003
STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004
STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005
STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006
STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000
STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000
STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001
STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002
STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000
STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001
STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000
STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001
STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002
STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000
STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001
STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002
STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003
STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004
STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000
STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000
STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000
STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001
STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002
STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003
STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004
STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000
STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001
STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002
STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003
STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004
STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005
STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000
STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001
STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000
STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001
STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002
STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003
STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000
STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001
STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002
STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003
STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004
STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000
STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000
STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001
STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002
STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000
STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000
STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000
STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002
STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003
STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004
STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005
STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000
STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002
STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003
STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004
STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002
STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005
STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001
STRUCTURE_TYPE_GEOMETRY_NV = 1000165003
STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004
STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005
STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006
STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009
STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012
STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000
STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001
STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000
STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000
STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000
STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000
STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000
STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000
STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002
STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000
STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000
STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000
STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000
STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002
STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000
STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000
STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000
STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000
STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = STRUCTURE_TYPE_FORMAT_PROPERTIES_2
STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
STRUCTURE_TYPE_BEGIN_RANGE = STRUCTURE_TYPE_APPLICATION_INFO
STRUCTURE_TYPE_END_RANGE = STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
STRUCTURE_TYPE_RANGE_SIZE = (STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - STRUCTURE_TYPE_APPLICATION_INFO + 1)

SystemAllocationScope = c_uint32
SYSTEM_ALLOCATION_SCOPE_COMMAND = 0
SYSTEM_ALLOCATION_SCOPE_OBJECT = 1
SYSTEM_ALLOCATION_SCOPE_CACHE = 2
SYSTEM_ALLOCATION_SCOPE_DEVICE = 3
SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4
SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = SYSTEM_ALLOCATION_SCOPE_COMMAND
SYSTEM_ALLOCATION_SCOPE_END_RANGE = SYSTEM_ALLOCATION_SCOPE_INSTANCE
SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (SYSTEM_ALLOCATION_SCOPE_INSTANCE - SYSTEM_ALLOCATION_SCOPE_COMMAND + 1)

InternalAllocationType = c_uint32
INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0
INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = INTERNAL_ALLOCATION_TYPE_EXECUTABLE
INTERNAL_ALLOCATION_TYPE_END_RANGE = INTERNAL_ALLOCATION_TYPE_EXECUTABLE
INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (INTERNAL_ALLOCATION_TYPE_EXECUTABLE - INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1)

Format = c_uint32
FORMAT_UNDEFINED = 0
FORMAT_R4G4_UNORM_PACK8 = 1
FORMAT_R4G4B4A4_UNORM_PACK16 = 2
FORMAT_B4G4R4A4_UNORM_PACK16 = 3
FORMAT_R5G6B5_UNORM_PACK16 = 4
FORMAT_B5G6R5_UNORM_PACK16 = 5
FORMAT_R5G5B5A1_UNORM_PACK16 = 6
FORMAT_B5G5R5A1_UNORM_PACK16 = 7
FORMAT_A1R5G5B5_UNORM_PACK16 = 8
FORMAT_R8_UNORM = 9
FORMAT_R8_SNORM = 10
FORMAT_R8_USCALED = 11
FORMAT_R8_SSCALED = 12
FORMAT_R8_UINT = 13
FORMAT_R8_SINT = 14
FORMAT_R8_SRGB = 15
FORMAT_R8G8_UNORM = 16
FORMAT_R8G8_SNORM = 17
FORMAT_R8G8_USCALED = 18
FORMAT_R8G8_SSCALED = 19
FORMAT_R8G8_UINT = 20
FORMAT_R8G8_SINT = 21
FORMAT_R8G8_SRGB = 22
FORMAT_R8G8B8_UNORM = 23
FORMAT_R8G8B8_SNORM = 24
FORMAT_R8G8B8_USCALED = 25
FORMAT_R8G8B8_SSCALED = 26
FORMAT_R8G8B8_UINT = 27
FORMAT_R8G8B8_SINT = 28
FORMAT_R8G8B8_SRGB = 29
FORMAT_B8G8R8_UNORM = 30
FORMAT_B8G8R8_SNORM = 31
FORMAT_B8G8R8_USCALED = 32
FORMAT_B8G8R8_SSCALED = 33
FORMAT_B8G8R8_UINT = 34
FORMAT_B8G8R8_SINT = 35
FORMAT_B8G8R8_SRGB = 36
FORMAT_R8G8B8A8_UNORM = 37
FORMAT_R8G8B8A8_SNORM = 38
FORMAT_R8G8B8A8_USCALED = 39
FORMAT_R8G8B8A8_SSCALED = 40
FORMAT_R8G8B8A8_UINT = 41
FORMAT_R8G8B8A8_SINT = 42
FORMAT_R8G8B8A8_SRGB = 43
FORMAT_B8G8R8A8_UNORM = 44
FORMAT_B8G8R8A8_SNORM = 45
FORMAT_B8G8R8A8_USCALED = 46
FORMAT_B8G8R8A8_SSCALED = 47
FORMAT_B8G8R8A8_UINT = 48
FORMAT_B8G8R8A8_SINT = 49
FORMAT_B8G8R8A8_SRGB = 50
FORMAT_A8B8G8R8_UNORM_PACK32 = 51
FORMAT_A8B8G8R8_SNORM_PACK32 = 52
FORMAT_A8B8G8R8_USCALED_PACK32 = 53
FORMAT_A8B8G8R8_SSCALED_PACK32 = 54
FORMAT_A8B8G8R8_UINT_PACK32 = 55
FORMAT_A8B8G8R8_SINT_PACK32 = 56
FORMAT_A8B8G8R8_SRGB_PACK32 = 57
FORMAT_A2R10G10B10_UNORM_PACK32 = 58
FORMAT_A2R10G10B10_SNORM_PACK32 = 59
FORMAT_A2R10G10B10_USCALED_PACK32 = 60
FORMAT_A2R10G10B10_SSCALED_PACK32 = 61
FORMAT_A2R10G10B10_UINT_PACK32 = 62
FORMAT_A2R10G10B10_SINT_PACK32 = 63
FORMAT_A2B10G10R10_UNORM_PACK32 = 64
FORMAT_A2B10G10R10_SNORM_PACK32 = 65
FORMAT_A2B10G10R10_USCALED_PACK32 = 66
FORMAT_A2B10G10R10_SSCALED_PACK32 = 67
FORMAT_A2B10G10R10_UINT_PACK32 = 68
FORMAT_A2B10G10R10_SINT_PACK32 = 69
FORMAT_R16_UNORM = 70
FORMAT_R16_SNORM = 71
FORMAT_R16_USCALED = 72
FORMAT_R16_SSCALED = 73
FORMAT_R16_UINT = 74
FORMAT_R16_SINT = 75
FORMAT_R16_SFLOAT = 76
FORMAT_R16G16_UNORM = 77
FORMAT_R16G16_SNORM = 78
FORMAT_R16G16_USCALED = 79
FORMAT_R16G16_SSCALED = 80
FORMAT_R16G16_UINT = 81
FORMAT_R16G16_SINT = 82
FORMAT_R16G16_SFLOAT = 83
FORMAT_R16G16B16_UNORM = 84
FORMAT_R16G16B16_SNORM = 85
FORMAT_R16G16B16_USCALED = 86
FORMAT_R16G16B16_SSCALED = 87
FORMAT_R16G16B16_UINT = 88
FORMAT_R16G16B16_SINT = 89
FORMAT_R16G16B16_SFLOAT = 90
FORMAT_R16G16B16A16_UNORM = 91
FORMAT_R16G16B16A16_SNORM = 92
FORMAT_R16G16B16A16_USCALED = 93
FORMAT_R16G16B16A16_SSCALED = 94
FORMAT_R16G16B16A16_UINT = 95
FORMAT_R16G16B16A16_SINT = 96
FORMAT_R16G16B16A16_SFLOAT = 97
FORMAT_R32_UINT = 98
FORMAT_R32_SINT = 99
FORMAT_R32_SFLOAT = 100
FORMAT_R32G32_UINT = 101
FORMAT_R32G32_SINT = 102
FORMAT_R32G32_SFLOAT = 103
FORMAT_R32G32B32_UINT = 104
FORMAT_R32G32B32_SINT = 105
FORMAT_R32G32B32_SFLOAT = 106
FORMAT_R32G32B32A32_UINT = 107
FORMAT_R32G32B32A32_SINT = 108
FORMAT_R32G32B32A32_SFLOAT = 109
FORMAT_R64_UINT = 110
FORMAT_R64_SINT = 111
FORMAT_R64_SFLOAT = 112
FORMAT_R64G64_UINT = 113
FORMAT_R64G64_SINT = 114
FORMAT_R64G64_SFLOAT = 115
FORMAT_R64G64B64_UINT = 116
FORMAT_R64G64B64_SINT = 117
FORMAT_R64G64B64_SFLOAT = 118
FORMAT_R64G64B64A64_UINT = 119
FORMAT_R64G64B64A64_SINT = 120
FORMAT_R64G64B64A64_SFLOAT = 121
FORMAT_B10G11R11_UFLOAT_PACK32 = 122
FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123
FORMAT_D16_UNORM = 124
FORMAT_X8_D24_UNORM_PACK32 = 125
FORMAT_D32_SFLOAT = 126
FORMAT_S8_UINT = 127
FORMAT_D16_UNORM_S8_UINT = 128
FORMAT_D24_UNORM_S8_UINT = 129
FORMAT_D32_SFLOAT_S8_UINT = 130
FORMAT_BC1_RGB_UNORM_BLOCK = 131
FORMAT_BC1_RGB_SRGB_BLOCK = 132
FORMAT_BC1_RGBA_UNORM_BLOCK = 133
FORMAT_BC1_RGBA_SRGB_BLOCK = 134
FORMAT_BC2_UNORM_BLOCK = 135
FORMAT_BC2_SRGB_BLOCK = 136
FORMAT_BC3_UNORM_BLOCK = 137
FORMAT_BC3_SRGB_BLOCK = 138
FORMAT_BC4_UNORM_BLOCK = 139
FORMAT_BC4_SNORM_BLOCK = 140
FORMAT_BC5_UNORM_BLOCK = 141
FORMAT_BC5_SNORM_BLOCK = 142
FORMAT_BC6H_UFLOAT_BLOCK = 143
FORMAT_BC6H_SFLOAT_BLOCK = 144
FORMAT_BC7_UNORM_BLOCK = 145
FORMAT_BC7_SRGB_BLOCK = 146
FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147
FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148
FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149
FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150
FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151
FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152
FORMAT_EAC_R11_UNORM_BLOCK = 153
FORMAT_EAC_R11_SNORM_BLOCK = 154
FORMAT_EAC_R11G11_UNORM_BLOCK = 155
FORMAT_EAC_R11G11_SNORM_BLOCK = 156
FORMAT_ASTC_4x4_UNORM_BLOCK = 157
FORMAT_ASTC_4x4_SRGB_BLOCK = 158
FORMAT_ASTC_5x4_UNORM_BLOCK = 159
FORMAT_ASTC_5x4_SRGB_BLOCK = 160
FORMAT_ASTC_5x5_UNORM_BLOCK = 161
FORMAT_ASTC_5x5_SRGB_BLOCK = 162
FORMAT_ASTC_6x5_UNORM_BLOCK = 163
FORMAT_ASTC_6x5_SRGB_BLOCK = 164
FORMAT_ASTC_6x6_UNORM_BLOCK = 165
FORMAT_ASTC_6x6_SRGB_BLOCK = 166
FORMAT_ASTC_8x5_UNORM_BLOCK = 167
FORMAT_ASTC_8x5_SRGB_BLOCK = 168
FORMAT_ASTC_8x6_UNORM_BLOCK = 169
FORMAT_ASTC_8x6_SRGB_BLOCK = 170
FORMAT_ASTC_8x8_UNORM_BLOCK = 171
FORMAT_ASTC_8x8_SRGB_BLOCK = 172
FORMAT_ASTC_10x5_UNORM_BLOCK = 173
FORMAT_ASTC_10x5_SRGB_BLOCK = 174
FORMAT_ASTC_10x6_UNORM_BLOCK = 175
FORMAT_ASTC_10x6_SRGB_BLOCK = 176
FORMAT_ASTC_10x8_UNORM_BLOCK = 177
FORMAT_ASTC_10x8_SRGB_BLOCK = 178
FORMAT_ASTC_10x10_UNORM_BLOCK = 179
FORMAT_ASTC_10x10_SRGB_BLOCK = 180
FORMAT_ASTC_12x10_UNORM_BLOCK = 181
FORMAT_ASTC_12x10_SRGB_BLOCK = 182
FORMAT_ASTC_12x12_UNORM_BLOCK = 183
FORMAT_ASTC_12x12_SRGB_BLOCK = 184
FORMAT_G8B8G8R8_422_UNORM = 1000156000
FORMAT_B8G8R8G8_422_UNORM = 1000156001
FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002
FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003
FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004
FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005
FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006
FORMAT_R10X6_UNORM_PACK16 = 1000156007
FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008
FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009
FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010
FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011
FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012
FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013
FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014
FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015
FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016
FORMAT_R12X4_UNORM_PACK16 = 1000156017
FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018
FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019
FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020
FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021
FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022
FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023
FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024
FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025
FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026
FORMAT_G16B16G16R16_422_UNORM = 1000156027
FORMAT_B16G16R16G16_422_UNORM = 1000156028
FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029
FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030
FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031
FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032
FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033
FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000
FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001
FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002
FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003
FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004
FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005
FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006
FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007
FORMAT_G8B8G8R8_422_UNORM_KHR = FORMAT_G8B8G8R8_422_UNORM
FORMAT_B8G8R8G8_422_UNORM_KHR = FORMAT_B8G8R8G8_422_UNORM
FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = FORMAT_G8_B8_R8_3PLANE_420_UNORM
FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = FORMAT_G8_B8R8_2PLANE_420_UNORM
FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = FORMAT_G8_B8_R8_3PLANE_422_UNORM
FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = FORMAT_G8_B8R8_2PLANE_422_UNORM
FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = FORMAT_G8_B8_R8_3PLANE_444_UNORM
FORMAT_R10X6_UNORM_PACK16_KHR = FORMAT_R10X6_UNORM_PACK16
FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = FORMAT_R10X6G10X6_UNORM_2PACK16
FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
FORMAT_R12X4_UNORM_PACK16_KHR = FORMAT_R12X4_UNORM_PACK16
FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = FORMAT_R12X4G12X4_UNORM_2PACK16
FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
FORMAT_G16B16G16R16_422_UNORM_KHR = FORMAT_G16B16G16R16_422_UNORM
FORMAT_B16G16R16G16_422_UNORM_KHR = FORMAT_B16G16R16G16_422_UNORM
FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = FORMAT_G16_B16_R16_3PLANE_420_UNORM
FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = FORMAT_G16_B16R16_2PLANE_420_UNORM
FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = FORMAT_G16_B16_R16_3PLANE_422_UNORM
FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = FORMAT_G16_B16R16_2PLANE_422_UNORM
FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = FORMAT_G16_B16_R16_3PLANE_444_UNORM
FORMAT_BEGIN_RANGE = FORMAT_UNDEFINED
FORMAT_END_RANGE = FORMAT_ASTC_12x12_SRGB_BLOCK
FORMAT_RANGE_SIZE = (FORMAT_ASTC_12x12_SRGB_BLOCK - FORMAT_UNDEFINED + 1)

ImageType = c_uint32
IMAGE_TYPE_1D = 0
IMAGE_TYPE_2D = 1
IMAGE_TYPE_3D = 2
IMAGE_TYPE_BEGIN_RANGE = IMAGE_TYPE_1D
IMAGE_TYPE_END_RANGE = IMAGE_TYPE_3D
IMAGE_TYPE_RANGE_SIZE = (IMAGE_TYPE_3D - IMAGE_TYPE_1D + 1)

ImageTiling = c_uint32
IMAGE_TILING_OPTIMAL = 0
IMAGE_TILING_LINEAR = 1
IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000
IMAGE_TILING_BEGIN_RANGE = IMAGE_TILING_OPTIMAL
IMAGE_TILING_END_RANGE = IMAGE_TILING_LINEAR
IMAGE_TILING_RANGE_SIZE = (IMAGE_TILING_LINEAR - IMAGE_TILING_OPTIMAL + 1)

PhysicalDeviceType = c_uint32
PHYSICAL_DEVICE_TYPE_OTHER = 0
PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1
PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2
PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3
PHYSICAL_DEVICE_TYPE_CPU = 4
PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = PHYSICAL_DEVICE_TYPE_OTHER
PHYSICAL_DEVICE_TYPE_END_RANGE = PHYSICAL_DEVICE_TYPE_CPU
PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (PHYSICAL_DEVICE_TYPE_CPU - PHYSICAL_DEVICE_TYPE_OTHER + 1)

QueryType = c_uint32
QUERY_TYPE_OCCLUSION = 0
QUERY_TYPE_PIPELINE_STATISTICS = 1
QUERY_TYPE_TIMESTAMP = 2
QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004
QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000
QUERY_TYPE_BEGIN_RANGE = QUERY_TYPE_OCCLUSION
QUERY_TYPE_END_RANGE = QUERY_TYPE_TIMESTAMP
QUERY_TYPE_RANGE_SIZE = (QUERY_TYPE_TIMESTAMP - QUERY_TYPE_OCCLUSION + 1)

SharingMode = c_uint32
SHARING_MODE_EXCLUSIVE = 0
SHARING_MODE_CONCURRENT = 1
SHARING_MODE_BEGIN_RANGE = SHARING_MODE_EXCLUSIVE
SHARING_MODE_END_RANGE = SHARING_MODE_CONCURRENT
SHARING_MODE_RANGE_SIZE = (SHARING_MODE_CONCURRENT - SHARING_MODE_EXCLUSIVE + 1)

ImageLayout = c_uint32
IMAGE_LAYOUT_UNDEFINED = 0
IMAGE_LAYOUT_GENERAL = 1
IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2
IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3
IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4
IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5
IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6
IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7
IMAGE_LAYOUT_PREINITIALIZED = 8
IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000
IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001
IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002
IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000
IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003
IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
IMAGE_LAYOUT_BEGIN_RANGE = IMAGE_LAYOUT_UNDEFINED
IMAGE_LAYOUT_END_RANGE = IMAGE_LAYOUT_PREINITIALIZED
IMAGE_LAYOUT_RANGE_SIZE = (IMAGE_LAYOUT_PREINITIALIZED - IMAGE_LAYOUT_UNDEFINED + 1)

ImageViewType = c_uint32
IMAGE_VIEW_TYPE_1D = 0
IMAGE_VIEW_TYPE_2D = 1
IMAGE_VIEW_TYPE_3D = 2
IMAGE_VIEW_TYPE_CUBE = 3
IMAGE_VIEW_TYPE_1D_ARRAY = 4
IMAGE_VIEW_TYPE_2D_ARRAY = 5
IMAGE_VIEW_TYPE_CUBE_ARRAY = 6
IMAGE_VIEW_TYPE_BEGIN_RANGE = IMAGE_VIEW_TYPE_1D
IMAGE_VIEW_TYPE_END_RANGE = IMAGE_VIEW_TYPE_CUBE_ARRAY
IMAGE_VIEW_TYPE_RANGE_SIZE = (IMAGE_VIEW_TYPE_CUBE_ARRAY - IMAGE_VIEW_TYPE_1D + 1)

ComponentSwizzle = c_uint32
COMPONENT_SWIZZLE_IDENTITY = 0
COMPONENT_SWIZZLE_ZERO = 1
COMPONENT_SWIZZLE_ONE = 2
COMPONENT_SWIZZLE_R = 3
COMPONENT_SWIZZLE_G = 4
COMPONENT_SWIZZLE_B = 5
COMPONENT_SWIZZLE_A = 6
COMPONENT_SWIZZLE_BEGIN_RANGE = COMPONENT_SWIZZLE_IDENTITY
COMPONENT_SWIZZLE_END_RANGE = COMPONENT_SWIZZLE_A
COMPONENT_SWIZZLE_RANGE_SIZE = (COMPONENT_SWIZZLE_A - COMPONENT_SWIZZLE_IDENTITY + 1)

VertexInputRate = c_uint32
VERTEX_INPUT_RATE_VERTEX = 0
VERTEX_INPUT_RATE_INSTANCE = 1
VERTEX_INPUT_RATE_BEGIN_RANGE = VERTEX_INPUT_RATE_VERTEX
VERTEX_INPUT_RATE_END_RANGE = VERTEX_INPUT_RATE_INSTANCE
VERTEX_INPUT_RATE_RANGE_SIZE = (VERTEX_INPUT_RATE_INSTANCE - VERTEX_INPUT_RATE_VERTEX + 1)

PrimitiveTopology = c_uint32
PRIMITIVE_TOPOLOGY_POINT_LIST = 0
PRIMITIVE_TOPOLOGY_LINE_LIST = 1
PRIMITIVE_TOPOLOGY_LINE_STRIP = 2
PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3
PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4
PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5
PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6
PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7
PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8
PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9
PRIMITIVE_TOPOLOGY_PATCH_LIST = 10
PRIMITIVE_TOPOLOGY_BEGIN_RANGE = PRIMITIVE_TOPOLOGY_POINT_LIST
PRIMITIVE_TOPOLOGY_END_RANGE = PRIMITIVE_TOPOLOGY_PATCH_LIST
PRIMITIVE_TOPOLOGY_RANGE_SIZE = (PRIMITIVE_TOPOLOGY_PATCH_LIST - PRIMITIVE_TOPOLOGY_POINT_LIST + 1)

PolygonMode = c_uint32
POLYGON_MODE_FILL = 0
POLYGON_MODE_LINE = 1
POLYGON_MODE_POINT = 2
POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000
POLYGON_MODE_BEGIN_RANGE = POLYGON_MODE_FILL
POLYGON_MODE_END_RANGE = POLYGON_MODE_POINT
POLYGON_MODE_RANGE_SIZE = (POLYGON_MODE_POINT - POLYGON_MODE_FILL + 1)

FrontFace = c_uint32
FRONT_FACE_COUNTER_CLOCKWISE = 0
FRONT_FACE_CLOCKWISE = 1
FRONT_FACE_BEGIN_RANGE = FRONT_FACE_COUNTER_CLOCKWISE
FRONT_FACE_END_RANGE = FRONT_FACE_CLOCKWISE
FRONT_FACE_RANGE_SIZE = (FRONT_FACE_CLOCKWISE - FRONT_FACE_COUNTER_CLOCKWISE + 1)

CompareOp = c_uint32
COMPARE_OP_NEVER = 0
COMPARE_OP_LESS = 1
COMPARE_OP_EQUAL = 2
COMPARE_OP_LESS_OR_EQUAL = 3
COMPARE_OP_GREATER = 4
COMPARE_OP_NOT_EQUAL = 5
COMPARE_OP_GREATER_OR_EQUAL = 6
COMPARE_OP_ALWAYS = 7
COMPARE_OP_BEGIN_RANGE = COMPARE_OP_NEVER
COMPARE_OP_END_RANGE = COMPARE_OP_ALWAYS
COMPARE_OP_RANGE_SIZE = (COMPARE_OP_ALWAYS - COMPARE_OP_NEVER + 1)

StencilOp = c_uint32
STENCIL_OP_KEEP = 0
STENCIL_OP_ZERO = 1
STENCIL_OP_REPLACE = 2
STENCIL_OP_INCREMENT_AND_CLAMP = 3
STENCIL_OP_DECREMENT_AND_CLAMP = 4
STENCIL_OP_INVERT = 5
STENCIL_OP_INCREMENT_AND_WRAP = 6
STENCIL_OP_DECREMENT_AND_WRAP = 7
STENCIL_OP_BEGIN_RANGE = STENCIL_OP_KEEP
STENCIL_OP_END_RANGE = STENCIL_OP_DECREMENT_AND_WRAP
STENCIL_OP_RANGE_SIZE = (STENCIL_OP_DECREMENT_AND_WRAP - STENCIL_OP_KEEP + 1)

LogicOp = c_uint32
LOGIC_OP_CLEAR = 0
LOGIC_OP_AND = 1
LOGIC_OP_AND_REVERSE = 2
LOGIC_OP_COPY = 3
LOGIC_OP_AND_INVERTED = 4
LOGIC_OP_NO_OP = 5
LOGIC_OP_XOR = 6
LOGIC_OP_OR = 7
LOGIC_OP_NOR = 8
LOGIC_OP_EQUIVALENT = 9
LOGIC_OP_INVERT = 10
LOGIC_OP_OR_REVERSE = 11
LOGIC_OP_COPY_INVERTED = 12
LOGIC_OP_OR_INVERTED = 13
LOGIC_OP_NAND = 14
LOGIC_OP_SET = 15
LOGIC_OP_BEGIN_RANGE = LOGIC_OP_CLEAR
LOGIC_OP_END_RANGE = LOGIC_OP_SET
LOGIC_OP_RANGE_SIZE = (LOGIC_OP_SET - LOGIC_OP_CLEAR + 1)

BlendFactor = c_uint32
BLEND_FACTOR_ZERO = 0
BLEND_FACTOR_ONE = 1
BLEND_FACTOR_SRC_COLOR = 2
BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3
BLEND_FACTOR_DST_COLOR = 4
BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5
BLEND_FACTOR_SRC_ALPHA = 6
BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7
BLEND_FACTOR_DST_ALPHA = 8
BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9
BLEND_FACTOR_CONSTANT_COLOR = 10
BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11
BLEND_FACTOR_CONSTANT_ALPHA = 12
BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13
BLEND_FACTOR_SRC_ALPHA_SATURATE = 14
BLEND_FACTOR_SRC1_COLOR = 15
BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16
BLEND_FACTOR_SRC1_ALPHA = 17
BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18
BLEND_FACTOR_BEGIN_RANGE = BLEND_FACTOR_ZERO
BLEND_FACTOR_END_RANGE = BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
BLEND_FACTOR_RANGE_SIZE = (BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - BLEND_FACTOR_ZERO + 1)

BlendOp = c_uint32
BLEND_OP_ADD = 0
BLEND_OP_SUBTRACT = 1
BLEND_OP_REVERSE_SUBTRACT = 2
BLEND_OP_MIN = 3
BLEND_OP_MAX = 4
BLEND_OP_ZERO_EXT = 1000148000
BLEND_OP_SRC_EXT = 1000148001
BLEND_OP_DST_EXT = 1000148002
BLEND_OP_SRC_OVER_EXT = 1000148003
BLEND_OP_DST_OVER_EXT = 1000148004
BLEND_OP_SRC_IN_EXT = 1000148005
BLEND_OP_DST_IN_EXT = 1000148006
BLEND_OP_SRC_OUT_EXT = 1000148007
BLEND_OP_DST_OUT_EXT = 1000148008
BLEND_OP_SRC_ATOP_EXT = 1000148009
BLEND_OP_DST_ATOP_EXT = 1000148010
BLEND_OP_XOR_EXT = 1000148011
BLEND_OP_MULTIPLY_EXT = 1000148012
BLEND_OP_SCREEN_EXT = 1000148013
BLEND_OP_OVERLAY_EXT = 1000148014
BLEND_OP_DARKEN_EXT = 1000148015
BLEND_OP_LIGHTEN_EXT = 1000148016
BLEND_OP_COLORDODGE_EXT = 1000148017
BLEND_OP_COLORBURN_EXT = 1000148018
BLEND_OP_HARDLIGHT_EXT = 1000148019
BLEND_OP_SOFTLIGHT_EXT = 1000148020
BLEND_OP_DIFFERENCE_EXT = 1000148021
BLEND_OP_EXCLUSION_EXT = 1000148022
BLEND_OP_INVERT_EXT = 1000148023
BLEND_OP_INVERT_RGB_EXT = 1000148024
BLEND_OP_LINEARDODGE_EXT = 1000148025
BLEND_OP_LINEARBURN_EXT = 1000148026
BLEND_OP_VIVIDLIGHT_EXT = 1000148027
BLEND_OP_LINEARLIGHT_EXT = 1000148028
BLEND_OP_PINLIGHT_EXT = 1000148029
BLEND_OP_HARDMIX_EXT = 1000148030
BLEND_OP_HSL_HUE_EXT = 1000148031
BLEND_OP_HSL_SATURATION_EXT = 1000148032
BLEND_OP_HSL_COLOR_EXT = 1000148033
BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034
BLEND_OP_PLUS_EXT = 1000148035
BLEND_OP_PLUS_CLAMPED_EXT = 1000148036
BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037
BLEND_OP_PLUS_DARKER_EXT = 1000148038
BLEND_OP_MINUS_EXT = 1000148039
BLEND_OP_MINUS_CLAMPED_EXT = 1000148040
BLEND_OP_CONTRAST_EXT = 1000148041
BLEND_OP_INVERT_OVG_EXT = 1000148042
BLEND_OP_RED_EXT = 1000148043
BLEND_OP_GREEN_EXT = 1000148044
BLEND_OP_BLUE_EXT = 1000148045
BLEND_OP_BEGIN_RANGE = BLEND_OP_ADD
BLEND_OP_END_RANGE = BLEND_OP_MAX
BLEND_OP_RANGE_SIZE = (BLEND_OP_MAX - BLEND_OP_ADD + 1)

DynamicState = c_uint32
DYNAMIC_STATE_VIEWPORT = 0
DYNAMIC_STATE_SCISSOR = 1
DYNAMIC_STATE_LINE_WIDTH = 2
DYNAMIC_STATE_DEPTH_BIAS = 3
DYNAMIC_STATE_BLEND_CONSTANTS = 4
DYNAMIC_STATE_DEPTH_BOUNDS = 5
DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6
DYNAMIC_STATE_STENCIL_WRITE_MASK = 7
DYNAMIC_STATE_STENCIL_REFERENCE = 8
DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000
DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000
DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000
DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004
DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006
DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001
DYNAMIC_STATE_BEGIN_RANGE = DYNAMIC_STATE_VIEWPORT
DYNAMIC_STATE_END_RANGE = DYNAMIC_STATE_STENCIL_REFERENCE
DYNAMIC_STATE_RANGE_SIZE = (DYNAMIC_STATE_STENCIL_REFERENCE - DYNAMIC_STATE_VIEWPORT + 1)

Filter = c_uint32
FILTER_NEAREST = 0
FILTER_LINEAR = 1
FILTER_CUBIC_IMG = 1000015000
FILTER_BEGIN_RANGE = FILTER_NEAREST
FILTER_END_RANGE = FILTER_LINEAR
FILTER_RANGE_SIZE = (FILTER_LINEAR - FILTER_NEAREST + 1)

SamplerMipmapMode = c_uint32
SAMPLER_MIPMAP_MODE_NEAREST = 0
SAMPLER_MIPMAP_MODE_LINEAR = 1
SAMPLER_MIPMAP_MODE_BEGIN_RANGE = SAMPLER_MIPMAP_MODE_NEAREST
SAMPLER_MIPMAP_MODE_END_RANGE = SAMPLER_MIPMAP_MODE_LINEAR
SAMPLER_MIPMAP_MODE_RANGE_SIZE = (SAMPLER_MIPMAP_MODE_LINEAR - SAMPLER_MIPMAP_MODE_NEAREST + 1)

SamplerAddressMode = c_uint32
SAMPLER_ADDRESS_MODE_REPEAT = 0
SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2
SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3
SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4
SAMPLER_ADDRESS_MODE_BEGIN_RANGE = SAMPLER_ADDRESS_MODE_REPEAT
SAMPLER_ADDRESS_MODE_END_RANGE = SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
SAMPLER_ADDRESS_MODE_RANGE_SIZE = (SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - SAMPLER_ADDRESS_MODE_REPEAT + 1)

BorderColor = c_uint32
BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0
BORDER_COLOR_INT_TRANSPARENT_BLACK = 1
BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2
BORDER_COLOR_INT_OPAQUE_BLACK = 3
BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4
BORDER_COLOR_INT_OPAQUE_WHITE = 5
BORDER_COLOR_BEGIN_RANGE = BORDER_COLOR_FLOAT_TRANSPARENT_BLACK
BORDER_COLOR_END_RANGE = BORDER_COLOR_INT_OPAQUE_WHITE
BORDER_COLOR_RANGE_SIZE = (BORDER_COLOR_INT_OPAQUE_WHITE - BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1)

DescriptorType = c_uint32
DESCRIPTOR_TYPE_SAMPLER = 0
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1
DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2
DESCRIPTOR_TYPE_STORAGE_IMAGE = 3
DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5
DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6
DESCRIPTOR_TYPE_STORAGE_BUFFER = 7
DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8
DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9
DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000
DESCRIPTOR_TYPE_BEGIN_RANGE = DESCRIPTOR_TYPE_SAMPLER
DESCRIPTOR_TYPE_END_RANGE = DESCRIPTOR_TYPE_INPUT_ATTACHMENT
DESCRIPTOR_TYPE_RANGE_SIZE = (DESCRIPTOR_TYPE_INPUT_ATTACHMENT - DESCRIPTOR_TYPE_SAMPLER + 1)

AttachmentLoadOp = c_uint32
ATTACHMENT_LOAD_OP_LOAD = 0
ATTACHMENT_LOAD_OP_CLEAR = 1
ATTACHMENT_LOAD_OP_DONT_CARE = 2
ATTACHMENT_LOAD_OP_BEGIN_RANGE = ATTACHMENT_LOAD_OP_LOAD
ATTACHMENT_LOAD_OP_END_RANGE = ATTACHMENT_LOAD_OP_DONT_CARE
ATTACHMENT_LOAD_OP_RANGE_SIZE = (ATTACHMENT_LOAD_OP_DONT_CARE - ATTACHMENT_LOAD_OP_LOAD + 1)

AttachmentStoreOp = c_uint32
ATTACHMENT_STORE_OP_STORE = 0
ATTACHMENT_STORE_OP_DONT_CARE = 1
ATTACHMENT_STORE_OP_BEGIN_RANGE = ATTACHMENT_STORE_OP_STORE
ATTACHMENT_STORE_OP_END_RANGE = ATTACHMENT_STORE_OP_DONT_CARE
ATTACHMENT_STORE_OP_RANGE_SIZE = (ATTACHMENT_STORE_OP_DONT_CARE - ATTACHMENT_STORE_OP_STORE + 1)

PipelineBindPoint = c_uint32
PIPELINE_BIND_POINT_GRAPHICS = 0
PIPELINE_BIND_POINT_COMPUTE = 1
PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000
PIPELINE_BIND_POINT_BEGIN_RANGE = PIPELINE_BIND_POINT_GRAPHICS
PIPELINE_BIND_POINT_END_RANGE = PIPELINE_BIND_POINT_COMPUTE
PIPELINE_BIND_POINT_RANGE_SIZE = (PIPELINE_BIND_POINT_COMPUTE - PIPELINE_BIND_POINT_GRAPHICS + 1)

CommandBufferLevel = c_uint32
COMMAND_BUFFER_LEVEL_PRIMARY = 0
COMMAND_BUFFER_LEVEL_SECONDARY = 1
COMMAND_BUFFER_LEVEL_BEGIN_RANGE = COMMAND_BUFFER_LEVEL_PRIMARY
COMMAND_BUFFER_LEVEL_END_RANGE = COMMAND_BUFFER_LEVEL_SECONDARY
COMMAND_BUFFER_LEVEL_RANGE_SIZE = (COMMAND_BUFFER_LEVEL_SECONDARY - COMMAND_BUFFER_LEVEL_PRIMARY + 1)

IndexType = c_uint32
INDEX_TYPE_UINT16 = 0
INDEX_TYPE_UINT32 = 1
INDEX_TYPE_NONE_NV = 1000165000
INDEX_TYPE_BEGIN_RANGE = INDEX_TYPE_UINT16
INDEX_TYPE_END_RANGE = INDEX_TYPE_UINT32
INDEX_TYPE_RANGE_SIZE = (INDEX_TYPE_UINT32 - INDEX_TYPE_UINT16 + 1)

SubpassContents = c_uint32
SUBPASS_CONTENTS_INLINE = 0
SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1
SUBPASS_CONTENTS_BEGIN_RANGE = SUBPASS_CONTENTS_INLINE
SUBPASS_CONTENTS_END_RANGE = SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
SUBPASS_CONTENTS_RANGE_SIZE = (SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - SUBPASS_CONTENTS_INLINE + 1)

ObjectType = c_uint32
OBJECT_TYPE_UNKNOWN = 0
OBJECT_TYPE_INSTANCE = 1
OBJECT_TYPE_PHYSICAL_DEVICE = 2
OBJECT_TYPE_DEVICE = 3
OBJECT_TYPE_QUEUE = 4
OBJECT_TYPE_SEMAPHORE = 5
OBJECT_TYPE_COMMAND_BUFFER = 6
OBJECT_TYPE_FENCE = 7
OBJECT_TYPE_DEVICE_MEMORY = 8
OBJECT_TYPE_BUFFER = 9
OBJECT_TYPE_IMAGE = 10
OBJECT_TYPE_EVENT = 11
OBJECT_TYPE_QUERY_POOL = 12
OBJECT_TYPE_BUFFER_VIEW = 13
OBJECT_TYPE_IMAGE_VIEW = 14
OBJECT_TYPE_SHADER_MODULE = 15
OBJECT_TYPE_PIPELINE_CACHE = 16
OBJECT_TYPE_PIPELINE_LAYOUT = 17
OBJECT_TYPE_RENDER_PASS = 18
OBJECT_TYPE_PIPELINE = 19
OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20
OBJECT_TYPE_SAMPLER = 21
OBJECT_TYPE_DESCRIPTOR_POOL = 22
OBJECT_TYPE_DESCRIPTOR_SET = 23
OBJECT_TYPE_FRAMEBUFFER = 24
OBJECT_TYPE_COMMAND_POOL = 25
OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000
OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000
OBJECT_TYPE_SURFACE_KHR = 1000000000
OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000
OBJECT_TYPE_DISPLAY_KHR = 1000002000
OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001
OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000
OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000
OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001
OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000
OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000
OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000
OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
OBJECT_TYPE_BEGIN_RANGE = OBJECT_TYPE_UNKNOWN
OBJECT_TYPE_END_RANGE = OBJECT_TYPE_COMMAND_POOL
OBJECT_TYPE_RANGE_SIZE = (OBJECT_TYPE_COMMAND_POOL - OBJECT_TYPE_UNKNOWN + 1)

VendorId = c_uint32
VENDOR_ID_VIV = 0x10001
VENDOR_ID_VSI = 0x10002
VENDOR_ID_KAZAN = 0x10003
VENDOR_ID_BEGIN_RANGE = VENDOR_ID_VIV
VENDOR_ID_END_RANGE = VENDOR_ID_KAZAN
VENDOR_ID_RANGE_SIZE = (VENDOR_ID_KAZAN - VENDOR_ID_VIV + 1)

FormatFeatureFlagBits = c_uint32
FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001
FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002
FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004
FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008
FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010
FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020
FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040
FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080
FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100
FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200
FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400
FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000
FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000
FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000
FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000
FORMAT_FEATURE_DISJOINT_BIT = 0x00400000
FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000
FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = FORMAT_FEATURE_TRANSFER_SRC_BIT
FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = FORMAT_FEATURE_TRANSFER_DST_BIT
FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
FORMAT_FEATURE_DISJOINT_BIT_KHR = FORMAT_FEATURE_DISJOINT_BIT
FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT

ImageUsageFlagBits = c_uint32
IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001
IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002
IMAGE_USAGE_SAMPLED_BIT = 0x00000004
IMAGE_USAGE_STORAGE_BIT = 0x00000008
IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040
IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080
IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00000100

ImageCreateFlagBits = c_uint32
IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001
IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002
IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004
IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008
IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010
IMAGE_CREATE_ALIAS_BIT = 0x00000400
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080
IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100
IMAGE_CREATE_PROTECTED_BIT = 0x00000800
IMAGE_CREATE_DISJOINT_BIT = 0x00000200
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000
IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = IMAGE_CREATE_EXTENDED_USAGE_BIT
IMAGE_CREATE_DISJOINT_BIT_KHR = IMAGE_CREATE_DISJOINT_BIT
IMAGE_CREATE_ALIAS_BIT_KHR = IMAGE_CREATE_ALIAS_BIT

SampleCountFlagBits = c_uint32
SAMPLE_COUNT_1_BIT = 0x00000001
SAMPLE_COUNT_2_BIT = 0x00000002
SAMPLE_COUNT_4_BIT = 0x00000004
SAMPLE_COUNT_8_BIT = 0x00000008
SAMPLE_COUNT_16_BIT = 0x00000010
SAMPLE_COUNT_32_BIT = 0x00000020
SAMPLE_COUNT_64_BIT = 0x00000040

QueueFlagBits = c_uint32
QUEUE_GRAPHICS_BIT = 0x00000001
QUEUE_COMPUTE_BIT = 0x00000002
QUEUE_TRANSFER_BIT = 0x00000004
QUEUE_SPARSE_BINDING_BIT = 0x00000008
QUEUE_PROTECTED_BIT = 0x00000010

MemoryPropertyFlagBits = c_uint32
MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001
MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002
MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004
MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008
MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010
MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020

MemoryHeapFlagBits = c_uint32
MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001
MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002
MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = MEMORY_HEAP_MULTI_INSTANCE_BIT

DeviceQueueCreateFlagBits = c_uint32
DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001

PipelineStageFlagBits = c_uint32
PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001
PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002
PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004
PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008
PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010
PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020
PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040
PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080
PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100
PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200
PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400
PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800
PIPELINE_STAGE_TRANSFER_BIT = 0x00001000
PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000
PIPELINE_STAGE_HOST_BIT = 0x00004000
PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000
PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000
PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000
PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000
PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000
PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00400000
PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 0x00200000
PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000
PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000
PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000

ImageAspectFlagBits = c_uint32
IMAGE_ASPECT_COLOR_BIT = 0x00000001
IMAGE_ASPECT_DEPTH_BIT = 0x00000002
IMAGE_ASPECT_STENCIL_BIT = 0x00000004
IMAGE_ASPECT_METADATA_BIT = 0x00000008
IMAGE_ASPECT_PLANE_0_BIT = 0x00000010
IMAGE_ASPECT_PLANE_1_BIT = 0x00000020
IMAGE_ASPECT_PLANE_2_BIT = 0x00000040
IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080
IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100
IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200
IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400
IMAGE_ASPECT_PLANE_0_BIT_KHR = IMAGE_ASPECT_PLANE_0_BIT
IMAGE_ASPECT_PLANE_1_BIT_KHR = IMAGE_ASPECT_PLANE_1_BIT
IMAGE_ASPECT_PLANE_2_BIT_KHR = IMAGE_ASPECT_PLANE_2_BIT

SparseImageFormatFlagBits = c_uint32
SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001
SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002
SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004

SparseMemoryBindFlagBits = c_uint32
SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001

FenceCreateFlagBits = c_uint32
FENCE_CREATE_SIGNALED_BIT = 0x00000001

QueryPipelineStatisticFlagBits = c_uint32
QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001
QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002
QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004
QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008
QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010
QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020
QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040
QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080
QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100
QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200
QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400

QueryResultFlagBits = c_uint32
QUERY_RESULT_64_BIT = 0x00000001
QUERY_RESULT_WAIT_BIT = 0x00000002
QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004
QUERY_RESULT_PARTIAL_BIT = 0x00000008

BufferCreateFlagBits = c_uint32
BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001
BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002
BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004
BUFFER_CREATE_PROTECTED_BIT = 0x00000008

BufferUsageFlagBits = c_uint32
BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001
BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002
BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004
BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008
BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010
BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020
BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040
BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080
BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100
BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800
BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000
BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200
BUFFER_USAGE_RAY_TRACING_BIT_NV = 0x00000400

PipelineCreateFlagBits = c_uint32
PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001
PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002
PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004
PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008
PIPELINE_CREATE_DISPATCH_BASE = 0x00000010
PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020
PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
PIPELINE_CREATE_DISPATCH_BASE_KHR = PIPELINE_CREATE_DISPATCH_BASE

ShaderStageFlagBits = c_uint32
SHADER_STAGE_VERTEX_BIT = 0x00000001
SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002
SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004
SHADER_STAGE_GEOMETRY_BIT = 0x00000008
SHADER_STAGE_FRAGMENT_BIT = 0x00000010
SHADER_STAGE_COMPUTE_BIT = 0x00000020
SHADER_STAGE_ALL_GRAPHICS = 0x0000001F
SHADER_STAGE_ALL = 0x7FFFFFFF
SHADER_STAGE_RAYGEN_BIT_NV = 0x00000100
SHADER_STAGE_ANY_HIT_BIT_NV = 0x00000200
SHADER_STAGE_CLOSEST_HIT_BIT_NV = 0x00000400
SHADER_STAGE_MISS_BIT_NV = 0x00000800
SHADER_STAGE_INTERSECTION_BIT_NV = 0x00001000
SHADER_STAGE_CALLABLE_BIT_NV = 0x00002000
SHADER_STAGE_TASK_BIT_NV = 0x00000040
SHADER_STAGE_MESH_BIT_NV = 0x00000080

CullModeFlagBits = c_uint32
CULL_MODE_NONE = 0
CULL_MODE_FRONT_BIT = 0x00000001
CULL_MODE_BACK_BIT = 0x00000002
CULL_MODE_FRONT_AND_BACK = 0x00000003

ColorComponentFlagBits = c_uint32
COLOR_COMPONENT_R_BIT = 0x00000001
COLOR_COMPONENT_G_BIT = 0x00000002
COLOR_COMPONENT_B_BIT = 0x00000004
COLOR_COMPONENT_A_BIT = 0x00000008

DescriptorSetLayoutCreateFlagBits = c_uint32
DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001
DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002

DescriptorPoolCreateFlagBits = c_uint32
DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001
DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002

AttachmentDescriptionFlagBits = c_uint32
ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001

SubpassDescriptionFlagBits = c_uint32
SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001
SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002

AccessFlagBits = c_uint32
ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001
ACCESS_INDEX_READ_BIT = 0x00000002
ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004
ACCESS_UNIFORM_READ_BIT = 0x00000008
ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010
ACCESS_SHADER_READ_BIT = 0x00000020
ACCESS_SHADER_WRITE_BIT = 0x00000040
ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080
ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100
ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200
ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400
ACCESS_TRANSFER_READ_BIT = 0x00000800
ACCESS_TRANSFER_WRITE_BIT = 0x00001000
ACCESS_HOST_READ_BIT = 0x00002000
ACCESS_HOST_WRITE_BIT = 0x00004000
ACCESS_MEMORY_READ_BIT = 0x00008000
ACCESS_MEMORY_WRITE_BIT = 0x00010000
ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000
ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000
ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000
ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000
ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000
ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000
ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000
ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000
ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000
ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000

DependencyFlagBits = c_uint32
DEPENDENCY_BY_REGION_BIT = 0x00000001
DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004
DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002
DEPENDENCY_VIEW_LOCAL_BIT_KHR = DEPENDENCY_VIEW_LOCAL_BIT
DEPENDENCY_DEVICE_GROUP_BIT_KHR = DEPENDENCY_DEVICE_GROUP_BIT

CommandPoolCreateFlagBits = c_uint32
COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001
COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002
COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004

CommandPoolResetFlagBits = c_uint32
COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001

CommandBufferUsageFlagBits = c_uint32
COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001
COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002
COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004

QueryControlFlagBits = c_uint32
QUERY_CONTROL_PRECISE_BIT = 0x00000001

CommandBufferResetFlagBits = c_uint32
COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001

StencilFaceFlagBits = c_uint32
STENCIL_FACE_FRONT_BIT = 0x00000001
STENCIL_FACE_BACK_BIT = 0x00000002
STENCIL_FRONT_AND_BACK = 0x00000003

RenderPassCreateFlagBits = c_uint32

PointClippingBehavior = c_uint32
POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0
POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1
POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
POINT_CLIPPING_BEHAVIOR_END_RANGE = POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
POINT_CLIPPING_BEHAVIOR_RANGE_SIZE = (POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY - POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES + 1)

TessellationDomainOrigin = c_uint32
TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0
TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1
TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT
TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE = TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT
TESSELLATION_DOMAIN_ORIGIN_END_RANGE = TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE = (TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT - TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT + 1)

SamplerYcbcrModelConversion = c_uint32
SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4
SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE = SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY
SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE = (SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 - SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY + 1)

SamplerYcbcrRange = c_uint32
SAMPLER_YCBCR_RANGE_ITU_FULL = 0
SAMPLER_YCBCR_RANGE_ITU_NARROW = 1
SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = SAMPLER_YCBCR_RANGE_ITU_FULL
SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = SAMPLER_YCBCR_RANGE_ITU_NARROW
SAMPLER_YCBCR_RANGE_BEGIN_RANGE = SAMPLER_YCBCR_RANGE_ITU_FULL
SAMPLER_YCBCR_RANGE_END_RANGE = SAMPLER_YCBCR_RANGE_ITU_NARROW
SAMPLER_YCBCR_RANGE_RANGE_SIZE = (SAMPLER_YCBCR_RANGE_ITU_NARROW - SAMPLER_YCBCR_RANGE_ITU_FULL + 1)

ChromaLocation = c_uint32
CHROMA_LOCATION_COSITED_EVEN = 0
CHROMA_LOCATION_MIDPOINT = 1
CHROMA_LOCATION_COSITED_EVEN_KHR = CHROMA_LOCATION_COSITED_EVEN
CHROMA_LOCATION_MIDPOINT_KHR = CHROMA_LOCATION_MIDPOINT
CHROMA_LOCATION_BEGIN_RANGE = CHROMA_LOCATION_COSITED_EVEN
CHROMA_LOCATION_END_RANGE = CHROMA_LOCATION_MIDPOINT
CHROMA_LOCATION_RANGE_SIZE = (CHROMA_LOCATION_MIDPOINT - CHROMA_LOCATION_COSITED_EVEN + 1)

DescriptorUpdateTemplateType = c_uint32
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE = DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE = DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE = (DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET - DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET + 1)

SubgroupFeatureFlagBits = c_uint32
SUBGROUP_FEATURE_BASIC_BIT = 0x00000001
SUBGROUP_FEATURE_VOTE_BIT = 0x00000002
SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004
SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008
SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020
SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040
SUBGROUP_FEATURE_QUAD_BIT = 0x00000080
SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100

PeerMemoryFeatureFlagBits = c_uint32
PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001
PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002
PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004
PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008
PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = PEER_MEMORY_FEATURE_COPY_SRC_BIT
PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = PEER_MEMORY_FEATURE_COPY_DST_BIT
PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = PEER_MEMORY_FEATURE_GENERIC_SRC_BIT
PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = PEER_MEMORY_FEATURE_GENERIC_DST_BIT

MemoryAllocateFlagBits = c_uint32
MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001
MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = MEMORY_ALLOCATE_DEVICE_MASK_BIT

ExternalMemoryHandleTypeFlagBits = c_uint32
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040
EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT

ExternalMemoryFeatureFlagBits = c_uint32
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT

ExternalFenceHandleTypeFlagBits = c_uint32
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004
EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT

ExternalFenceFeatureFlagBits = c_uint32
EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001
EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002
EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT
EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT

FenceImportFlagBits = c_uint32
FENCE_IMPORT_TEMPORARY_BIT = 0x00000001
FENCE_IMPORT_TEMPORARY_BIT_KHR = FENCE_IMPORT_TEMPORARY_BIT

SemaphoreImportFlagBits = c_uint32
SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001
SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = SEMAPHORE_IMPORT_TEMPORARY_BIT

ExternalSemaphoreHandleTypeFlagBits = c_uint32
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004
EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008
EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT

ExternalSemaphoreFeatureFlagBits = c_uint32
EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001
EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002
EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT
EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT

ColorSpaceKHR = c_uint32
COLOR_SPACE_SRGB_NONLINEAR_KHR = 0
COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001
COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002
COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003
COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004
COLOR_SPACE_BT709_LINEAR_EXT = 1000104005
COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006
COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007
COLOR_SPACE_HDR10_ST2084_EXT = 1000104008
COLOR_SPACE_DOLBYVISION_EXT = 1000104009
COLOR_SPACE_HDR10_HLG_EXT = 1000104010
COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011
COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012
COLOR_SPACE_PASS_THROUGH_EXT = 1000104013
COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014
COLORSPACE_SRGB_NONLINEAR_KHR = COLOR_SPACE_SRGB_NONLINEAR_KHR
COLOR_SPACE_BEGIN_RANGE_KHR = COLOR_SPACE_SRGB_NONLINEAR_KHR
COLOR_SPACE_END_RANGE_KHR = COLOR_SPACE_SRGB_NONLINEAR_KHR
COLOR_SPACE_RANGE_SIZE_KHR = (COLOR_SPACE_SRGB_NONLINEAR_KHR - COLOR_SPACE_SRGB_NONLINEAR_KHR + 1)

PresentModeKHR = c_uint32
PRESENT_MODE_IMMEDIATE_KHR = 0
PRESENT_MODE_MAILBOX_KHR = 1
PRESENT_MODE_FIFO_KHR = 2
PRESENT_MODE_FIFO_RELAXED_KHR = 3
PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000
PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001
PRESENT_MODE_BEGIN_RANGE_KHR = PRESENT_MODE_IMMEDIATE_KHR
PRESENT_MODE_END_RANGE_KHR = PRESENT_MODE_FIFO_RELAXED_KHR
PRESENT_MODE_RANGE_SIZE_KHR = (PRESENT_MODE_FIFO_RELAXED_KHR - PRESENT_MODE_IMMEDIATE_KHR + 1)

SurfaceTransformFlagBitsKHR = c_uint32
SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008
SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010
SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020
SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040
SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080
SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100

CompositeAlphaFlagBitsKHR = c_uint32
COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001
COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002
COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004
COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008

SwapchainCreateFlagBitsKHR = c_uint32
SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001
SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002

DeviceGroupPresentModeFlagBitsKHR = c_uint32
DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001
DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002
DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004
DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008

DisplayPlaneAlphaFlagBitsKHR = c_uint32
DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001
DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002
DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004
DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008

DriverIdKHR = c_uint32
DRIVER_ID_AMD_PROPRIETARY_KHR = 1
DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2
DRIVER_ID_MESA_RADV_KHR = 3
DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4
DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5
DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6
DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7
DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8
DRIVER_ID_ARM_PROPRIETARY_KHR = 9
DRIVER_ID_BEGIN_RANGE_KHR = DRIVER_ID_AMD_PROPRIETARY_KHR
DRIVER_ID_END_RANGE_KHR = DRIVER_ID_ARM_PROPRIETARY_KHR
DRIVER_ID_RANGE_SIZE_KHR = (DRIVER_ID_ARM_PROPRIETARY_KHR - DRIVER_ID_AMD_PROPRIETARY_KHR + 1)

DebugReportObjectTypeEXT = c_uint32
DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0
DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1
DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2
DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3
DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4
DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5
DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6
DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7
DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8
DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9
DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10
DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11
DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12
DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13
DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14
DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17
DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20
DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23
DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24
DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25
DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26
DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27
DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28
DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29
DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30
DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31
DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32
DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33
DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000
DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000
DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT
DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT
DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT
DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT - DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1)

DebugReportFlagBitsEXT = c_uint32
DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001
DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002
DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004
DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008
DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010

RasterizationOrderAMD = c_uint32
RASTERIZATION_ORDER_STRICT_AMD = 0
RASTERIZATION_ORDER_RELAXED_AMD = 1
RASTERIZATION_ORDER_BEGIN_RANGE_AMD = RASTERIZATION_ORDER_STRICT_AMD
RASTERIZATION_ORDER_END_RANGE_AMD = RASTERIZATION_ORDER_RELAXED_AMD
RASTERIZATION_ORDER_RANGE_SIZE_AMD = (RASTERIZATION_ORDER_RELAXED_AMD - RASTERIZATION_ORDER_STRICT_AMD + 1)

ShaderInfoTypeAMD = c_uint32
SHADER_INFO_TYPE_STATISTICS_AMD = 0
SHADER_INFO_TYPE_BINARY_AMD = 1
SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2
SHADER_INFO_TYPE_BEGIN_RANGE_AMD = SHADER_INFO_TYPE_STATISTICS_AMD
SHADER_INFO_TYPE_END_RANGE_AMD = SHADER_INFO_TYPE_DISASSEMBLY_AMD
SHADER_INFO_TYPE_RANGE_SIZE_AMD = (SHADER_INFO_TYPE_DISASSEMBLY_AMD - SHADER_INFO_TYPE_STATISTICS_AMD + 1)

ExternalMemoryHandleTypeFlagBitsNV = c_uint32
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008

ExternalMemoryFeatureFlagBitsNV = c_uint32
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004

ValidationCheckEXT = c_uint32
VALIDATION_CHECK_ALL_EXT = 0
VALIDATION_CHECK_SHADERS_EXT = 1
VALIDATION_CHECK_BEGIN_RANGE_EXT = VALIDATION_CHECK_ALL_EXT
VALIDATION_CHECK_END_RANGE_EXT = VALIDATION_CHECK_SHADERS_EXT
VALIDATION_CHECK_RANGE_SIZE_EXT = (VALIDATION_CHECK_SHADERS_EXT - VALIDATION_CHECK_ALL_EXT + 1)

ConditionalRenderingFlagBitsEXT = c_uint32
CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001

IndirectCommandsTokenTypeNVX = c_uint32
INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0
INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1
INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2
INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6
INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7
INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX
INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX - INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX + 1)

ObjectEntryTypeNVX = c_uint32
OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0
OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1
OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2
OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3
OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4
OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX
OBJECT_ENTRY_TYPE_END_RANGE_NVX = OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX - OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX + 1)

IndirectCommandsLayoutUsageFlagBitsNVX = c_uint32
INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001
INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002
INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004
INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008

ObjectEntryUsageFlagBitsNVX = c_uint32
OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001
OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002

SurfaceCounterFlagBitsEXT = c_uint32
SURFACE_COUNTER_VBLANK_EXT = 0x00000001

DisplayPowerStateEXT = c_uint32
DISPLAY_POWER_STATE_OFF_EXT = 0
DISPLAY_POWER_STATE_SUSPEND_EXT = 1
DISPLAY_POWER_STATE_ON_EXT = 2
DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = DISPLAY_POWER_STATE_OFF_EXT
DISPLAY_POWER_STATE_END_RANGE_EXT = DISPLAY_POWER_STATE_ON_EXT
DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (DISPLAY_POWER_STATE_ON_EXT - DISPLAY_POWER_STATE_OFF_EXT + 1)

DeviceEventTypeEXT = c_uint32
DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0
DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
DEVICE_EVENT_TYPE_END_RANGE_EXT = DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1)

DisplayEventTypeEXT = c_uint32
DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0
DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
DISPLAY_EVENT_TYPE_END_RANGE_EXT = DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1)

ViewportCoordinateSwizzleNV = c_uint32
VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0
VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1
VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2
VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3
VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4
VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5
VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6
VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7
VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV
VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1)

DiscardRectangleModeEXT = c_uint32
DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0
DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1
DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT
DISCARD_RECTANGLE_MODE_END_RANGE_EXT = DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1)

ConservativeRasterizationModeEXT = c_uint32
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1
CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2
CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT = CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT - CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT + 1)

DebugUtilsMessageSeverityFlagBitsEXT = c_uint32
DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001
DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010
DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100
DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000

DebugUtilsMessageTypeFlagBitsEXT = c_uint32
DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001
DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002
DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004

SamplerReductionModeEXT = c_uint32
SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0
SAMPLER_REDUCTION_MODE_MIN_EXT = 1
SAMPLER_REDUCTION_MODE_MAX_EXT = 2
SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
SAMPLER_REDUCTION_MODE_END_RANGE_EXT = SAMPLER_REDUCTION_MODE_MAX_EXT
SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (SAMPLER_REDUCTION_MODE_MAX_EXT - SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1)

BlendOverlapEXT = c_uint32
BLEND_OVERLAP_UNCORRELATED_EXT = 0
BLEND_OVERLAP_DISJOINT_EXT = 1
BLEND_OVERLAP_CONJOINT_EXT = 2
BLEND_OVERLAP_BEGIN_RANGE_EXT = BLEND_OVERLAP_UNCORRELATED_EXT
BLEND_OVERLAP_END_RANGE_EXT = BLEND_OVERLAP_CONJOINT_EXT
BLEND_OVERLAP_RANGE_SIZE_EXT = (BLEND_OVERLAP_CONJOINT_EXT - BLEND_OVERLAP_UNCORRELATED_EXT + 1)

CoverageModulationModeNV = c_uint32
COVERAGE_MODULATION_MODE_NONE_NV = 0
COVERAGE_MODULATION_MODE_RGB_NV = 1
COVERAGE_MODULATION_MODE_ALPHA_NV = 2
COVERAGE_MODULATION_MODE_RGBA_NV = 3
COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV = COVERAGE_MODULATION_MODE_NONE_NV
COVERAGE_MODULATION_MODE_END_RANGE_NV = COVERAGE_MODULATION_MODE_RGBA_NV
COVERAGE_MODULATION_MODE_RANGE_SIZE_NV = (COVERAGE_MODULATION_MODE_RGBA_NV - COVERAGE_MODULATION_MODE_NONE_NV + 1)

ValidationCacheHeaderVersionEXT = c_uint32
VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1
VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = (VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + 1)

DescriptorBindingFlagBitsEXT = c_uint32
DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001
DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002
DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004
DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008

ShadingRatePaletteEntryNV = c_uint32
SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0
SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1
SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2
SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3
SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4
SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5
SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6
SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7
SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8
SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9
SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10
SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11
SHADING_RATE_PALETTE_ENTRY_BEGIN_RANGE_NV = SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV
SHADING_RATE_PALETTE_ENTRY_END_RANGE_NV = SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV
SHADING_RATE_PALETTE_ENTRY_RANGE_SIZE_NV = (SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV - SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV + 1)

CoarseSampleOrderTypeNV = c_uint32
COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0
COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1
COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2
COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3
COARSE_SAMPLE_ORDER_TYPE_BEGIN_RANGE_NV = COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV
COARSE_SAMPLE_ORDER_TYPE_END_RANGE_NV = COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV
COARSE_SAMPLE_ORDER_TYPE_RANGE_SIZE_NV = (COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV - COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV + 1)

RayTracingShaderGroupTypeNV = c_uint32
RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0
RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1
RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2
RAY_TRACING_SHADER_GROUP_TYPE_BEGIN_RANGE_NV = RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
RAY_TRACING_SHADER_GROUP_TYPE_END_RANGE_NV = RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
RAY_TRACING_SHADER_GROUP_TYPE_RANGE_SIZE_NV = (RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV - RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV + 1)

GeometryTypeNV = c_uint32
GEOMETRY_TYPE_TRIANGLES_NV = 0
GEOMETRY_TYPE_AABBS_NV = 1
GEOMETRY_TYPE_BEGIN_RANGE_NV = GEOMETRY_TYPE_TRIANGLES_NV
GEOMETRY_TYPE_END_RANGE_NV = GEOMETRY_TYPE_AABBS_NV
GEOMETRY_TYPE_RANGE_SIZE_NV = (GEOMETRY_TYPE_AABBS_NV - GEOMETRY_TYPE_TRIANGLES_NV + 1)

AccelerationStructureTypeNV = c_uint32
ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0
ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1
ACCELERATION_STRUCTURE_TYPE_BEGIN_RANGE_NV = ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV
ACCELERATION_STRUCTURE_TYPE_END_RANGE_NV = ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
ACCELERATION_STRUCTURE_TYPE_RANGE_SIZE_NV = (ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV - ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV + 1)

CopyAccelerationStructureModeNV = c_uint32
COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0
COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1
COPY_ACCELERATION_STRUCTURE_MODE_BEGIN_RANGE_NV = COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV
COPY_ACCELERATION_STRUCTURE_MODE_END_RANGE_NV = COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV
COPY_ACCELERATION_STRUCTURE_MODE_RANGE_SIZE_NV = (COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV - COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV + 1)

AccelerationStructureMemoryRequirementsTypeNV = c_uint32
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BEGIN_RANGE_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_END_RANGE_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_RANGE_SIZE_NV = (ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV - ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV + 1)

GeometryFlagBitsNV = c_uint32
GEOMETRY_OPAQUE_BIT_NV = 0x00000001
GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 0x00000002

GeometryInstanceFlagBitsNV = c_uint32
GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 0x00000001
GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 0x00000002
GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 0x00000004
GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 0x00000008

BuildAccelerationStructureFlagBitsNV = c_uint32
BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 0x00000001
BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 0x00000002
BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 0x00000004
BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 0x00000008
BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 0x00000010

QueueGlobalPriorityEXT = c_uint32
QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128
QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256
QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512
QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024
QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = QUEUE_GLOBAL_PRIORITY_LOW_EXT
QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - QUEUE_GLOBAL_PRIORITY_LOW_EXT + 1)

TimeDomainEXT = c_uint32
TIME_DOMAIN_DEVICE_EXT = 0
TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1
TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2
TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3
TIME_DOMAIN_BEGIN_RANGE_EXT = TIME_DOMAIN_DEVICE_EXT
TIME_DOMAIN_END_RANGE_EXT = TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
TIME_DOMAIN_RANGE_SIZE_EXT = (TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT - TIME_DOMAIN_DEVICE_EXT + 1)

MemoryOverallocationBehaviorAMD = c_uint32
MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0
MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1
MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2
MEMORY_OVERALLOCATION_BEHAVIOR_BEGIN_RANGE_AMD = MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD
MEMORY_OVERALLOCATION_BEHAVIOR_END_RANGE_AMD = MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD
MEMORY_OVERALLOCATION_BEHAVIOR_RANGE_SIZE_AMD = (MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD - MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD + 1)



# Allocation callback
FnAllocationFunction = FUNCTYPE(c_void_p, c_void_p, c_size_t, c_size_t, SystemAllocationScope)
FnReallocationFunction = FUNCTYPE(c_void_p, c_void_p, c_size_t, c_size_t, SystemAllocationScope)
FnFreeFunction = FUNCTYPE(None, c_void_p, c_void_p)
FnInternalAllocationNotification = FUNCTYPE(None, c_void_p, c_size_t, InternalAllocationType, SystemAllocationScope)
FnInternalFreeNotification = FUNCTYPE(None, c_void_p, c_size_t, InternalAllocationType, SystemAllocationScope)
FnDebugReportCallbackEXT = FUNCTYPE(Bool32, DebugReportFlagsEXT, DebugReportObjectTypeEXT, c_uint64, c_size_t, c_uint32, c_char_p, c_char_p, c_void_p)



ApplicationInfo = define_struct('ApplicationInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('application_name', c_char_p),
    ('application_version', c_uint32),
    ('engine_name', c_char_p),
    ('engine_version', c_uint32),
    ('api_version', c_uint32),
)

InstanceCreateInfo = define_struct('InstanceCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', InstanceCreateFlags),
    ('application_info', POINTER(ApplicationInfo)),
    ('enabled_layer_count', c_uint32),
    ('enabled_layer_names', POINTER(c_char_p)),
    ('enabled_extension_count', c_uint32),
    ('enabled_extension_names', POINTER(c_char_p)),
)

AllocationCallbacks = define_struct('AllocationCallbacks', 
    ('user_data', c_void_p),
    ('allocation', FnAllocationFunction),
    ('reallocation', FnReallocationFunction),
    ('free', FnFreeFunction),
    ('internal_allocation', FnInternalAllocationNotification),
    ('internal_free', FnInternalFreeNotification),
)

PhysicalDeviceFeatures = define_struct('PhysicalDeviceFeatures', 
    ('robust_buffer_access', Bool32),
    ('full_draw_index_uint32', Bool32),
    ('image_cube_array', Bool32),
    ('independent_blend', Bool32),
    ('geometry_shader', Bool32),
    ('tessellation_shader', Bool32),
    ('sample_rate_shading', Bool32),
    ('dual_src_blend', Bool32),
    ('logic_op', Bool32),
    ('multi_draw_indirect', Bool32),
    ('draw_indirect_first_instance', Bool32),
    ('depth_clamp', Bool32),
    ('depth_bias_clamp', Bool32),
    ('fill_mode_non_solid', Bool32),
    ('depth_bounds', Bool32),
    ('wide_lines', Bool32),
    ('large_points', Bool32),
    ('alpha_toOne', Bool32),
    ('multi_viewport', Bool32),
    ('sampler_anisotropy', Bool32),
    ('texture_compression_ETC2', Bool32),
    ('texture_compression_ASTC__LDR', Bool32),
    ('texture_compression_BC', Bool32),
    ('occlusion_query_precise', Bool32),
    ('pipeline_statistics_query', Bool32),
    ('vertex_pipeline_stores_and_atomics', Bool32),
    ('fragment_stores_and_atomics', Bool32),
    ('shader_tessellation_and_geometry_point_size', Bool32),
    ('shader_image_gather_extended', Bool32),
    ('shader_storage_image_extended_formats', Bool32),
    ('shader_storage_image_multisample', Bool32),
    ('shader_storage_image_read_without_format', Bool32),
    ('shader_storage_image_write_without_format', Bool32),
    ('shader_uniform_buffer_array_dynamic_indexing', Bool32),
    ('shader_sampled_image_array_dynamic_indexing', Bool32),
    ('shader_storage_buffer_array_dynamic_indexing', Bool32),
    ('shader_storage_image_array_dynamic_indexing', Bool32),
    ('shader_clip_distance', Bool32),
    ('shader_cull_distance', Bool32),
    ('shader_float64', Bool32),
    ('shader_int64', Bool32),
    ('shader_int16', Bool32),
    ('shader_resource_residency', Bool32),
    ('shader_resource_min_lod', Bool32),
    ('sparse_binding', Bool32),
    ('sparse_residency_buffer', Bool32),
    ('sparse_residency_image2_D', Bool32),
    ('sparse_residency_image3_D', Bool32),
    ('sparse_residency2_samples', Bool32),
    ('sparse_residency4_samples', Bool32),
    ('sparse_residency8_samples', Bool32),
    ('sparse_residency16_samples', Bool32),
    ('sparse_residency_aliased', Bool32),
    ('variable_multisample_rate', Bool32),
    ('inherited_queries', Bool32),
)

FormatProperties = define_struct('FormatProperties', 
    ('linear_tiling_features', FormatFeatureFlags),
    ('optimal_tiling_features', FormatFeatureFlags),
    ('buffer_features', FormatFeatureFlags),
)

Extent3D = define_struct('Extent3D', 
    ('width', c_uint32),
    ('height', c_uint32),
    ('depth', c_uint32),
)

ImageFormatProperties = define_struct('ImageFormatProperties', 
    ('max_extent', Extent3D),
    ('max_mip_levels', c_uint32),
    ('max_array_layers', c_uint32),
    ('sample_counts', SampleCountFlags),
    ('max_resource_size', DeviceSize),
)

PhysicalDeviceLimits = define_struct('PhysicalDeviceLimits', 
    ('max_image_dimension1_D', c_uint32),
    ('max_image_dimension2_D', c_uint32),
    ('max_image_dimension3_D', c_uint32),
    ('max_image_dimension_cube', c_uint32),
    ('max_image_array_layers', c_uint32),
    ('max_texel_buffer_elements', c_uint32),
    ('max_uniform_buffer_range', c_uint32),
    ('max_storage_buffer_range', c_uint32),
    ('max_push_constants_size', c_uint32),
    ('max_memory_allocation_count', c_uint32),
    ('max_sampler_allocation_count', c_uint32),
    ('buffer_image_granularity', DeviceSize),
    ('sparse_address_space_size', DeviceSize),
    ('max_bound_descriptor_sets', c_uint32),
    ('max_per_stage_descriptor_samplers', c_uint32),
    ('max_per_stage_descriptor_uniform_buffers', c_uint32),
    ('max_per_stage_descriptor_storage_buffers', c_uint32),
    ('max_per_stage_descriptor_sampled_images', c_uint32),
    ('max_per_stage_descriptor_storage_images', c_uint32),
    ('max_per_stage_descriptor_input_attachments', c_uint32),
    ('max_per_stage_resources', c_uint32),
    ('max_descriptor_set_samplers', c_uint32),
    ('max_descriptor_set_uniform_buffers', c_uint32),
    ('max_descriptor_set_uniform_buffers_dynamic', c_uint32),
    ('max_descriptor_set_storage_buffers', c_uint32),
    ('max_descriptor_set_storage_buffers_dynamic', c_uint32),
    ('max_descriptor_set_sampled_images', c_uint32),
    ('max_descriptor_set_storage_images', c_uint32),
    ('max_descriptor_set_input_attachments', c_uint32),
    ('max_vertex_input_attributes', c_uint32),
    ('max_vertex_input_bindings', c_uint32),
    ('max_vertex_input_attribute_offset', c_uint32),
    ('max_vertex_input_binding_stride', c_uint32),
    ('max_vertex_output_components', c_uint32),
    ('max_tessellation_generation_level', c_uint32),
    ('max_tessellation_patch_size', c_uint32),
    ('max_tessellation_control_per_vertex_input_components', c_uint32),
    ('max_tessellation_control_per_vertex_output_components', c_uint32),
    ('max_tessellation_control_per_patch_output_components', c_uint32),
    ('max_tessellation_control_total_output_components', c_uint32),
    ('max_tessellation_evaluation_input_components', c_uint32),
    ('max_tessellation_evaluation_output_components', c_uint32),
    ('max_geometry_shader_invocations', c_uint32),
    ('max_geometry_input_components', c_uint32),
    ('max_geometry_output_components', c_uint32),
    ('max_geometry_output_vertices', c_uint32),
    ('max_geometry_total_output_components', c_uint32),
    ('max_fragment_input_components', c_uint32),
    ('max_fragment_output_attachments', c_uint32),
    ('max_fragment_dual_src_attachments', c_uint32),
    ('max_fragment_combined_output_resources', c_uint32),
    ('max_compute_shared_memory_size', c_uint32),
    ('max_compute_work_group_count', c_uint32 * 3),
    ('max_compute_work_group_invocations', c_uint32),
    ('max_compute_work_group_size', c_uint32 * 3),
    ('sub_pixel_precision_bits', c_uint32),
    ('sub_texel_precision_bits', c_uint32),
    ('mipmap_precision_bits', c_uint32),
    ('max_draw_indexed_index_value', c_uint32),
    ('max_draw_indirect_count', c_uint32),
    ('max_sampler_lod_bias', c_float),
    ('max_sampler_anisotropy', c_float),
    ('max_viewports', c_uint32),
    ('max_viewport_dimensions', c_uint32 * 2),
    ('viewport_bounds_range', c_float * 2),
    ('viewport_sub_pixel_bits', c_uint32),
    ('min_memory_map_alignment', c_size_t),
    ('min_texel_buffer_offset_alignment', DeviceSize),
    ('min_uniform_buffer_offset_alignment', DeviceSize),
    ('min_storage_buffer_offset_alignment', DeviceSize),
    ('min_texel_offset', c_int32),
    ('max_texel_offset', c_uint32),
    ('min_texel_gather_offset', c_int32),
    ('max_texel_gather_offset', c_uint32),
    ('min_interpolation_offset', c_float),
    ('max_interpolation_offset', c_float),
    ('sub_pixel_interpolation_offset_bits', c_uint32),
    ('max_framebuffer_width', c_uint32),
    ('max_framebuffer_height', c_uint32),
    ('max_framebuffer_layers', c_uint32),
    ('framebuffer_color_sample_counts', SampleCountFlags),
    ('framebuffer_depth_sample_counts', SampleCountFlags),
    ('framebuffer_stencil_sample_counts', SampleCountFlags),
    ('framebuffer_noAttachments_sample_counts', SampleCountFlags),
    ('max_color_attachments', c_uint32),
    ('sampled_image_color_sample_counts', SampleCountFlags),
    ('sampled_image_integer_sample_counts', SampleCountFlags),
    ('sampled_image_depth_sample_counts', SampleCountFlags),
    ('sampled_image_stencil_sample_counts', SampleCountFlags),
    ('storage_image_sample_counts', SampleCountFlags),
    ('max_sample_mask_words', c_uint32),
    ('timestamp_compute_and_graphics', Bool32),
    ('timestamp_period', c_float),
    ('max_clip_distances', c_uint32),
    ('max_cull_distances', c_uint32),
    ('max_combined_clip_and_cull_distances', c_uint32),
    ('discrete_queue_priorities', c_uint32),
    ('point_size_range', c_float * 2),
    ('line_width_range', c_float * 2),
    ('point_size_granularity', c_float),
    ('line_width_granularity', c_float),
    ('strict_lines', Bool32),
    ('standard_sample_locations', Bool32),
    ('optimal_buffer_copy_offset_alignment', DeviceSize),
    ('optimal_buffer_copy_row_pitch_alignment', DeviceSize),
    ('non_coherent_atom_size', DeviceSize),
)

PhysicalDeviceSparseProperties = define_struct('PhysicalDeviceSparseProperties', 
    ('residency_standard2_DBlock_shape', Bool32),
    ('residency_standard2_DMultisample_block_shape', Bool32),
    ('residency_standard3_DBlock_shape', Bool32),
    ('residency_aligned_mip_size', Bool32),
    ('residency_non_resident_strict', Bool32),
)

PhysicalDeviceProperties = define_struct('PhysicalDeviceProperties', 
    ('api_version', c_uint32),
    ('driver_version', c_uint32),
    ('vendor_ID', c_uint32),
    ('device_ID', c_uint32),
    ('device_type', PhysicalDeviceType),
    ('device_name', c_char * MAX_PHYSICAL_DEVICE_NAME_SIZE),
    ('pipeline_cache_UUID', c_int8 * UUID_SIZE),
    ('limits', PhysicalDeviceLimits),
    ('sparse_properties', PhysicalDeviceSparseProperties),
)

QueueFamilyProperties = define_struct('QueueFamilyProperties', 
    ('queue_flags', QueueFlags),
    ('queue_count', c_uint32),
    ('timestamp_valid_bits', c_uint32),
    ('min_image_transfer_granularity', Extent3D),
)

MemoryType = define_struct('MemoryType', 
    ('property_flags', MemoryPropertyFlags),
    ('heap_index', c_uint32),
)

MemoryHeap = define_struct('MemoryHeap', 
    ('size', DeviceSize),
    ('flags', MemoryHeapFlags),
)

PhysicalDeviceMemoryProperties = define_struct('PhysicalDeviceMemoryProperties', 
    ('memory_type_count', c_uint32),
    ('memory_types', MemoryType * MAX_MEMORY_TYPES),
    ('memory_heap_count', c_uint32),
    ('memory_heaps', MemoryHeap * MAX_MEMORY_HEAPS),
)

DeviceQueueCreateInfo = define_struct('DeviceQueueCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DeviceQueueCreateFlags),
    ('queue_family_index', c_uint32),
    ('queue_count', c_uint32),
    ('queue_priorities', POINTER(c_float)),
)

DeviceCreateInfo = define_struct('DeviceCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DeviceCreateFlags),
    ('queue_create_info_count', c_uint32),
    ('queue_create_infos', POINTER(DeviceQueueCreateInfo)),
    ('enabled_layer_count', c_uint32),
    ('enabled_layer_names', POINTER(c_char_p)),
    ('enabled_extension_count', c_uint32),
    ('enabled_extension_names', POINTER(c_char_p)),
    ('enabled_features', POINTER(PhysicalDeviceFeatures)),
)

ExtensionProperties = define_struct('ExtensionProperties', 
    ('extension_name', c_char * MAX_EXTENSION_NAME_SIZE),
    ('spec_version', c_uint32),
)

LayerProperties = define_struct('LayerProperties', 
    ('layer_name', c_char * MAX_EXTENSION_NAME_SIZE),
    ('spec_version', c_uint32),
    ('implementation_version', c_uint32),
    ('description', c_char * MAX_DESCRIPTION_SIZE),
)

SubmitInfo = define_struct('SubmitInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('wait_semaphore_count', c_uint32),
    ('wait_semaphores', POINTER(Semaphore)),
    ('wait_dst_stage_mask', POINTER(PipelineStageFlags)),
    ('command_buffer_count', c_uint32),
    ('command_buffers', POINTER(CommandBuffer)),
    ('signal_semaphore_count', c_uint32),
    ('signal_semaphores', POINTER(Semaphore)),
)

MemoryAllocateInfo = define_struct('MemoryAllocateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('allocation_size', DeviceSize),
    ('memory_type_index', c_uint32),
)

MappedMemoryRange = define_struct('MappedMemoryRange', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory', DeviceMemory),
    ('offset', DeviceSize),
    ('size', DeviceSize),
)

MemoryRequirements = define_struct('MemoryRequirements', 
    ('size', DeviceSize),
    ('alignment', DeviceSize),
    ('memory_type_bits', c_uint32),
)

SparseImageFormatProperties = define_struct('SparseImageFormatProperties', 
    ('aspect_mask', ImageAspectFlags),
    ('image_granularity', Extent3D),
    ('flags', SparseImageFormatFlags),
)

SparseImageMemoryRequirements = define_struct('SparseImageMemoryRequirements', 
    ('format_properties', SparseImageFormatProperties),
    ('image_mip_tail_first_lod', c_uint32),
    ('image_mip_tail_size', DeviceSize),
    ('image_mip_tail_offset', DeviceSize),
    ('image_mip_tail_stride', DeviceSize),
)

SparseMemoryBind = define_struct('SparseMemoryBind', 
    ('resource_offset', DeviceSize),
    ('size', DeviceSize),
    ('memory', DeviceMemory),
    ('memory_offset', DeviceSize),
    ('flags', SparseMemoryBindFlags),
)

SparseBufferMemoryBindInfo = define_struct('SparseBufferMemoryBindInfo', 
    ('buffer', Buffer),
    ('bind_count', c_uint32),
    ('binds', POINTER(SparseMemoryBind)),
)

SparseImageOpaqueMemoryBindInfo = define_struct('SparseImageOpaqueMemoryBindInfo', 
    ('image', Image),
    ('bind_count', c_uint32),
    ('binds', POINTER(SparseMemoryBind)),
)

ImageSubresource = define_struct('ImageSubresource', 
    ('aspect_mask', ImageAspectFlags),
    ('mip_level', c_uint32),
    ('array_layer', c_uint32),
)

Offset3D = define_struct('Offset3D', 
    ('x', c_int32),
    ('y', c_int32),
    ('z', c_int32),
)

SparseImageMemoryBind = define_struct('SparseImageMemoryBind', 
    ('subresource', ImageSubresource),
    ('offset', Offset3D),
    ('extent', Extent3D),
    ('memory', DeviceMemory),
    ('memory_offset', DeviceSize),
    ('flags', SparseMemoryBindFlags),
)

SparseImageMemoryBindInfo = define_struct('SparseImageMemoryBindInfo', 
    ('image', Image),
    ('bind_count', c_uint32),
    ('binds', POINTER(SparseImageMemoryBind)),
)

BindSparseInfo = define_struct('BindSparseInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('wait_semaphore_count', c_uint32),
    ('wait_semaphores', POINTER(Semaphore)),
    ('buffer_bind_count', c_uint32),
    ('buffer_binds', POINTER(SparseBufferMemoryBindInfo)),
    ('image_opaque_bind_count', c_uint32),
    ('image_opaque_binds', POINTER(SparseImageOpaqueMemoryBindInfo)),
    ('image_bind_count', c_uint32),
    ('image_binds', POINTER(SparseImageMemoryBindInfo)),
    ('signal_semaphore_count', c_uint32),
    ('signal_semaphores', POINTER(Semaphore)),
)

FenceCreateInfo = define_struct('FenceCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', FenceCreateFlags),
)

SemaphoreCreateInfo = define_struct('SemaphoreCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', SemaphoreCreateFlags),
)

EventCreateInfo = define_struct('EventCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', EventCreateFlags),
)

QueryPoolCreateInfo = define_struct('QueryPoolCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', QueryPoolCreateFlags),
    ('query_type', QueryType),
    ('query_count', c_uint32),
    ('pipeline_statistics', QueryPipelineStatisticFlags),
)

BufferCreateInfo = define_struct('BufferCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', BufferCreateFlags),
    ('size', DeviceSize),
    ('usage', BufferUsageFlags),
    ('sharing_mode', SharingMode),
    ('queue_family_index_count', c_uint32),
    ('queue_family_indices', POINTER(c_uint32)),
)

BufferViewCreateInfo = define_struct('BufferViewCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', BufferViewCreateFlags),
    ('buffer', Buffer),
    ('format', Format),
    ('offset', DeviceSize),
    ('range', DeviceSize),
)

ImageCreateInfo = define_struct('ImageCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', ImageCreateFlags),
    ('image_type', ImageType),
    ('format', Format),
    ('extent', Extent3D),
    ('mip_levels', c_uint32),
    ('array_layers', c_uint32),
    ('samples', SampleCountFlagBits),
    ('tiling', ImageTiling),
    ('usage', ImageUsageFlags),
    ('sharing_mode', SharingMode),
    ('queue_family_index_count', c_uint32),
    ('queue_family_indices', POINTER(c_uint32)),
    ('initial_layout', ImageLayout),
)

SubresourceLayout = define_struct('SubresourceLayout', 
    ('offset', DeviceSize),
    ('size', DeviceSize),
    ('row_pitch', DeviceSize),
    ('array_pitch', DeviceSize),
    ('depth_pitch', DeviceSize),
)

ComponentMapping = define_struct('ComponentMapping', 
    ('r', ComponentSwizzle),
    ('g', ComponentSwizzle),
    ('b', ComponentSwizzle),
    ('a', ComponentSwizzle),
)

ImageSubresourceRange = define_struct('ImageSubresourceRange', 
    ('aspect_mask', ImageAspectFlags),
    ('base_mip_level', c_uint32),
    ('level_count', c_uint32),
    ('base_array_layer', c_uint32),
    ('layer_count', c_uint32),
)

ImageViewCreateInfo = define_struct('ImageViewCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', ImageViewCreateFlags),
    ('image', Image),
    ('view_type', ImageViewType),
    ('format', Format),
    ('components', ComponentMapping),
    ('subresource_range', ImageSubresourceRange),
)

ShaderModuleCreateInfo = define_struct('ShaderModuleCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', ShaderModuleCreateFlags),
    ('code_size', c_size_t),
    ('code', POINTER(c_uint32)),
)

PipelineCacheCreateInfo = define_struct('PipelineCacheCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineCacheCreateFlags),
    ('initial_data_size', c_size_t),
    ('initial_data', c_void_p),
)

SpecializationMapEntry = define_struct('SpecializationMapEntry', 
    ('constant_ID', c_uint32),
    ('offset', c_uint32),
    ('size', c_size_t),
)

SpecializationInfo = define_struct('SpecializationInfo', 
    ('map_entry_count', c_uint32),
    ('map_entries', POINTER(SpecializationMapEntry)),
    ('data_size', c_size_t),
    ('data', c_void_p),
)

PipelineShaderStageCreateInfo = define_struct('PipelineShaderStageCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineShaderStageCreateFlags),
    ('stage', ShaderStageFlagBits),
    ('module', ShaderModule),
    ('name', c_char_p),
    ('specialization_info', POINTER(SpecializationInfo)),
)

VertexInputBindingDescription = define_struct('VertexInputBindingDescription', 
    ('binding', c_uint32),
    ('stride', c_uint32),
    ('input_rate', VertexInputRate),
)

VertexInputAttributeDescription = define_struct('VertexInputAttributeDescription', 
    ('location', c_uint32),
    ('binding', c_uint32),
    ('format', Format),
    ('offset', c_uint32),
)

PipelineVertexInputStateCreateInfo = define_struct('PipelineVertexInputStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineVertexInputStateCreateFlags),
    ('vertex_binding_description_count', c_uint32),
    ('vertex_binding_descriptions', POINTER(VertexInputBindingDescription)),
    ('vertex_attribute_description_count', c_uint32),
    ('vertex_attribute_descriptions', POINTER(VertexInputAttributeDescription)),
)

PipelineInputAssemblyStateCreateInfo = define_struct('PipelineInputAssemblyStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineInputAssemblyStateCreateFlags),
    ('topology', PrimitiveTopology),
    ('primitive_restart_enable', Bool32),
)

PipelineTessellationStateCreateInfo = define_struct('PipelineTessellationStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineTessellationStateCreateFlags),
    ('patch_control_points', c_uint32),
)

Viewport = define_struct('Viewport', 
    ('x', c_float),
    ('y', c_float),
    ('width', c_float),
    ('height', c_float),
    ('min_depth', c_float),
    ('max_depth', c_float),
)

Offset2D = define_struct('Offset2D', 
    ('x', c_int32),
    ('y', c_int32),
)

Extent2D = define_struct('Extent2D', 
    ('width', c_uint32),
    ('height', c_uint32),
)

Rect2D = define_struct('Rect2D', 
    ('offset', Offset2D),
    ('extent', Extent2D),
)

PipelineViewportStateCreateInfo = define_struct('PipelineViewportStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineViewportStateCreateFlags),
    ('viewport_count', c_uint32),
    ('viewports', POINTER(Viewport)),
    ('scissor_count', c_uint32),
    ('scissors', POINTER(Rect2D)),
)

PipelineRasterizationStateCreateInfo = define_struct('PipelineRasterizationStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineRasterizationStateCreateFlags),
    ('depth_clamp_enable', Bool32),
    ('rasterizer_discard_enable', Bool32),
    ('polygon_mode', PolygonMode),
    ('cull_mode', CullModeFlags),
    ('front_face', FrontFace),
    ('depth_bias_enable', Bool32),
    ('depth_bias_constant_factor', c_float),
    ('depth_bias_clamp', c_float),
    ('depth_bias_slope_factor', c_float),
    ('line_width', c_float),
)

PipelineMultisampleStateCreateInfo = define_struct('PipelineMultisampleStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineMultisampleStateCreateFlags),
    ('rasterization_samples', SampleCountFlagBits),
    ('sample_shading_enable', Bool32),
    ('min_sample_shading', c_float),
    ('sample_mask', POINTER(SampleMask)),
    ('alpha_toCoverage_enable', Bool32),
    ('alpha_toOne_enable', Bool32),
)

StencilOpState = define_struct('StencilOpState', 
    ('fail_op', StencilOp),
    ('pass_op', StencilOp),
    ('depth_fail_op', StencilOp),
    ('compare_op', CompareOp),
    ('compare_mask', c_uint32),
    ('write_mask', c_uint32),
    ('reference', c_uint32),
)

PipelineDepthStencilStateCreateInfo = define_struct('PipelineDepthStencilStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineDepthStencilStateCreateFlags),
    ('depth_test_enable', Bool32),
    ('depth_write_enable', Bool32),
    ('depth_compare_op', CompareOp),
    ('depth_bounds_test_enable', Bool32),
    ('stencil_test_enable', Bool32),
    ('front', StencilOpState),
    ('back', StencilOpState),
    ('min_depth_bounds', c_float),
    ('max_depth_bounds', c_float),
)

PipelineColorBlendAttachmentState = define_struct('PipelineColorBlendAttachmentState', 
    ('blend_enable', Bool32),
    ('src_color_blend_factor', BlendFactor),
    ('dst_color_blend_factor', BlendFactor),
    ('color_blend_op', BlendOp),
    ('src_alpha_blend_factor', BlendFactor),
    ('dst_alpha_blend_factor', BlendFactor),
    ('alpha_blend_op', BlendOp),
    ('color_write_mask', ColorComponentFlags),
)

PipelineColorBlendStateCreateInfo = define_struct('PipelineColorBlendStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineColorBlendStateCreateFlags),
    ('logic_opEnable', Bool32),
    ('logic_op', LogicOp),
    ('attachment_count', c_uint32),
    ('attachments', POINTER(PipelineColorBlendAttachmentState)),
    ('blend_constants', c_float * 4),
)

PipelineDynamicStateCreateInfo = define_struct('PipelineDynamicStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineDynamicStateCreateFlags),
    ('dynamic_state_count', c_uint32),
    ('dynamic_states', POINTER(DynamicState)),
)

GraphicsPipelineCreateInfo = define_struct('GraphicsPipelineCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineCreateFlags),
    ('stage_count', c_uint32),
    ('stages', POINTER(PipelineShaderStageCreateInfo)),
    ('vertex_input_state', POINTER(PipelineVertexInputStateCreateInfo)),
    ('input_assembly_state', POINTER(PipelineInputAssemblyStateCreateInfo)),
    ('tessellation_state', POINTER(PipelineTessellationStateCreateInfo)),
    ('viewport_state', POINTER(PipelineViewportStateCreateInfo)),
    ('rasterization_state', POINTER(PipelineRasterizationStateCreateInfo)),
    ('multisample_state', POINTER(PipelineMultisampleStateCreateInfo)),
    ('depth_stencil_state', POINTER(PipelineDepthStencilStateCreateInfo)),
    ('color_blend_state', POINTER(PipelineColorBlendStateCreateInfo)),
    ('dynamic_state', POINTER(PipelineDynamicStateCreateInfo)),
    ('layout', PipelineLayout),
    ('render_pass', RenderPass),
    ('subpass', c_uint32),
    ('base_pipeline_handle', Pipeline),
    ('base_pipeline_index', c_int32),
)

ComputePipelineCreateInfo = define_struct('ComputePipelineCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineCreateFlags),
    ('stage', PipelineShaderStageCreateInfo),
    ('layout', PipelineLayout),
    ('base_pipeline_handle', Pipeline),
    ('base_pipeline_index', c_int32),
)

PushConstantRange = define_struct('PushConstantRange', 
    ('stage_flags', ShaderStageFlags),
    ('offset', c_uint32),
    ('size', c_uint32),
)

PipelineLayoutCreateInfo = define_struct('PipelineLayoutCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineLayoutCreateFlags),
    ('set_layout_count', c_uint32),
    ('set_layouts', POINTER(DescriptorSetLayout)),
    ('push_constant_range_count', c_uint32),
    ('push_constant_ranges', POINTER(PushConstantRange)),
)

SamplerCreateInfo = define_struct('SamplerCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', SamplerCreateFlags),
    ('mag_filter', Filter),
    ('min_filter', Filter),
    ('mipmap_mode', SamplerMipmapMode),
    ('address_mode_U', SamplerAddressMode),
    ('address_mode_V', SamplerAddressMode),
    ('address_mode_W', SamplerAddressMode),
    ('mip_lod_bias', c_float),
    ('anisotropy_enable', Bool32),
    ('max_anisotropy', c_float),
    ('compare_enable', Bool32),
    ('compare_op', CompareOp),
    ('min_lod', c_float),
    ('max_lod', c_float),
    ('border_color', BorderColor),
    ('unnormalized_coordinates', Bool32),
)

DescriptorSetLayoutBinding = define_struct('DescriptorSetLayoutBinding', 
    ('binding', c_uint32),
    ('descriptor_type', DescriptorType),
    ('descriptor_count', c_uint32),
    ('stage_flags', ShaderStageFlags),
    ('immutable_samplers', POINTER(Sampler)),
)

DescriptorSetLayoutCreateInfo = define_struct('DescriptorSetLayoutCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DescriptorSetLayoutCreateFlags),
    ('binding_count', c_uint32),
    ('bindings', POINTER(DescriptorSetLayoutBinding)),
)

DescriptorPoolSize = define_struct('DescriptorPoolSize', 
    ('type', DescriptorType),
    ('descriptor_count', c_uint32),
)

DescriptorPoolCreateInfo = define_struct('DescriptorPoolCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DescriptorPoolCreateFlags),
    ('max_sets', c_uint32),
    ('pool_size_count', c_uint32),
    ('pool_sizes', POINTER(DescriptorPoolSize)),
)

DescriptorSetAllocateInfo = define_struct('DescriptorSetAllocateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('descriptor_pool', DescriptorPool),
    ('descriptor_set_count', c_uint32),
    ('set_layouts', POINTER(DescriptorSetLayout)),
)

DescriptorImageInfo = define_struct('DescriptorImageInfo', 
    ('sampler', Sampler),
    ('image_view', ImageView),
    ('image_layout', ImageLayout),
)

DescriptorBufferInfo = define_struct('DescriptorBufferInfo', 
    ('buffer', Buffer),
    ('offset', DeviceSize),
    ('range', DeviceSize),
)

WriteDescriptorSet = define_struct('WriteDescriptorSet', 
    ('type', StructureType),
    ('next', c_void_p),
    ('dst_set', DescriptorSet),
    ('dst_binding', c_uint32),
    ('dst_array_element', c_uint32),
    ('descriptor_count', c_uint32),
    ('descriptor_type', DescriptorType),
    ('image_info', POINTER(DescriptorImageInfo)),
    ('buffer_info', POINTER(DescriptorBufferInfo)),
    ('texel_buffer_view', POINTER(BufferView)),
)

CopyDescriptorSet = define_struct('CopyDescriptorSet', 
    ('type', StructureType),
    ('next', c_void_p),
    ('src_set', DescriptorSet),
    ('src_binding', c_uint32),
    ('src_array_element', c_uint32),
    ('dst_set', DescriptorSet),
    ('dst_binding', c_uint32),
    ('dst_array_element', c_uint32),
    ('descriptor_count', c_uint32),
)

FramebufferCreateInfo = define_struct('FramebufferCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', FramebufferCreateFlags),
    ('render_pass', RenderPass),
    ('attachment_count', c_uint32),
    ('attachments', POINTER(ImageView)),
    ('width', c_uint32),
    ('height', c_uint32),
    ('layers', c_uint32),
)

AttachmentDescription = define_struct('AttachmentDescription', 
    ('flags', AttachmentDescriptionFlags),
    ('format', Format),
    ('samples', SampleCountFlagBits),
    ('load_op', AttachmentLoadOp),
    ('store_op', AttachmentStoreOp),
    ('stencil_load_op', AttachmentLoadOp),
    ('stencil_store_op', AttachmentStoreOp),
    ('initial_layout', ImageLayout),
    ('final_layout', ImageLayout),
)

AttachmentReference = define_struct('AttachmentReference', 
    ('attachment', c_uint32),
    ('layout', ImageLayout),
)

SubpassDescription = define_struct('SubpassDescription', 
    ('flags', SubpassDescriptionFlags),
    ('pipeline_bind_point', PipelineBindPoint),
    ('input_attachment_count', c_uint32),
    ('input_attachments', POINTER(AttachmentReference)),
    ('color_attachment_count', c_uint32),
    ('color_attachments', POINTER(AttachmentReference)),
    ('resolve_attachments', POINTER(AttachmentReference)),
    ('depth_stencil_attachment', POINTER(AttachmentReference)),
    ('preserve_attachment_count', c_uint32),
    ('preserve_attachments', POINTER(c_uint32)),
)

SubpassDependency = define_struct('SubpassDependency', 
    ('src_subpass', c_uint32),
    ('dst_subpass', c_uint32),
    ('src_stage_mask', PipelineStageFlags),
    ('dst_stage_mask', PipelineStageFlags),
    ('src_access_mask', AccessFlags),
    ('dst_access_mask', AccessFlags),
    ('dependency_flags', DependencyFlags),
)

RenderPassCreateInfo = define_struct('RenderPassCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', RenderPassCreateFlags),
    ('attachment_count', c_uint32),
    ('attachments', POINTER(AttachmentDescription)),
    ('subpass_count', c_uint32),
    ('subpasses', POINTER(SubpassDescription)),
    ('dependency_count', c_uint32),
    ('dependencies', POINTER(SubpassDependency)),
)

CommandPoolCreateInfo = define_struct('CommandPoolCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', CommandPoolCreateFlags),
    ('queue_family_index', c_uint32),
)

CommandBufferAllocateInfo = define_struct('CommandBufferAllocateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('command_pool', CommandPool),
    ('level', CommandBufferLevel),
    ('command_buffer_count', c_uint32),
)

CommandBufferInheritanceInfo = define_struct('CommandBufferInheritanceInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('render_pass', RenderPass),
    ('subpass', c_uint32),
    ('framebuffer', Framebuffer),
    ('occlusion_query_enable', Bool32),
    ('query_flags', QueryControlFlags),
    ('pipeline_statistics', QueryPipelineStatisticFlags),
)

CommandBufferBeginInfo = define_struct('CommandBufferBeginInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', CommandBufferUsageFlags),
    ('inheritance_info', POINTER(CommandBufferInheritanceInfo)),
)

BufferCopy = define_struct('BufferCopy', 
    ('src_offset', DeviceSize),
    ('dst_offset', DeviceSize),
    ('size', DeviceSize),
)

ImageSubresourceLayers = define_struct('ImageSubresourceLayers', 
    ('aspect_mask', ImageAspectFlags),
    ('mip_level', c_uint32),
    ('base_array_layer', c_uint32),
    ('layer_count', c_uint32),
)

ImageCopy = define_struct('ImageCopy', 
    ('src_subresource', ImageSubresourceLayers),
    ('src_offset', Offset3D),
    ('dst_subresource', ImageSubresourceLayers),
    ('dst_offset', Offset3D),
    ('extent', Extent3D),
)

ImageBlit = define_struct('ImageBlit', 
    ('src_subresource', ImageSubresourceLayers),
    ('src_offsets', Offset3D * 2),
    ('dst_subresource', ImageSubresourceLayers),
    ('dst_offsets', Offset3D * 2),
)

BufferImageCopy = define_struct('BufferImageCopy', 
    ('buffer_offset', DeviceSize),
    ('buffer_row_length', c_uint32),
    ('buffer_image_height', c_uint32),
    ('image_subresource', ImageSubresourceLayers),
    ('image_offset', Offset3D),
    ('image_extent', Extent3D),
)

ClearColorValue = define_union('ClearColorValue', 
    ('float32', c_float * 4),
    ('int32', c_int32 * 4),
    ('uint32', c_uint32 * 4),
)

ClearDepthStencilValue = define_struct('ClearDepthStencilValue', 
    ('depth', c_float),
    ('stencil', c_uint32),
)

ClearValue = define_union('ClearValue', 
    ('color', ClearColorValue),
    ('depth_stencil', ClearDepthStencilValue),
)

ClearAttachment = define_struct('ClearAttachment', 
    ('aspect_mask', ImageAspectFlags),
    ('color_attachment', c_uint32),
    ('clear_value', ClearValue),
)

ClearRect = define_struct('ClearRect', 
    ('rect', Rect2D),
    ('base_array_layer', c_uint32),
    ('layer_count', c_uint32),
)

ImageResolve = define_struct('ImageResolve', 
    ('src_subresource', ImageSubresourceLayers),
    ('src_offset', Offset3D),
    ('dst_subresource', ImageSubresourceLayers),
    ('dst_offset', Offset3D),
    ('extent', Extent3D),
)

MemoryBarrier = define_struct('MemoryBarrier', 
    ('type', StructureType),
    ('next', c_void_p),
    ('src_access_mask', AccessFlags),
    ('dst_access_mask', AccessFlags),
)

BufferMemoryBarrier = define_struct('BufferMemoryBarrier', 
    ('type', StructureType),
    ('next', c_void_p),
    ('src_access_mask', AccessFlags),
    ('dst_access_mask', AccessFlags),
    ('src_queue_family_index', c_uint32),
    ('dst_queue_family_index', c_uint32),
    ('buffer', Buffer),
    ('offset', DeviceSize),
    ('size', DeviceSize),
)

ImageMemoryBarrier = define_struct('ImageMemoryBarrier', 
    ('type', StructureType),
    ('next', c_void_p),
    ('src_access_mask', AccessFlags),
    ('dst_access_mask', AccessFlags),
    ('old_layout', ImageLayout),
    ('new_layout', ImageLayout),
    ('src_queue_family_index', c_uint32),
    ('dst_queue_family_index', c_uint32),
    ('image', Image),
    ('subresource_range', ImageSubresourceRange),
)

RenderPassBeginInfo = define_struct('RenderPassBeginInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('render_pass', RenderPass),
    ('framebuffer', Framebuffer),
    ('render_area', Rect2D),
    ('clear_value_count', c_uint32),
    ('clear_values', POINTER(ClearValue)),
)

DispatchIndirectCommand = define_struct('DispatchIndirectCommand', 
    ('x', c_uint32),
    ('y', c_uint32),
    ('z', c_uint32),
)

DrawIndexedIndirectCommand = define_struct('DrawIndexedIndirectCommand', 
    ('index_count', c_uint32),
    ('instance_count', c_uint32),
    ('first_index', c_uint32),
    ('vertex_offset', c_int32),
    ('first_instance', c_uint32),
)

DrawIndirectCommand = define_struct('DrawIndirectCommand', 
    ('vertex_count', c_uint32),
    ('instance_count', c_uint32),
    ('first_vertex', c_uint32),
    ('first_instance', c_uint32),
)

PhysicalDeviceSubgroupProperties = define_struct('PhysicalDeviceSubgroupProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('subgroup_size', c_uint32),
    ('supported_stages', ShaderStageFlags),
    ('supported_operations', SubgroupFeatureFlags),
    ('quad_operations_inAll_stages', Bool32),
)

BindBufferMemoryInfo = define_struct('BindBufferMemoryInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('buffer', Buffer),
    ('memory', DeviceMemory),
    ('memory_offset', DeviceSize),
)

BindImageMemoryInfo = define_struct('BindImageMemoryInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('image', Image),
    ('memory', DeviceMemory),
    ('memory_offset', DeviceSize),
)

PhysicalDevice16BitStorageFeatures = define_struct('PhysicalDevice16BitStorageFeatures', 
    ('type', StructureType),
    ('next', c_void_p),
    ('storage_buffer16_bit_access', Bool32),
    ('uniform_and_storage_buffer16_bit_access', Bool32),
    ('storage_push_constant16', Bool32),
    ('storage_input_output16', Bool32),
)

MemoryDedicatedRequirements = define_struct('MemoryDedicatedRequirements', 
    ('type', StructureType),
    ('next', c_void_p),
    ('prefers_dedicated_allocation', Bool32),
    ('requires_dedicated_allocation', Bool32),
)

MemoryDedicatedAllocateInfo = define_struct('MemoryDedicatedAllocateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('image', Image),
    ('buffer', Buffer),
)

MemoryAllocateFlagsInfo = define_struct('MemoryAllocateFlagsInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', MemoryAllocateFlags),
    ('device_mask', c_uint32),
)

DeviceGroupRenderPassBeginInfo = define_struct('DeviceGroupRenderPassBeginInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('device_mask', c_uint32),
    ('device_render_area_count', c_uint32),
    ('device_render_areas', POINTER(Rect2D)),
)

DeviceGroupCommandBufferBeginInfo = define_struct('DeviceGroupCommandBufferBeginInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('device_mask', c_uint32),
)

DeviceGroupSubmitInfo = define_struct('DeviceGroupSubmitInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('wait_semaphore_count', c_uint32),
    ('wait_semaphore_device_indices', POINTER(c_uint32)),
    ('command_buffer_count', c_uint32),
    ('command_buffer_device_masks', POINTER(c_uint32)),
    ('signal_semaphore_count', c_uint32),
    ('signal_semaphore_device_indices', POINTER(c_uint32)),
)

DeviceGroupBindSparseInfo = define_struct('DeviceGroupBindSparseInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('resource_device_index', c_uint32),
    ('memory_device_index', c_uint32),
)

BindBufferMemoryDeviceGroupInfo = define_struct('BindBufferMemoryDeviceGroupInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('device_index_count', c_uint32),
    ('device_indices', POINTER(c_uint32)),
)

BindImageMemoryDeviceGroupInfo = define_struct('BindImageMemoryDeviceGroupInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('device_index_count', c_uint32),
    ('device_indices', POINTER(c_uint32)),
    ('split_instance_bind_region_count', c_uint32),
    ('split_instance_bind_regions', POINTER(Rect2D)),
)

PhysicalDeviceGroupProperties = define_struct('PhysicalDeviceGroupProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('physical_device_count', c_uint32),
    ('physical_devices', PhysicalDevice * MAX_DEVICE_GROUP_SIZE),
    ('subset_allocation', Bool32),
)

DeviceGroupDeviceCreateInfo = define_struct('DeviceGroupDeviceCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('physical_device_count', c_uint32),
    ('physical_devices', POINTER(PhysicalDevice)),
)

BufferMemoryRequirementsInfo2 = define_struct('BufferMemoryRequirementsInfo2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('buffer', Buffer),
)

ImageMemoryRequirementsInfo2 = define_struct('ImageMemoryRequirementsInfo2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('image', Image),
)

ImageSparseMemoryRequirementsInfo2 = define_struct('ImageSparseMemoryRequirementsInfo2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('image', Image),
)

MemoryRequirements2 = define_struct('MemoryRequirements2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory_requirements', MemoryRequirements),
)

MemoryRequirements2KHR = MemoryRequirements2

SparseImageMemoryRequirements2 = define_struct('SparseImageMemoryRequirements2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory_requirements', SparseImageMemoryRequirements),
)

PhysicalDeviceFeatures2 = define_struct('PhysicalDeviceFeatures2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('features', PhysicalDeviceFeatures),
)

PhysicalDeviceProperties2 = define_struct('PhysicalDeviceProperties2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('properties', PhysicalDeviceProperties),
)

FormatProperties2 = define_struct('FormatProperties2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('format_properties', FormatProperties),
)

ImageFormatProperties2 = define_struct('ImageFormatProperties2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('image_format_properties', ImageFormatProperties),
)

PhysicalDeviceImageFormatInfo2 = define_struct('PhysicalDeviceImageFormatInfo2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('format', Format),
    ('type', ImageType),
    ('tiling', ImageTiling),
    ('usage', ImageUsageFlags),
    ('flags', ImageCreateFlags),
)

QueueFamilyProperties2 = define_struct('QueueFamilyProperties2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('queue_family_properties', QueueFamilyProperties),
)

PhysicalDeviceMemoryProperties2 = define_struct('PhysicalDeviceMemoryProperties2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory_properties', PhysicalDeviceMemoryProperties),
)

SparseImageFormatProperties2 = define_struct('SparseImageFormatProperties2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('properties', SparseImageFormatProperties),
)

PhysicalDeviceSparseImageFormatInfo2 = define_struct('PhysicalDeviceSparseImageFormatInfo2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('format', Format),
    ('type', ImageType),
    ('samples', SampleCountFlagBits),
    ('usage', ImageUsageFlags),
    ('tiling', ImageTiling),
)

PhysicalDevicePointClippingProperties = define_struct('PhysicalDevicePointClippingProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('point_clipping_behavior', PointClippingBehavior),
)

InputAttachmentAspectReference = define_struct('InputAttachmentAspectReference', 
    ('subpass', c_uint32),
    ('input_attachment_index', c_uint32),
    ('aspect_mask', ImageAspectFlags),
)

RenderPassInputAttachmentAspectCreateInfo = define_struct('RenderPassInputAttachmentAspectCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('aspect_reference_count', c_uint32),
    ('aspect_references', POINTER(InputAttachmentAspectReference)),
)

ImageViewUsageCreateInfo = define_struct('ImageViewUsageCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('usage', ImageUsageFlags),
)

PipelineTessellationDomainOriginStateCreateInfo = define_struct('PipelineTessellationDomainOriginStateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('domain_origin', TessellationDomainOrigin),
)

RenderPassMultiviewCreateInfo = define_struct('RenderPassMultiviewCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('subpass_count', c_uint32),
    ('view_masks', POINTER(c_uint32)),
    ('dependency_count', c_uint32),
    ('view_offsets', POINTER(c_int32)),
    ('correlation_mask_count', c_uint32),
    ('correlation_masks', POINTER(c_uint32)),
)

PhysicalDeviceMultiviewFeatures = define_struct('PhysicalDeviceMultiviewFeatures', 
    ('type', StructureType),
    ('next', c_void_p),
    ('multiview', Bool32),
    ('multiview_geometry_shader', Bool32),
    ('multiview_tessellation_shader', Bool32),
)

PhysicalDeviceMultiviewProperties = define_struct('PhysicalDeviceMultiviewProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_multiview_view_count', c_uint32),
    ('max_multiview_instance_index', c_uint32),
)

PhysicalDeviceVariablePointerFeatures = define_struct('PhysicalDeviceVariablePointerFeatures', 
    ('type', StructureType),
    ('next', c_void_p),
    ('variable_pointers_storage_buffer', Bool32),
    ('variable_pointers', Bool32),
)

PhysicalDeviceProtectedMemoryFeatures = define_struct('PhysicalDeviceProtectedMemoryFeatures', 
    ('type', StructureType),
    ('next', c_void_p),
    ('protected_memory', Bool32),
)

PhysicalDeviceProtectedMemoryProperties = define_struct('PhysicalDeviceProtectedMemoryProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('protected_noFault', Bool32),
)

DeviceQueueInfo2 = define_struct('DeviceQueueInfo2', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DeviceQueueCreateFlags),
    ('queue_family_index', c_uint32),
    ('queue_index', c_uint32),
)

ProtectedSubmitInfo = define_struct('ProtectedSubmitInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('protected_submit', Bool32),
)

SamplerYcbcrConversionCreateInfo = define_struct('SamplerYcbcrConversionCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('format', Format),
    ('ycbcr_model', SamplerYcbcrModelConversion),
    ('ycbcr_range', SamplerYcbcrRange),
    ('components', ComponentMapping),
    ('x_chroma_offset', ChromaLocation),
    ('y_chroma_offset', ChromaLocation),
    ('chroma_filter', Filter),
    ('force_explicit_reconstruction', Bool32),
)

SamplerYcbcrConversionInfo = define_struct('SamplerYcbcrConversionInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('conversion', SamplerYcbcrConversion),
)

BindImagePlaneMemoryInfo = define_struct('BindImagePlaneMemoryInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('plane_aspect', ImageAspectFlagBits),
)

ImagePlaneMemoryRequirementsInfo = define_struct('ImagePlaneMemoryRequirementsInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('plane_aspect', ImageAspectFlagBits),
)

PhysicalDeviceSamplerYcbcrConversionFeatures = define_struct('PhysicalDeviceSamplerYcbcrConversionFeatures', 
    ('type', StructureType),
    ('next', c_void_p),
    ('sampler_ycbcr_conversion', Bool32),
)

SamplerYcbcrConversionImageFormatProperties = define_struct('SamplerYcbcrConversionImageFormatProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('combined_image_sampler_descriptor_count', c_uint32),
)

DescriptorUpdateTemplateEntry = define_struct('DescriptorUpdateTemplateEntry', 
    ('dst_binding', c_uint32),
    ('dst_array_element', c_uint32),
    ('descriptor_count', c_uint32),
    ('descriptor_type', DescriptorType),
    ('offset', c_size_t),
    ('stride', c_size_t),
)

DescriptorUpdateTemplateCreateInfo = define_struct('DescriptorUpdateTemplateCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DescriptorUpdateTemplateCreateFlags),
    ('descriptor_update_entry_count', c_uint32),
    ('descriptor_update_entries', POINTER(DescriptorUpdateTemplateEntry)),
    ('template_type', DescriptorUpdateTemplateType),
    ('descriptor_set_layout', DescriptorSetLayout),
    ('pipeline_bind_point', PipelineBindPoint),
    ('pipeline_layout', PipelineLayout),
    ('set', c_uint32),
)

ExternalMemoryProperties = define_struct('ExternalMemoryProperties', 
    ('external_memory_features', ExternalMemoryFeatureFlags),
    ('export_from_imported_handle_types', ExternalMemoryHandleTypeFlags),
    ('compatible_handle_types', ExternalMemoryHandleTypeFlags),
)

PhysicalDeviceExternalImageFormatInfo = define_struct('PhysicalDeviceExternalImageFormatInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_type', ExternalMemoryHandleTypeFlagBits),
)

ExternalImageFormatProperties = define_struct('ExternalImageFormatProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('external_memory_properties', ExternalMemoryProperties),
)

PhysicalDeviceExternalBufferInfo = define_struct('PhysicalDeviceExternalBufferInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', BufferCreateFlags),
    ('usage', BufferUsageFlags),
    ('handle_type', ExternalMemoryHandleTypeFlagBits),
)

ExternalBufferProperties = define_struct('ExternalBufferProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('external_memory_properties', ExternalMemoryProperties),
)

PhysicalDeviceIDProperties = define_struct('PhysicalDeviceIDProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('device_UUID', c_int8 * UUID_SIZE),
    ('driver_UUID', c_int8 * UUID_SIZE),
    ('device_LUID', c_int8 * LUID_SIZE),
    ('device_node_mask', c_uint32),
    ('device_LUIDValid', Bool32),
)

ExternalMemoryImageCreateInfo = define_struct('ExternalMemoryImageCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_types', ExternalMemoryHandleTypeFlags),
)

ExternalMemoryBufferCreateInfo = define_struct('ExternalMemoryBufferCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_types', ExternalMemoryHandleTypeFlags),
)

ExportMemoryAllocateInfo = define_struct('ExportMemoryAllocateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_types', ExternalMemoryHandleTypeFlags),
)

PhysicalDeviceExternalFenceInfo = define_struct('PhysicalDeviceExternalFenceInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_type', ExternalFenceHandleTypeFlagBits),
)

ExternalFenceProperties = define_struct('ExternalFenceProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('export_from_imported_handle_types', ExternalFenceHandleTypeFlags),
    ('compatible_handle_types', ExternalFenceHandleTypeFlags),
    ('external_fence_features', ExternalFenceFeatureFlags),
)

ExportFenceCreateInfo = define_struct('ExportFenceCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_types', ExternalFenceHandleTypeFlags),
)

ExportSemaphoreCreateInfo = define_struct('ExportSemaphoreCreateInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_types', ExternalSemaphoreHandleTypeFlags),
)

PhysicalDeviceExternalSemaphoreInfo = define_struct('PhysicalDeviceExternalSemaphoreInfo', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_type', ExternalSemaphoreHandleTypeFlagBits),
)

ExternalSemaphoreProperties = define_struct('ExternalSemaphoreProperties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('export_from_imported_handle_types', ExternalSemaphoreHandleTypeFlags),
    ('compatible_handle_types', ExternalSemaphoreHandleTypeFlags),
    ('external_semaphore_features', ExternalSemaphoreFeatureFlags),
)

PhysicalDeviceMaintenance3Properties = define_struct('PhysicalDeviceMaintenance3Properties', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_per_set_descriptors', c_uint32),
    ('max_memory_allocation_size', DeviceSize),
)

DescriptorSetLayoutSupport = define_struct('DescriptorSetLayoutSupport', 
    ('type', StructureType),
    ('next', c_void_p),
    ('supported', Bool32),
)

PhysicalDeviceShaderDrawParameterFeatures = define_struct('PhysicalDeviceShaderDrawParameterFeatures', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shader_draw_parameters', Bool32),
)

SurfaceCapabilitiesKHR = define_struct('SurfaceCapabilitiesKHR', 
    ('min_image_count', c_uint32),
    ('max_image_count', c_uint32),
    ('current_extent', Extent2D),
    ('min_image_extent', Extent2D),
    ('max_image_extent', Extent2D),
    ('max_image_array_layers', c_uint32),
    ('supported_transforms', SurfaceTransformFlagsKHR),
    ('current_transform', SurfaceTransformFlagBitsKHR),
    ('supported_composite_alpha', CompositeAlphaFlagsKHR),
    ('supported_usage_flags', ImageUsageFlags),
)

SurfaceFormatKHR = define_struct('SurfaceFormatKHR', 
    ('format', Format),
    ('color_space', ColorSpaceKHR),
)

SwapchainCreateInfoKHR = define_struct('SwapchainCreateInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', SwapchainCreateFlagsKHR),
    ('surface', SurfaceKHR),
    ('min_image_count', c_uint32),
    ('image_format', Format),
    ('image_color_space', ColorSpaceKHR),
    ('image_extent', Extent2D),
    ('image_array_layers', c_uint32),
    ('image_usage', ImageUsageFlags),
    ('image_sharing_mode', SharingMode),
    ('queue_family_index_count', c_uint32),
    ('queue_family_indices', POINTER(c_uint32)),
    ('pre_transform', SurfaceTransformFlagBitsKHR),
    ('composite_alpha', CompositeAlphaFlagBitsKHR),
    ('present_mode', PresentModeKHR),
    ('clipped', Bool32),
    ('old_swapchain', SwapchainKHR),
)

PresentInfoKHR = define_struct('PresentInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('wait_semaphore_count', c_uint32),
    ('wait_semaphores', POINTER(Semaphore)),
    ('swapchain_count', c_uint32),
    ('swapchains', POINTER(SwapchainKHR)),
    ('image_indices', POINTER(c_uint32)),
    ('results', POINTER(Result)),
)

ImageSwapchainCreateInfoKHR = define_struct('ImageSwapchainCreateInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('swapchain', SwapchainKHR),
)

BindImageMemorySwapchainInfoKHR = define_struct('BindImageMemorySwapchainInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('swapchain', SwapchainKHR),
    ('image_index', c_uint32),
)

AcquireNextImageInfoKHR = define_struct('AcquireNextImageInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('swapchain', SwapchainKHR),
    ('timeout', c_uint64),
    ('semaphore', Semaphore),
    ('fence', Fence),
    ('device_mask', c_uint32),
)

DeviceGroupPresentCapabilitiesKHR = define_struct('DeviceGroupPresentCapabilitiesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('present_mask', c_uint32 * MAX_DEVICE_GROUP_SIZE),
    ('modes', DeviceGroupPresentModeFlagsKHR),
)

DeviceGroupPresentInfoKHR = define_struct('DeviceGroupPresentInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('swapchain_count', c_uint32),
    ('device_masks', POINTER(c_uint32)),
    ('mode', DeviceGroupPresentModeFlagBitsKHR),
)

DeviceGroupSwapchainCreateInfoKHR = define_struct('DeviceGroupSwapchainCreateInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('modes', DeviceGroupPresentModeFlagsKHR),
)

DisplayPropertiesKHR = define_struct('DisplayPropertiesKHR', 
    ('display', DisplayKHR),
    ('display_name', c_char_p),
    ('physical_dimensions', Extent2D),
    ('physical_resolution', Extent2D),
    ('supported_transforms', SurfaceTransformFlagsKHR),
    ('plane_reorder_possible', Bool32),
    ('persistent_content', Bool32),
)

DisplayModeParametersKHR = define_struct('DisplayModeParametersKHR', 
    ('visible_region', Extent2D),
    ('refresh_rate', c_uint32),
)

DisplayModePropertiesKHR = define_struct('DisplayModePropertiesKHR', 
    ('display_mode', DisplayModeKHR),
    ('parameters', DisplayModeParametersKHR),
)

DisplayModeCreateInfoKHR = define_struct('DisplayModeCreateInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DisplayModeCreateFlagsKHR),
    ('parameters', DisplayModeParametersKHR),
)

DisplayPlaneCapabilitiesKHR = define_struct('DisplayPlaneCapabilitiesKHR', 
    ('supported_alpha', DisplayPlaneAlphaFlagsKHR),
    ('min_src_position', Offset2D),
    ('max_src_position', Offset2D),
    ('min_src_extent', Extent2D),
    ('max_src_extent', Extent2D),
    ('min_dst_position', Offset2D),
    ('max_dst_position', Offset2D),
    ('min_dst_extent', Extent2D),
    ('max_dst_extent', Extent2D),
)

DisplayPlanePropertiesKHR = define_struct('DisplayPlanePropertiesKHR', 
    ('current_display', DisplayKHR),
    ('current_stack_index', c_uint32),
)

DisplaySurfaceCreateInfoKHR = define_struct('DisplaySurfaceCreateInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DisplaySurfaceCreateFlagsKHR),
    ('display_mode', DisplayModeKHR),
    ('plane_index', c_uint32),
    ('plane_stack_index', c_uint32),
    ('transform', SurfaceTransformFlagBitsKHR),
    ('global_alpha', c_float),
    ('alpha_mode', DisplayPlaneAlphaFlagBitsKHR),
    ('image_extent', Extent2D),
)

DisplayPresentInfoKHR = define_struct('DisplayPresentInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('src_rect', Rect2D),
    ('dst_rect', Rect2D),
    ('persistent', Bool32),
)

ImportMemoryFdInfoKHR = define_struct('ImportMemoryFdInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_type', ExternalMemoryHandleTypeFlagBits),
    ('fd', c_int32),
)

MemoryFdPropertiesKHR = define_struct('MemoryFdPropertiesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory_type_bits', c_uint32),
)

MemoryGetFdInfoKHR = define_struct('MemoryGetFdInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory', DeviceMemory),
    ('handle_type', ExternalMemoryHandleTypeFlagBits),
)

ImportSemaphoreFdInfoKHR = define_struct('ImportSemaphoreFdInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('semaphore', Semaphore),
    ('flags', SemaphoreImportFlags),
    ('handle_type', ExternalSemaphoreHandleTypeFlagBits),
    ('fd', c_int32),
)

SemaphoreGetFdInfoKHR = define_struct('SemaphoreGetFdInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('semaphore', Semaphore),
    ('handle_type', ExternalSemaphoreHandleTypeFlagBits),
)

PhysicalDevicePushDescriptorPropertiesKHR = define_struct('PhysicalDevicePushDescriptorPropertiesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_push_descriptors', c_uint32),
)

RectLayerKHR = define_struct('RectLayerKHR', 
    ('offset', Offset2D),
    ('extent', Extent2D),
    ('layer', c_uint32),
)

PresentRegionKHR = define_struct('PresentRegionKHR', 
    ('rectangle_count', c_uint32),
    ('rectangles', POINTER(RectLayerKHR)),
)

PresentRegionsKHR = define_struct('PresentRegionsKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('swapchain_count', c_uint32),
    ('regions', POINTER(PresentRegionKHR)),
)

AttachmentDescription2KHR = define_struct('AttachmentDescription2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', AttachmentDescriptionFlags),
    ('format', Format),
    ('samples', SampleCountFlagBits),
    ('load_op', AttachmentLoadOp),
    ('store_op', AttachmentStoreOp),
    ('stencil_load_op', AttachmentLoadOp),
    ('stencil_store_op', AttachmentStoreOp),
    ('initial_layout', ImageLayout),
    ('final_layout', ImageLayout),
)

AttachmentReference2KHR = define_struct('AttachmentReference2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('attachment', c_uint32),
    ('layout', ImageLayout),
    ('aspect_mask', ImageAspectFlags),
)

SubpassDescription2KHR = define_struct('SubpassDescription2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', SubpassDescriptionFlags),
    ('pipeline_bind_point', PipelineBindPoint),
    ('view_mask', c_uint32),
    ('input_attachment_count', c_uint32),
    ('input_attachments', POINTER(AttachmentReference2KHR)),
    ('color_attachment_count', c_uint32),
    ('color_attachments', POINTER(AttachmentReference2KHR)),
    ('resolve_attachments', POINTER(AttachmentReference2KHR)),
    ('depth_stencil_attachment', POINTER(AttachmentReference2KHR)),
    ('preserve_attachment_count', c_uint32),
    ('preserve_attachments', POINTER(c_uint32)),
)

SubpassDependency2KHR = define_struct('SubpassDependency2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('src_subpass', c_uint32),
    ('dst_subpass', c_uint32),
    ('src_stage_mask', PipelineStageFlags),
    ('dst_stage_mask', PipelineStageFlags),
    ('src_access_mask', AccessFlags),
    ('dst_access_mask', AccessFlags),
    ('dependency_flags', DependencyFlags),
    ('view_offset', c_int32),
)

RenderPassCreateInfo2KHR = define_struct('RenderPassCreateInfo2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', RenderPassCreateFlags),
    ('attachment_count', c_uint32),
    ('attachments', POINTER(AttachmentDescription2KHR)),
    ('subpass_count', c_uint32),
    ('subpasses', POINTER(SubpassDescription2KHR)),
    ('dependency_count', c_uint32),
    ('dependencies', POINTER(SubpassDependency2KHR)),
    ('correlated_view_mask_count', c_uint32),
    ('correlated_view_masks', POINTER(c_uint32)),
)

SubpassBeginInfoKHR = define_struct('SubpassBeginInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('contents', SubpassContents),
)

SubpassEndInfoKHR = define_struct('SubpassEndInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
)

SharedPresentSurfaceCapabilitiesKHR = define_struct('SharedPresentSurfaceCapabilitiesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shared_present_supported_usage_flags', ImageUsageFlags),
)

ImportFenceFdInfoKHR = define_struct('ImportFenceFdInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('fence', Fence),
    ('flags', FenceImportFlags),
    ('handle_type', ExternalFenceHandleTypeFlagBits),
    ('fd', c_int32),
)

FenceGetFdInfoKHR = define_struct('FenceGetFdInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('fence', Fence),
    ('handle_type', ExternalFenceHandleTypeFlagBits),
)

PhysicalDeviceSurfaceInfo2KHR = define_struct('PhysicalDeviceSurfaceInfo2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('surface', SurfaceKHR),
)

SurfaceCapabilities2KHR = define_struct('SurfaceCapabilities2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('surface_capabilities', SurfaceCapabilitiesKHR),
)

SurfaceFormat2KHR = define_struct('SurfaceFormat2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('surface_format', SurfaceFormatKHR),
)

DisplayProperties2KHR = define_struct('DisplayProperties2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('display_properties', DisplayPropertiesKHR),
)

DisplayPlaneProperties2KHR = define_struct('DisplayPlaneProperties2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('display_plane_properties', DisplayPlanePropertiesKHR),
)

DisplayModeProperties2KHR = define_struct('DisplayModeProperties2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('display_mode_properties', DisplayModePropertiesKHR),
)

DisplayPlaneInfo2KHR = define_struct('DisplayPlaneInfo2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('mode', DisplayModeKHR),
    ('plane_index', c_uint32),
)

DisplayPlaneCapabilities2KHR = define_struct('DisplayPlaneCapabilities2KHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('capabilities', DisplayPlaneCapabilitiesKHR),
)

ImageFormatListCreateInfoKHR = define_struct('ImageFormatListCreateInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('view_format_count', c_uint32),
    ('view_formats', POINTER(Format)),
)

PhysicalDevice8BitStorageFeaturesKHR = define_struct('PhysicalDevice8BitStorageFeaturesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('storage_buffer8_bit_access', Bool32),
    ('uniform_and_storage_buffer8_bit_access', Bool32),
    ('storage_push_constant8', Bool32),
)

PhysicalDeviceShaderAtomicInt64FeaturesKHR = define_struct('PhysicalDeviceShaderAtomicInt64FeaturesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shader_buffer_int64_atomics', Bool32),
    ('shader_shared_int64_atomics', Bool32),
)

ConformanceVersionKHR = define_struct('ConformanceVersionKHR', 
    ('major', c_int8),
    ('minor', c_int8),
    ('subminor', c_int8),
    ('patch', c_int8),
)

PhysicalDeviceDriverPropertiesKHR = define_struct('PhysicalDeviceDriverPropertiesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('driver_ID', DriverIdKHR),
    ('driver_name', c_char * MAX_DRIVER_NAME_SIZE_KHR),
    ('driver_info', c_char * MAX_DRIVER_INFO_SIZE_KHR),
    ('conformance_version', ConformanceVersionKHR),
)

PhysicalDeviceVulkanMemoryModelFeaturesKHR = define_struct('PhysicalDeviceVulkanMemoryModelFeaturesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('vulkan_memory_model', Bool32),
    ('vulkan_memory_model_device_scope', Bool32),
)

DebugReportCallbackCreateInfoEXT = define_struct('DebugReportCallbackCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DebugReportFlagsEXT),
    ('callback', FnDebugReportCallbackEXT),
    ('user_data', c_void_p),
)

PipelineRasterizationStateRasterizationOrderAMD = define_struct('PipelineRasterizationStateRasterizationOrderAMD', 
    ('type', StructureType),
    ('next', c_void_p),
    ('rasterization_order', RasterizationOrderAMD),
)

DebugMarkerObjectNameInfoEXT = define_struct('DebugMarkerObjectNameInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('object_type', DebugReportObjectTypeEXT),
    ('object', c_uint64),
    ('object_name', c_char_p),
)

DebugMarkerObjectTagInfoEXT = define_struct('DebugMarkerObjectTagInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('object_type', DebugReportObjectTypeEXT),
    ('object', c_uint64),
    ('tag_name', c_uint64),
    ('tag_size', c_size_t),
    ('tag', c_void_p),
)

DebugMarkerMarkerInfoEXT = define_struct('DebugMarkerMarkerInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('marker_name', c_char_p),
    ('color', c_float * 4),
)

DedicatedAllocationImageCreateInfoNV = define_struct('DedicatedAllocationImageCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('dedicated_allocation', Bool32),
)

DedicatedAllocationBufferCreateInfoNV = define_struct('DedicatedAllocationBufferCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('dedicated_allocation', Bool32),
)

DedicatedAllocationMemoryAllocateInfoNV = define_struct('DedicatedAllocationMemoryAllocateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('image', Image),
    ('buffer', Buffer),
)

PhysicalDeviceTransformFeedbackFeaturesEXT = define_struct('PhysicalDeviceTransformFeedbackFeaturesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('transform_feedback', Bool32),
    ('geometry_streams', Bool32),
)

PhysicalDeviceTransformFeedbackPropertiesEXT = define_struct('PhysicalDeviceTransformFeedbackPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_transform_feedback_streams', c_uint32),
    ('max_transform_feedback_buffers', c_uint32),
    ('max_transform_feedback_buffer_size', DeviceSize),
    ('max_transform_feedback_stream_data_size', c_uint32),
    ('max_transform_feedback_buffer_data_size', c_uint32),
    ('max_transform_feedback_buffer_data_stride', c_uint32),
    ('transform_feedback_queries', Bool32),
    ('transform_feedback_streams_lines_triangles', Bool32),
    ('transform_feedback_rasterization_stream_select', Bool32),
    ('transform_feedback_draw', Bool32),
)

PipelineRasterizationStateStreamCreateInfoEXT = define_struct('PipelineRasterizationStateStreamCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineRasterizationStateStreamCreateFlagsEXT),
    ('rasterization_stream', c_uint32),
)

TextureLODGatherFormatPropertiesAMD = define_struct('TextureLODGatherFormatPropertiesAMD', 
    ('type', StructureType),
    ('next', c_void_p),
    ('supports_texture_gather_LODBias_AMD', Bool32),
)

ShaderResourceUsageAMD = define_struct('ShaderResourceUsageAMD', 
    ('num_used_vgprs', c_uint32),
    ('num_used_sgprs', c_uint32),
    ('lds_size_per_local_work_group', c_uint32),
    ('lds_usage_size_inBytes', c_size_t),
    ('scratch_mem_usage_inBytes', c_size_t),
)

ShaderStatisticsInfoAMD = define_struct('ShaderStatisticsInfoAMD', 
    ('shader_stage_mask', ShaderStageFlags),
    ('resource_usage', ShaderResourceUsageAMD),
    ('num_physical_vgprs', c_uint32),
    ('num_physical_sgprs', c_uint32),
    ('num_available_vgprs', c_uint32),
    ('num_available_sgprs', c_uint32),
    ('compute_work_group_size', c_uint32 * 3),
)

PhysicalDeviceCornerSampledImageFeaturesNV = define_struct('PhysicalDeviceCornerSampledImageFeaturesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('corner_sampled_image', Bool32),
)

ExternalImageFormatPropertiesNV = define_struct('ExternalImageFormatPropertiesNV', 
    ('image_format_properties', ImageFormatProperties),
    ('external_memory_features', ExternalMemoryFeatureFlagsNV),
    ('export_from_imported_handle_types', ExternalMemoryHandleTypeFlagsNV),
    ('compatible_handle_types', ExternalMemoryHandleTypeFlagsNV),
)

ExternalMemoryImageCreateInfoNV = define_struct('ExternalMemoryImageCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_types', ExternalMemoryHandleTypeFlagsNV),
)

ExportMemoryAllocateInfoNV = define_struct('ExportMemoryAllocateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_types', ExternalMemoryHandleTypeFlagsNV),
)

ValidationFlagsEXT = define_struct('ValidationFlagsEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('disabled_validation_check_count', c_uint32),
    ('disabled_validation_checks', POINTER(ValidationCheckEXT)),
)

ImageViewASTCDecodeModeEXT = define_struct('ImageViewASTCDecodeModeEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('decode_mode', Format),
)

PhysicalDeviceASTCDecodeFeaturesEXT = define_struct('PhysicalDeviceASTCDecodeFeaturesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('decode_mode_shared_exponent', Bool32),
)

ConditionalRenderingBeginInfoEXT = define_struct('ConditionalRenderingBeginInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('buffer', Buffer),
    ('offset', DeviceSize),
    ('flags', ConditionalRenderingFlagsEXT),
)

PhysicalDeviceConditionalRenderingFeaturesEXT = define_struct('PhysicalDeviceConditionalRenderingFeaturesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('conditional_rendering', Bool32),
    ('inherited_conditional_rendering', Bool32),
)

CommandBufferInheritanceConditionalRenderingInfoEXT = define_struct('CommandBufferInheritanceConditionalRenderingInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('conditional_rendering_enable', Bool32),
)

DeviceGeneratedCommandsFeaturesNVX = define_struct('DeviceGeneratedCommandsFeaturesNVX', 
    ('type', StructureType),
    ('next', c_void_p),
    ('compute_binding_point_support', Bool32),
)

DeviceGeneratedCommandsLimitsNVX = define_struct('DeviceGeneratedCommandsLimitsNVX', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_indirect_commands_layout_token_count', c_uint32),
    ('max_object_entry_counts', c_uint32),
    ('min_sequence_count_buffer_offset_alignment', c_uint32),
    ('min_sequence_index_buffer_offset_alignment', c_uint32),
    ('min_commands_token_buffer_offset_alignment', c_uint32),
)

IndirectCommandsTokenNVX = define_struct('IndirectCommandsTokenNVX', 
    ('token_type', IndirectCommandsTokenTypeNVX),
    ('buffer', Buffer),
    ('offset', DeviceSize),
)

IndirectCommandsLayoutTokenNVX = define_struct('IndirectCommandsLayoutTokenNVX', 
    ('token_type', IndirectCommandsTokenTypeNVX),
    ('binding_unit', c_uint32),
    ('dynamic_count', c_uint32),
    ('divisor', c_uint32),
)

IndirectCommandsLayoutCreateInfoNVX = define_struct('IndirectCommandsLayoutCreateInfoNVX', 
    ('type', StructureType),
    ('next', c_void_p),
    ('pipeline_bind_point', PipelineBindPoint),
    ('flags', IndirectCommandsLayoutUsageFlagsNVX),
    ('token_count', c_uint32),
    ('tokens', POINTER(IndirectCommandsLayoutTokenNVX)),
)

CmdProcessCommandsInfoNVX = define_struct('CmdProcessCommandsInfoNVX', 
    ('type', StructureType),
    ('next', c_void_p),
    ('object_table', ObjectTableNVX),
    ('indirect_commands_layout', IndirectCommandsLayoutNVX),
    ('indirect_commands_token_count', c_uint32),
    ('indirect_commands_tokens', POINTER(IndirectCommandsTokenNVX)),
    ('max_sequences_count', c_uint32),
    ('target_command_buffer', CommandBuffer),
    ('sequences_count_buffer', Buffer),
    ('sequences_count_offset', DeviceSize),
    ('sequences_index_buffer', Buffer),
    ('sequences_index_offset', DeviceSize),
)

CmdReserveSpaceForCommandsInfoNVX = define_struct('CmdReserveSpaceForCommandsInfoNVX', 
    ('type', StructureType),
    ('next', c_void_p),
    ('object_table', ObjectTableNVX),
    ('indirect_commands_layout', IndirectCommandsLayoutNVX),
    ('max_sequences_count', c_uint32),
)

ObjectTableCreateInfoNVX = define_struct('ObjectTableCreateInfoNVX', 
    ('type', StructureType),
    ('next', c_void_p),
    ('object_count', c_uint32),
    ('object_entry_types', POINTER(ObjectEntryTypeNVX)),
    ('object_entry_counts', POINTER(c_uint32)),
    ('object_entry_usage_flags', POINTER(ObjectEntryUsageFlagsNVX)),
    ('max_uniform_buffers_per_descriptor', c_uint32),
    ('max_storage_buffers_per_descriptor', c_uint32),
    ('max_storage_images_per_descriptor', c_uint32),
    ('max_sampled_images_per_descriptor', c_uint32),
    ('max_pipeline_layouts', c_uint32),
)

ObjectTableEntryNVX = define_struct('ObjectTableEntryNVX', 
    ('type', ObjectEntryTypeNVX),
    ('flags', ObjectEntryUsageFlagsNVX),
)

ObjectTablePipelineEntryNVX = define_struct('ObjectTablePipelineEntryNVX', 
    ('type', ObjectEntryTypeNVX),
    ('flags', ObjectEntryUsageFlagsNVX),
    ('pipeline', Pipeline),
)

ObjectTableDescriptorSetEntryNVX = define_struct('ObjectTableDescriptorSetEntryNVX', 
    ('type', ObjectEntryTypeNVX),
    ('flags', ObjectEntryUsageFlagsNVX),
    ('pipeline_layout', PipelineLayout),
    ('descriptor_set', DescriptorSet),
)

ObjectTableVertexBufferEntryNVX = define_struct('ObjectTableVertexBufferEntryNVX', 
    ('type', ObjectEntryTypeNVX),
    ('flags', ObjectEntryUsageFlagsNVX),
    ('buffer', Buffer),
)

ObjectTableIndexBufferEntryNVX = define_struct('ObjectTableIndexBufferEntryNVX', 
    ('type', ObjectEntryTypeNVX),
    ('flags', ObjectEntryUsageFlagsNVX),
    ('buffer', Buffer),
    ('index_type', IndexType),
)

ObjectTablePushConstantEntryNVX = define_struct('ObjectTablePushConstantEntryNVX', 
    ('type', ObjectEntryTypeNVX),
    ('flags', ObjectEntryUsageFlagsNVX),
    ('pipeline_layout', PipelineLayout),
    ('stage_flags', ShaderStageFlags),
)

ViewportWScalingNV = define_struct('ViewportWScalingNV', 
    ('xcoeff', c_float),
    ('ycoeff', c_float),
)

PipelineViewportWScalingStateCreateInfoNV = define_struct('PipelineViewportWScalingStateCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('viewport_WScaling_enable', Bool32),
    ('viewport_count', c_uint32),
    ('viewport_WScalings', POINTER(ViewportWScalingNV)),
)

SurfaceCapabilities2EXT = define_struct('SurfaceCapabilities2EXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('min_image_count', c_uint32),
    ('max_image_count', c_uint32),
    ('current_extent', Extent2D),
    ('min_image_extent', Extent2D),
    ('max_image_extent', Extent2D),
    ('max_image_array_layers', c_uint32),
    ('supported_transforms', SurfaceTransformFlagsKHR),
    ('current_transform', SurfaceTransformFlagBitsKHR),
    ('supported_composite_alpha', CompositeAlphaFlagsKHR),
    ('supported_usage_flags', ImageUsageFlags),
    ('supported_surface_counters', SurfaceCounterFlagsEXT),
)

DisplayPowerInfoEXT = define_struct('DisplayPowerInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('power_state', DisplayPowerStateEXT),
)

DeviceEventInfoEXT = define_struct('DeviceEventInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('device_event', DeviceEventTypeEXT),
)

DisplayEventInfoEXT = define_struct('DisplayEventInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('display_event', DisplayEventTypeEXT),
)

SwapchainCounterCreateInfoEXT = define_struct('SwapchainCounterCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('surface_counters', SurfaceCounterFlagsEXT),
)

RefreshCycleDurationGOOGLE = define_struct('RefreshCycleDurationGOOGLE', 
    ('refresh_duration', c_uint64),
)

PastPresentationTimingGOOGLE = define_struct('PastPresentationTimingGOOGLE', 
    ('present_ID', c_uint32),
    ('desired_present_time', c_uint64),
    ('actual_present_time', c_uint64),
    ('earliest_present_time', c_uint64),
    ('present_margin', c_uint64),
)

PresentTimeGOOGLE = define_struct('PresentTimeGOOGLE', 
    ('present_ID', c_uint32),
    ('desired_present_time', c_uint64),
)

PresentTimesInfoGOOGLE = define_struct('PresentTimesInfoGOOGLE', 
    ('type', StructureType),
    ('next', c_void_p),
    ('swapchain_count', c_uint32),
    ('times', POINTER(PresentTimeGOOGLE)),
)

PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = define_struct('PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX', 
    ('type', StructureType),
    ('next', c_void_p),
    ('per_view_position_all_components', Bool32),
)

ViewportSwizzleNV = define_struct('ViewportSwizzleNV', 
    ('x', ViewportCoordinateSwizzleNV),
    ('y', ViewportCoordinateSwizzleNV),
    ('z', ViewportCoordinateSwizzleNV),
    ('w', ViewportCoordinateSwizzleNV),
)

PipelineViewportSwizzleStateCreateInfoNV = define_struct('PipelineViewportSwizzleStateCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineViewportSwizzleStateCreateFlagsNV),
    ('viewport_count', c_uint32),
    ('viewport_swizzles', POINTER(ViewportSwizzleNV)),
)

PhysicalDeviceDiscardRectanglePropertiesEXT = define_struct('PhysicalDeviceDiscardRectanglePropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_discard_rectangles', c_uint32),
)

PipelineDiscardRectangleStateCreateInfoEXT = define_struct('PipelineDiscardRectangleStateCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineDiscardRectangleStateCreateFlagsEXT),
    ('discard_rectangle_mode', DiscardRectangleModeEXT),
    ('discard_rectangle_count', c_uint32),
    ('discard_rectangles', POINTER(Rect2D)),
)

PhysicalDeviceConservativeRasterizationPropertiesEXT = define_struct('PhysicalDeviceConservativeRasterizationPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('primitive_overestimation_size', c_float),
    ('max_extra_primitive_overestimation_size', c_float),
    ('extra_primitive_overestimation_size_granularity', c_float),
    ('primitive_underestimation', Bool32),
    ('conservative_point_and_line_rasterization', Bool32),
    ('degenerate_triangles_rasterized', Bool32),
    ('degenerate_lines_rasterized', Bool32),
    ('fully_covered_fragment_shader_input_variable', Bool32),
    ('conservative_rasterization_post_depth_coverage', Bool32),
)

PipelineRasterizationConservativeStateCreateInfoEXT = define_struct('PipelineRasterizationConservativeStateCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineRasterizationConservativeStateCreateFlagsEXT),
    ('conservative_rasterization_mode', ConservativeRasterizationModeEXT),
    ('extra_primitive_overestimation_size', c_float),
)

XYColorEXT = define_struct('XYColorEXT', 
    ('x', c_float),
    ('y', c_float),
)

HdrMetadataEXT = define_struct('HdrMetadataEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('display_primary_red', XYColorEXT),
    ('display_primary_green', XYColorEXT),
    ('display_primary_blue', XYColorEXT),
    ('white_point', XYColorEXT),
    ('max_luminance', c_float),
    ('min_luminance', c_float),
    ('max_content_light_level', c_float),
    ('max_frame_average_light_level', c_float),
)

DebugUtilsObjectNameInfoEXT = define_struct('DebugUtilsObjectNameInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('object_type', ObjectType),
    ('object_handle', c_uint64),
    ('object_name', c_char_p),
)

DebugUtilsObjectTagInfoEXT = define_struct('DebugUtilsObjectTagInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('object_type', ObjectType),
    ('object_handle', c_uint64),
    ('tag_name', c_uint64),
    ('tag_size', c_size_t),
    ('tag', c_void_p),
)

DebugUtilsLabelEXT = define_struct('DebugUtilsLabelEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('label_name', c_char_p),
    ('color', c_float * 4),
)

DebugUtilsMessengerCallbackDataEXT = define_struct('DebugUtilsMessengerCallbackDataEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DebugUtilsMessengerCallbackDataFlagsEXT),
    ('message_idName', c_char_p),
    ('message_idNumber', c_int32),
    ('message', c_char_p),
    ('queue_label_count', c_uint32),
    ('queue_labels', POINTER(DebugUtilsLabelEXT)),
    ('cmd_buf_label_count', c_uint32),
    ('cmd_buf_labels', POINTER(DebugUtilsLabelEXT)),
    ('object_count', c_uint32),
    ('objects', POINTER(DebugUtilsObjectNameInfoEXT)),
)

FnDebugUtilsMessengerCallbackEXT = FUNCTYPE(Bool32, DebugUtilsMessageSeverityFlagBitsEXT, DebugUtilsMessageTypeFlagsEXT, POINTER(DebugUtilsMessengerCallbackDataEXT), c_void_p)

DebugUtilsMessengerCreateInfoEXT = define_struct('DebugUtilsMessengerCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', DebugUtilsMessengerCreateFlagsEXT),
    ('message_severity', DebugUtilsMessageSeverityFlagsEXT),
    ('message_type', DebugUtilsMessageTypeFlagsEXT),
    ('user_callback', FnDebugUtilsMessengerCallbackEXT),
    ('user_data', c_void_p),
)

SamplerReductionModeCreateInfoEXT = define_struct('SamplerReductionModeCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('reduction_mode', SamplerReductionModeEXT),
)

PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = define_struct('PhysicalDeviceSamplerFilterMinmaxPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('filter_minmax_single_component_formats', Bool32),
    ('filter_minmax_image_component_mapping', Bool32),
)

PhysicalDeviceInlineUniformBlockFeaturesEXT = define_struct('PhysicalDeviceInlineUniformBlockFeaturesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('inline_uniform_block', Bool32),
    ('descriptor_binding_inline_uniform_block_update_after_bind', Bool32),
)

PhysicalDeviceInlineUniformBlockPropertiesEXT = define_struct('PhysicalDeviceInlineUniformBlockPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_inline_uniform_block_size', c_uint32),
    ('max_per_stage_descriptor_inline_uniform_blocks', c_uint32),
    ('max_per_stage_descriptor_update_after_bind_inline_uniform_blocks', c_uint32),
    ('max_descriptor_set_inline_uniform_blocks', c_uint32),
    ('max_descriptor_set_update_after_bind_inline_uniform_blocks', c_uint32),
)

WriteDescriptorSetInlineUniformBlockEXT = define_struct('WriteDescriptorSetInlineUniformBlockEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('data_size', c_uint32),
    ('data', c_void_p),
)

DescriptorPoolInlineUniformBlockCreateInfoEXT = define_struct('DescriptorPoolInlineUniformBlockCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_inline_uniform_block_bindings', c_uint32),
)

SampleLocationEXT = define_struct('SampleLocationEXT', 
    ('x', c_float),
    ('y', c_float),
)

SampleLocationsInfoEXT = define_struct('SampleLocationsInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('sample_locations_per_pixel', SampleCountFlagBits),
    ('sample_location_grid_size', Extent2D),
    ('sample_locations_count', c_uint32),
    ('sample_locations', POINTER(SampleLocationEXT)),
)

AttachmentSampleLocationsEXT = define_struct('AttachmentSampleLocationsEXT', 
    ('attachment_index', c_uint32),
    ('sample_locations_info', SampleLocationsInfoEXT),
)

SubpassSampleLocationsEXT = define_struct('SubpassSampleLocationsEXT', 
    ('subpass_index', c_uint32),
    ('sample_locations_info', SampleLocationsInfoEXT),
)

RenderPassSampleLocationsBeginInfoEXT = define_struct('RenderPassSampleLocationsBeginInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('attachment_initial_sample_locations_count', c_uint32),
    ('attachment_initial_sample_locations', POINTER(AttachmentSampleLocationsEXT)),
    ('post_subpass_sample_locations_count', c_uint32),
    ('post_subpass_sample_locations', POINTER(SubpassSampleLocationsEXT)),
)

PipelineSampleLocationsStateCreateInfoEXT = define_struct('PipelineSampleLocationsStateCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('sample_locations_enable', Bool32),
    ('sample_locations_info', SampleLocationsInfoEXT),
)

PhysicalDeviceSampleLocationsPropertiesEXT = define_struct('PhysicalDeviceSampleLocationsPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('sample_location_sample_counts', SampleCountFlags),
    ('max_sample_location_grid_size', Extent2D),
    ('sample_location_coordinate_range', c_float * 2),
    ('sample_location_sub_pixel_bits', c_uint32),
    ('variable_sample_locations', Bool32),
)

MultisamplePropertiesEXT = define_struct('MultisamplePropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_sample_location_grid_size', Extent2D),
)

PhysicalDeviceBlendOperationAdvancedFeaturesEXT = define_struct('PhysicalDeviceBlendOperationAdvancedFeaturesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('advanced_blend_coherent_operations', Bool32),
)

PhysicalDeviceBlendOperationAdvancedPropertiesEXT = define_struct('PhysicalDeviceBlendOperationAdvancedPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('advanced_blend_max_color_attachments', c_uint32),
    ('advanced_blend_independent_blend', Bool32),
    ('advanced_blend_non_premultiplied_src_color', Bool32),
    ('advanced_blend_non_premultiplied_dst_color', Bool32),
    ('advanced_blend_correlated_overlap', Bool32),
    ('advanced_blend_all_operations', Bool32),
)

PipelineColorBlendAdvancedStateCreateInfoEXT = define_struct('PipelineColorBlendAdvancedStateCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('src_premultiplied', Bool32),
    ('dst_premultiplied', Bool32),
    ('blend_overlap', BlendOverlapEXT),
)

PipelineCoverageToColorStateCreateInfoNV = define_struct('PipelineCoverageToColorStateCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineCoverageToColorStateCreateFlagsNV),
    ('coverage_toColor_enable', Bool32),
    ('coverage_toColor_location', c_uint32),
)

PipelineCoverageModulationStateCreateInfoNV = define_struct('PipelineCoverageModulationStateCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineCoverageModulationStateCreateFlagsNV),
    ('coverage_modulation_mode', CoverageModulationModeNV),
    ('coverage_modulation_table_enable', Bool32),
    ('coverage_modulation_table_count', c_uint32),
    ('coverage_modulation_table', POINTER(c_float)),
)

DrmFormatModifierPropertiesEXT = define_struct('DrmFormatModifierPropertiesEXT', 
    ('drm_format_modifier', c_uint64),
    ('drm_format_modifier_plane_count', c_uint32),
    ('drm_format_modifier_tiling_features', FormatFeatureFlags),
)

DrmFormatModifierPropertiesListEXT = define_struct('DrmFormatModifierPropertiesListEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('drm_format_modifier_count', c_uint32),
    ('drm_format_modifier_properties', POINTER(DrmFormatModifierPropertiesEXT)),
)

PhysicalDeviceImageDrmFormatModifierInfoEXT = define_struct('PhysicalDeviceImageDrmFormatModifierInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('drm_format_modifier', c_uint64),
    ('sharing_mode', SharingMode),
    ('queue_family_index_count', c_uint32),
    ('queue_family_indices', POINTER(c_uint32)),
)

ImageDrmFormatModifierListCreateInfoEXT = define_struct('ImageDrmFormatModifierListCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('drm_format_modifier_count', c_uint32),
    ('drm_format_modifiers', POINTER(c_uint64)),
)

ImageDrmFormatModifierExplicitCreateInfoEXT = define_struct('ImageDrmFormatModifierExplicitCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('drm_format_modifier', c_uint64),
    ('drm_format_modifier_plane_count', c_uint32),
    ('plane_layouts', POINTER(SubresourceLayout)),
)

ImageDrmFormatModifierPropertiesEXT = define_struct('ImageDrmFormatModifierPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('drm_format_modifier', c_uint64),
)

ValidationCacheCreateInfoEXT = define_struct('ValidationCacheCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', ValidationCacheCreateFlagsEXT),
    ('initial_data_size', c_size_t),
    ('initial_data', c_void_p),
)

ShaderModuleValidationCacheCreateInfoEXT = define_struct('ShaderModuleValidationCacheCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('validation_cache', ValidationCacheEXT),
)

DescriptorSetLayoutBindingFlagsCreateInfoEXT = define_struct('DescriptorSetLayoutBindingFlagsCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('binding_count', c_uint32),
    ('binding_flags', POINTER(DescriptorBindingFlagsEXT)),
)

PhysicalDeviceDescriptorIndexingFeaturesEXT = define_struct('PhysicalDeviceDescriptorIndexingFeaturesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shader_input_attachment_array_dynamic_indexing', Bool32),
    ('shader_uniform_texel_buffer_array_dynamic_indexing', Bool32),
    ('shader_storage_texel_buffer_array_dynamic_indexing', Bool32),
    ('shader_uniform_buffer_array_non_uniform_indexing', Bool32),
    ('shader_sampled_image_array_non_uniform_indexing', Bool32),
    ('shader_storage_buffer_array_non_uniform_indexing', Bool32),
    ('shader_storage_image_array_non_uniform_indexing', Bool32),
    ('shader_input_attachment_array_non_uniform_indexing', Bool32),
    ('shader_uniform_texel_buffer_array_non_uniform_indexing', Bool32),
    ('shader_storage_texel_buffer_array_non_uniform_indexing', Bool32),
    ('descriptor_binding_uniform_buffer_update_after_bind', Bool32),
    ('descriptor_binding_sampled_image_update_after_bind', Bool32),
    ('descriptor_binding_storage_image_update_after_bind', Bool32),
    ('descriptor_binding_storage_buffer_update_after_bind', Bool32),
    ('descriptor_binding_uniform_texel_buffer_update_after_bind', Bool32),
    ('descriptor_binding_storage_texel_buffer_update_after_bind', Bool32),
    ('descriptor_binding_update_unused_while_pending', Bool32),
    ('descriptor_binding_partially_bound', Bool32),
    ('descriptor_binding_variable_descriptor_count', Bool32),
    ('runtime_descriptor_array', Bool32),
)

PhysicalDeviceDescriptorIndexingPropertiesEXT = define_struct('PhysicalDeviceDescriptorIndexingPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_update_after_bind_descriptors_inAll_pools', c_uint32),
    ('shader_uniform_buffer_array_non_uniform_indexing_native', Bool32),
    ('shader_sampled_image_array_non_uniform_indexing_native', Bool32),
    ('shader_storage_buffer_array_non_uniform_indexing_native', Bool32),
    ('shader_storage_image_array_non_uniform_indexing_native', Bool32),
    ('shader_input_attachment_array_non_uniform_indexing_native', Bool32),
    ('robust_buffer_access_update_after_bind', Bool32),
    ('quad_divergent_implicit_lod', Bool32),
    ('max_per_stage_descriptor_update_after_bind_samplers', c_uint32),
    ('max_per_stage_descriptor_update_after_bind_uniform_buffers', c_uint32),
    ('max_per_stage_descriptor_update_after_bind_storage_buffers', c_uint32),
    ('max_per_stage_descriptor_update_after_bind_sampled_images', c_uint32),
    ('max_per_stage_descriptor_update_after_bind_storage_images', c_uint32),
    ('max_per_stage_descriptor_update_after_bind_input_attachments', c_uint32),
    ('max_per_stage_update_after_bind_resources', c_uint32),
    ('max_descriptor_set_update_after_bind_samplers', c_uint32),
    ('max_descriptor_set_update_after_bind_uniform_buffers', c_uint32),
    ('max_descriptor_set_update_after_bind_uniform_buffers_dynamic', c_uint32),
    ('max_descriptor_set_update_after_bind_storage_buffers', c_uint32),
    ('max_descriptor_set_update_after_bind_storage_buffers_dynamic', c_uint32),
    ('max_descriptor_set_update_after_bind_sampled_images', c_uint32),
    ('max_descriptor_set_update_after_bind_storage_images', c_uint32),
    ('max_descriptor_set_update_after_bind_input_attachments', c_uint32),
)

DescriptorSetVariableDescriptorCountAllocateInfoEXT = define_struct('DescriptorSetVariableDescriptorCountAllocateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('descriptor_set_count', c_uint32),
    ('descriptor_counts', POINTER(c_uint32)),
)

DescriptorSetVariableDescriptorCountLayoutSupportEXT = define_struct('DescriptorSetVariableDescriptorCountLayoutSupportEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_variable_descriptor_count', c_uint32),
)

ShadingRatePaletteNV = define_struct('ShadingRatePaletteNV', 
    ('shading_rate_palette_entry_count', c_uint32),
    ('shading_rate_palette_entries', POINTER(ShadingRatePaletteEntryNV)),
)

PipelineViewportShadingRateImageStateCreateInfoNV = define_struct('PipelineViewportShadingRateImageStateCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shading_rate_image_enable', Bool32),
    ('viewport_count', c_uint32),
    ('shading_rate_palettes', POINTER(ShadingRatePaletteNV)),
)

PhysicalDeviceShadingRateImageFeaturesNV = define_struct('PhysicalDeviceShadingRateImageFeaturesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shading_rate_image', Bool32),
    ('shading_rate_coarse_sample_order', Bool32),
)

PhysicalDeviceShadingRateImagePropertiesNV = define_struct('PhysicalDeviceShadingRateImagePropertiesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shading_rate_texel_size', Extent2D),
    ('shading_rate_palette_size', c_uint32),
    ('shading_rate_max_coarse_samples', c_uint32),
)

CoarseSampleLocationNV = define_struct('CoarseSampleLocationNV', 
    ('pixel_X', c_uint32),
    ('pixel_Y', c_uint32),
    ('sample', c_uint32),
)

CoarseSampleOrderCustomNV = define_struct('CoarseSampleOrderCustomNV', 
    ('shading_rate', ShadingRatePaletteEntryNV),
    ('sample_count', c_uint32),
    ('sample_location_count', c_uint32),
    ('sample_locations', POINTER(CoarseSampleLocationNV)),
)

PipelineViewportCoarseSampleOrderStateCreateInfoNV = define_struct('PipelineViewportCoarseSampleOrderStateCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('sample_order_type', CoarseSampleOrderTypeNV),
    ('custom_sample_order_count', c_uint32),
    ('custom_sample_orders', POINTER(CoarseSampleOrderCustomNV)),
)

RayTracingShaderGroupCreateInfoNV = define_struct('RayTracingShaderGroupCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('type', RayTracingShaderGroupTypeNV),
    ('general_shader', c_uint32),
    ('closest_hit_shader', c_uint32),
    ('any_hit_shader', c_uint32),
    ('intersection_shader', c_uint32),
)

RayTracingPipelineCreateInfoNV = define_struct('RayTracingPipelineCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', PipelineCreateFlags),
    ('stage_count', c_uint32),
    ('stages', POINTER(PipelineShaderStageCreateInfo)),
    ('group_count', c_uint32),
    ('groups', POINTER(RayTracingShaderGroupCreateInfoNV)),
    ('max_recursion_depth', c_uint32),
    ('layout', PipelineLayout),
    ('base_pipeline_handle', Pipeline),
    ('base_pipeline_index', c_int32),
)

GeometryTrianglesNV = define_struct('GeometryTrianglesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('vertex_data', Buffer),
    ('vertex_offset', DeviceSize),
    ('vertex_count', c_uint32),
    ('vertex_stride', DeviceSize),
    ('vertex_format', Format),
    ('index_data', Buffer),
    ('index_offset', DeviceSize),
    ('index_count', c_uint32),
    ('index_type', IndexType),
    ('transform_data', Buffer),
    ('transform_offset', DeviceSize),
)

GeometryAABBNV = define_struct('GeometryAABBNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('aabb_data', Buffer),
    ('num_AABBs', c_uint32),
    ('stride', c_uint32),
    ('offset', DeviceSize),
)

GeometryDataNV = define_struct('GeometryDataNV', 
    ('triangles', GeometryTrianglesNV),
    ('aabbs', GeometryAABBNV),
)

GeometryNV = define_struct('GeometryNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('geometry_type', GeometryTypeNV),
    ('geometry', GeometryDataNV),
    ('flags', GeometryFlagsNV),
)

AccelerationStructureInfoNV = define_struct('AccelerationStructureInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('type', AccelerationStructureTypeNV),
    ('flags', BuildAccelerationStructureFlagsNV),
    ('instance_count', c_uint32),
    ('geometry_count', c_uint32),
    ('geometries', POINTER(GeometryNV)),
)

AccelerationStructureCreateInfoNV = define_struct('AccelerationStructureCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('compacted_size', DeviceSize),
    ('info', AccelerationStructureInfoNV),
)

BindAccelerationStructureMemoryInfoNV = define_struct('BindAccelerationStructureMemoryInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('acceleration_structure', AccelerationStructureNV),
    ('memory', DeviceMemory),
    ('memory_offset', DeviceSize),
    ('device_index_count', c_uint32),
    ('device_indices', POINTER(c_uint32)),
)

WriteDescriptorSetAccelerationStructureNV = define_struct('WriteDescriptorSetAccelerationStructureNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('acceleration_structure_count', c_uint32),
    ('acceleration_structures', POINTER(AccelerationStructureNV)),
)

AccelerationStructureMemoryRequirementsInfoNV = define_struct('AccelerationStructureMemoryRequirementsInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('type', AccelerationStructureMemoryRequirementsTypeNV),
    ('acceleration_structure', AccelerationStructureNV),
)

PhysicalDeviceRayTracingPropertiesNV = define_struct('PhysicalDeviceRayTracingPropertiesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shader_group_handle_size', c_uint32),
    ('max_recursion_depth', c_uint32),
    ('max_shader_group_stride', c_uint32),
    ('shader_group_base_alignment', c_uint32),
    ('max_geometry_count', c_uint64),
    ('max_instance_count', c_uint64),
    ('max_triangle_count', c_uint64),
    ('max_descriptor_set_acceleration_structures', c_uint32),
)

PhysicalDeviceRepresentativeFragmentTestFeaturesNV = define_struct('PhysicalDeviceRepresentativeFragmentTestFeaturesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('representative_fragment_test', Bool32),
)

PipelineRepresentativeFragmentTestStateCreateInfoNV = define_struct('PipelineRepresentativeFragmentTestStateCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('representative_fragment_test_enable', Bool32),
)

DeviceQueueGlobalPriorityCreateInfoEXT = define_struct('DeviceQueueGlobalPriorityCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('global_priority', QueueGlobalPriorityEXT),
)

ImportMemoryHostPointerInfoEXT = define_struct('ImportMemoryHostPointerInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_type', ExternalMemoryHandleTypeFlagBits),
    ('host_pointer', c_void_p),
)

MemoryHostPointerPropertiesEXT = define_struct('MemoryHostPointerPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory_type_bits', c_uint32),
)

PhysicalDeviceExternalMemoryHostPropertiesEXT = define_struct('PhysicalDeviceExternalMemoryHostPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('min_imported_host_pointer_alignment', DeviceSize),
)

CalibratedTimestampInfoEXT = define_struct('CalibratedTimestampInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('time_domain', TimeDomainEXT),
)

PhysicalDeviceShaderCorePropertiesAMD = define_struct('PhysicalDeviceShaderCorePropertiesAMD', 
    ('type', StructureType),
    ('next', c_void_p),
    ('shader_engine_count', c_uint32),
    ('shader_arrays_per_engine_count', c_uint32),
    ('compute_units_per_shader_array', c_uint32),
    ('simd_per_compute_unit', c_uint32),
    ('wavefronts_per_simd', c_uint32),
    ('wavefront_size', c_uint32),
    ('sgprs_per_simd', c_uint32),
    ('min_sgpr_allocation', c_uint32),
    ('max_sgpr_allocation', c_uint32),
    ('sgpr_allocation_granularity', c_uint32),
    ('vgprs_per_simd', c_uint32),
    ('min_vgpr_allocation', c_uint32),
    ('max_vgpr_allocation', c_uint32),
    ('vgpr_allocation_granularity', c_uint32),
)

DeviceMemoryOverallocationCreateInfoAMD = define_struct('DeviceMemoryOverallocationCreateInfoAMD', 
    ('type', StructureType),
    ('next', c_void_p),
    ('overallocation_behavior', MemoryOverallocationBehaviorAMD),
)

PhysicalDeviceVertexAttributeDivisorPropertiesEXT = define_struct('PhysicalDeviceVertexAttributeDivisorPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_vertex_attrib_divisor', c_uint32),
)

VertexInputBindingDivisorDescriptionEXT = define_struct('VertexInputBindingDivisorDescriptionEXT', 
    ('binding', c_uint32),
    ('divisor', c_uint32),
)

PipelineVertexInputDivisorStateCreateInfoEXT = define_struct('PipelineVertexInputDivisorStateCreateInfoEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('vertex_binding_divisor_count', c_uint32),
    ('vertex_binding_divisors', POINTER(VertexInputBindingDivisorDescriptionEXT)),
)

PhysicalDeviceVertexAttributeDivisorFeaturesEXT = define_struct('PhysicalDeviceVertexAttributeDivisorFeaturesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('vertex_attribute_instance_rate_divisor', Bool32),
    ('vertex_attribute_instance_rate_zero_divisor', Bool32),
)

PhysicalDeviceComputeShaderDerivativesFeaturesNV = define_struct('PhysicalDeviceComputeShaderDerivativesFeaturesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('compute_derivative_group_quads', Bool32),
    ('compute_derivative_group_linear', Bool32),
)

PhysicalDeviceMeshShaderFeaturesNV = define_struct('PhysicalDeviceMeshShaderFeaturesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('task_shader', Bool32),
    ('mesh_shader', Bool32),
)

PhysicalDeviceMeshShaderPropertiesNV = define_struct('PhysicalDeviceMeshShaderPropertiesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('max_draw_mesh_tasks_count', c_uint32),
    ('max_task_work_group_invocations', c_uint32),
    ('max_task_work_group_size', c_uint32 * 3),
    ('max_task_total_memory_size', c_uint32),
    ('max_task_output_count', c_uint32),
    ('max_mesh_work_group_invocations', c_uint32),
    ('max_mesh_work_group_size', c_uint32 * 3),
    ('max_mesh_total_memory_size', c_uint32),
    ('max_mesh_output_vertices', c_uint32),
    ('max_mesh_output_primitives', c_uint32),
    ('max_mesh_multiview_view_count', c_uint32),
    ('mesh_output_per_vertex_granularity', c_uint32),
    ('mesh_output_per_primitive_granularity', c_uint32),
)

DrawMeshTasksIndirectCommandNV = define_struct('DrawMeshTasksIndirectCommandNV', 
    ('task_count', c_uint32),
    ('first_task', c_uint32),
)

PhysicalDeviceFragmentShaderBarycentricFeaturesNV = define_struct('PhysicalDeviceFragmentShaderBarycentricFeaturesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('fragment_shader_barycentric', Bool32),
)

PhysicalDeviceShaderImageFootprintFeaturesNV = define_struct('PhysicalDeviceShaderImageFootprintFeaturesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('image_footprint', Bool32),
)

PipelineViewportExclusiveScissorStateCreateInfoNV = define_struct('PipelineViewportExclusiveScissorStateCreateInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('exclusive_scissor_count', c_uint32),
    ('exclusive_scissors', POINTER(Rect2D)),
)

PhysicalDeviceExclusiveScissorFeaturesNV = define_struct('PhysicalDeviceExclusiveScissorFeaturesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('exclusive_scissor', Bool32),
)

QueueFamilyCheckpointPropertiesNV = define_struct('QueueFamilyCheckpointPropertiesNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('checkpoint_execution_stage_mask', PipelineStageFlags),
)

CheckpointDataNV = define_struct('CheckpointDataNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('stage', PipelineStageFlagBits),
    ('checkpoint_marker', c_void_p),
)

PhysicalDevicePCIBusInfoPropertiesEXT = define_struct('PhysicalDevicePCIBusInfoPropertiesEXT', 
    ('type', StructureType),
    ('next', c_void_p),
    ('pci_domain', c_uint16),
    ('pci_bus', c_int8),
    ('pci_device', c_int8),
    ('pci_function', c_int8),
)

Win32SurfaceCreateInfoKHR = define_struct('Win32SurfaceCreateInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', Win32SurfaceCreateFlagsKHR),
    ('hinstance', HINSTANCE),
    ('hwnd', HWND),
)

ImportMemoryWin32HandleInfoKHR = define_struct('ImportMemoryWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_type', ExternalMemoryHandleTypeFlagBits),
    ('handle', HANDLE),
    ('name', LPCWSTR),
)

ExportMemoryWin32HandleInfoKHR = define_struct('ExportMemoryWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('attributes', POINTER(SECURITY_ATTRIBUTES)),
    ('dw_access', DWORD),
    ('name', LPCWSTR),
)

MemoryWin32HandlePropertiesKHR = define_struct('MemoryWin32HandlePropertiesKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory_type_bits', c_uint32),
)

MemoryGetWin32HandleInfoKHR = define_struct('MemoryGetWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('memory', DeviceMemory),
    ('handle_type', ExternalMemoryHandleTypeFlagBits),
)

Win32KeyedMutexAcquireReleaseInfoKHR = define_struct('Win32KeyedMutexAcquireReleaseInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('acquire_count', c_uint32),
    ('acquire_syncs', POINTER(DeviceMemory)),
    ('acquire_keys', POINTER(c_uint64)),
    ('acquire_timeouts', POINTER(c_uint32)),
    ('release_count', c_uint32),
    ('release_syncs', POINTER(DeviceMemory)),
    ('release_keys', POINTER(c_uint64)),
)

ImportSemaphoreWin32HandleInfoKHR = define_struct('ImportSemaphoreWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('semaphore', Semaphore),
    ('flags', SemaphoreImportFlags),
    ('handle_type', ExternalSemaphoreHandleTypeFlagBits),
    ('handle', HANDLE),
    ('name', LPCWSTR),
)

ExportSemaphoreWin32HandleInfoKHR = define_struct('ExportSemaphoreWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('attributes', POINTER(SECURITY_ATTRIBUTES)),
    ('dw_access', DWORD),
    ('name', LPCWSTR),
)

D3D12FenceSubmitInfoKHR = define_struct('D3D12FenceSubmitInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('wait_semaphore_values_count', c_uint32),
    ('wait_semaphore_values', POINTER(c_uint64)),
    ('signal_semaphore_values_count', c_uint32),
    ('signal_semaphore_values', POINTER(c_uint64)),
)

SemaphoreGetWin32HandleInfoKHR = define_struct('SemaphoreGetWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('semaphore', Semaphore),
    ('handle_type', ExternalSemaphoreHandleTypeFlagBits),
)

ImportFenceWin32HandleInfoKHR = define_struct('ImportFenceWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('fence', Fence),
    ('flags', FenceImportFlags),
    ('handle_type', ExternalFenceHandleTypeFlagBits),
    ('handle', HANDLE),
    ('name', LPCWSTR),
)

ExportFenceWin32HandleInfoKHR = define_struct('ExportFenceWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('attributes', POINTER(SECURITY_ATTRIBUTES)),
    ('dw_access', DWORD),
    ('name', LPCWSTR),
)

FenceGetWin32HandleInfoKHR = define_struct('FenceGetWin32HandleInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('fence', Fence),
    ('handle_type', ExternalFenceHandleTypeFlagBits),
)

ImportMemoryWin32HandleInfoNV = define_struct('ImportMemoryWin32HandleInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('handle_type', ExternalMemoryHandleTypeFlagsNV),
    ('handle', HANDLE),
)

ExportMemoryWin32HandleInfoNV = define_struct('ExportMemoryWin32HandleInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('attributes', POINTER(SECURITY_ATTRIBUTES)),
    ('dw_access', DWORD),
)

Win32KeyedMutexAcquireReleaseInfoNV = define_struct('Win32KeyedMutexAcquireReleaseInfoNV', 
    ('type', StructureType),
    ('next', c_void_p),
    ('acquire_count', c_uint32),
    ('acquire_syncs', POINTER(DeviceMemory)),
    ('acquire_keys', POINTER(c_uint64)),
    ('acquire_timeout_milliseconds', POINTER(c_uint32)),
    ('release_count', c_uint32),
    ('release_syncs', POINTER(DeviceMemory)),
    ('release_keys', POINTER(c_uint64)),
)

XcbSurfaceCreateInfoKHR = define_struct('XcbSurfaceCreateInfoKHR', 
    ('type', StructureType),
    ('next', c_void_p),
    ('flags', XcbSurfaceCreateFlagsKHR),
    ('connection', POINTER(xcb_connection_t)),
    ('window', xcb_window_t),
)



FnVoidFunction = FUNCTYPE(None, )
FnCreateInstance = FUNCTYPE(Result, POINTER(InstanceCreateInfo), POINTER(AllocationCallbacks), POINTER(Instance))
FnDestroyInstance = FUNCTYPE(None, Instance, POINTER(AllocationCallbacks))
FnEnumeratePhysicalDevices = FUNCTYPE(Result, Instance, POINTER(c_uint32), POINTER(PhysicalDevice))
FnGetPhysicalDeviceFeatures = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceFeatures))
FnGetPhysicalDeviceFormatProperties = FUNCTYPE(None, PhysicalDevice, Format, POINTER(FormatProperties))
FnGetPhysicalDeviceImageFormatProperties = FUNCTYPE(Result, PhysicalDevice, Format, ImageType, ImageTiling, ImageUsageFlags, ImageCreateFlags, POINTER(ImageFormatProperties))
FnGetPhysicalDeviceProperties = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceProperties))
FnGetPhysicalDeviceQueueFamilyProperties = FUNCTYPE(None, PhysicalDevice, POINTER(c_uint32), POINTER(QueueFamilyProperties))
FnGetPhysicalDeviceMemoryProperties = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceMemoryProperties))
FnGetInstanceProcAddr = FUNCTYPE(FnVoidFunction, Instance, c_char_p)
FnGetDeviceProcAddr = FUNCTYPE(FnVoidFunction, Device, c_char_p)
FnCreateDevice = FUNCTYPE(Result, PhysicalDevice, POINTER(DeviceCreateInfo), POINTER(AllocationCallbacks), POINTER(Device))
FnDestroyDevice = FUNCTYPE(None, Device, POINTER(AllocationCallbacks))
FnEnumerateInstanceExtensionProperties = FUNCTYPE(Result, c_char_p, POINTER(c_uint32), POINTER(ExtensionProperties))
FnEnumerateDeviceExtensionProperties = FUNCTYPE(Result, PhysicalDevice, c_char_p, POINTER(c_uint32), POINTER(ExtensionProperties))
FnEnumerateInstanceLayerProperties = FUNCTYPE(Result, POINTER(c_uint32), POINTER(LayerProperties))
FnEnumerateDeviceLayerProperties = FUNCTYPE(Result, PhysicalDevice, POINTER(c_uint32), POINTER(LayerProperties))
FnGetDeviceQueue = FUNCTYPE(None, Device, c_uint32, c_uint32, POINTER(Queue))
FnQueueSubmit = FUNCTYPE(Result, Queue, c_uint32, POINTER(SubmitInfo), Fence)
FnQueueWaitIdle = FUNCTYPE(Result, Queue)
FnDeviceWaitIdle = FUNCTYPE(Result, Device)
FnAllocateMemory = FUNCTYPE(Result, Device, POINTER(MemoryAllocateInfo), POINTER(AllocationCallbacks), POINTER(DeviceMemory))
FnFreeMemory = FUNCTYPE(None, Device, DeviceMemory, POINTER(AllocationCallbacks))
FnMapMemory = FUNCTYPE(Result, Device, DeviceMemory, DeviceSize, DeviceSize, MemoryMapFlags, POINTER(c_void_p))
FnUnmapMemory = FUNCTYPE(None, Device, DeviceMemory)
FnFlushMappedMemoryRanges = FUNCTYPE(Result, Device, c_uint32, POINTER(MappedMemoryRange))
FnInvalidateMappedMemoryRanges = FUNCTYPE(Result, Device, c_uint32, POINTER(MappedMemoryRange))
FnGetDeviceMemoryCommitment = FUNCTYPE(None, Device, DeviceMemory, POINTER(DeviceSize))
FnBindBufferMemory = FUNCTYPE(Result, Device, Buffer, DeviceMemory, DeviceSize)
FnBindImageMemory = FUNCTYPE(Result, Device, Image, DeviceMemory, DeviceSize)
FnGetBufferMemoryRequirements = FUNCTYPE(None, Device, Buffer, POINTER(MemoryRequirements))
FnGetImageMemoryRequirements = FUNCTYPE(None, Device, Image, POINTER(MemoryRequirements))
FnGetImageSparseMemoryRequirements = FUNCTYPE(None, Device, Image, POINTER(c_uint32), POINTER(SparseImageMemoryRequirements))
FnGetPhysicalDeviceSparseImageFormatProperties = FUNCTYPE(None, PhysicalDevice, Format, ImageType, SampleCountFlagBits, ImageUsageFlags, ImageTiling, POINTER(c_uint32), POINTER(SparseImageFormatProperties))
FnQueueBindSparse = FUNCTYPE(Result, Queue, c_uint32, POINTER(BindSparseInfo), Fence)
FnCreateFence = FUNCTYPE(Result, Device, POINTER(FenceCreateInfo), POINTER(AllocationCallbacks), POINTER(Fence))
FnDestroyFence = FUNCTYPE(None, Device, Fence, POINTER(AllocationCallbacks))
FnResetFences = FUNCTYPE(Result, Device, c_uint32, POINTER(Fence))
FnGetFenceStatus = FUNCTYPE(Result, Device, Fence)
FnWaitForFences = FUNCTYPE(Result, Device, c_uint32, POINTER(Fence), Bool32, c_uint64)
FnCreateSemaphore = FUNCTYPE(Result, Device, POINTER(SemaphoreCreateInfo), POINTER(AllocationCallbacks), POINTER(Semaphore))
FnDestroySemaphore = FUNCTYPE(None, Device, Semaphore, POINTER(AllocationCallbacks))
FnCreateEvent = FUNCTYPE(Result, Device, POINTER(EventCreateInfo), POINTER(AllocationCallbacks), POINTER(Event))
FnDestroyEvent = FUNCTYPE(None, Device, Event, POINTER(AllocationCallbacks))
FnGetEventStatus = FUNCTYPE(Result, Device, Event)
FnSetEvent = FUNCTYPE(Result, Device, Event)
FnResetEvent = FUNCTYPE(Result, Device, Event)
FnCreateQueryPool = FUNCTYPE(Result, Device, POINTER(QueryPoolCreateInfo), POINTER(AllocationCallbacks), POINTER(QueryPool))
FnDestroyQueryPool = FUNCTYPE(None, Device, QueryPool, POINTER(AllocationCallbacks))
FnGetQueryPoolResults = FUNCTYPE(Result, Device, QueryPool, c_uint32, c_uint32, c_size_t, c_void_p, DeviceSize, QueryResultFlags)
FnCreateBuffer = FUNCTYPE(Result, Device, POINTER(BufferCreateInfo), POINTER(AllocationCallbacks), POINTER(Buffer))
FnDestroyBuffer = FUNCTYPE(None, Device, Buffer, POINTER(AllocationCallbacks))
FnCreateBufferView = FUNCTYPE(Result, Device, POINTER(BufferViewCreateInfo), POINTER(AllocationCallbacks), POINTER(BufferView))
FnDestroyBufferView = FUNCTYPE(None, Device, BufferView, POINTER(AllocationCallbacks))
FnCreateImage = FUNCTYPE(Result, Device, POINTER(ImageCreateInfo), POINTER(AllocationCallbacks), POINTER(Image))
FnDestroyImage = FUNCTYPE(None, Device, Image, POINTER(AllocationCallbacks))
FnGetImageSubresourceLayout = FUNCTYPE(None, Device, Image, POINTER(ImageSubresource), POINTER(SubresourceLayout))
FnCreateImageView = FUNCTYPE(Result, Device, POINTER(ImageViewCreateInfo), POINTER(AllocationCallbacks), POINTER(ImageView))
FnDestroyImageView = FUNCTYPE(None, Device, ImageView, POINTER(AllocationCallbacks))
FnCreateShaderModule = FUNCTYPE(Result, Device, POINTER(ShaderModuleCreateInfo), POINTER(AllocationCallbacks), POINTER(ShaderModule))
FnDestroyShaderModule = FUNCTYPE(None, Device, ShaderModule, POINTER(AllocationCallbacks))
FnCreatePipelineCache = FUNCTYPE(Result, Device, POINTER(PipelineCacheCreateInfo), POINTER(AllocationCallbacks), POINTER(PipelineCache))
FnDestroyPipelineCache = FUNCTYPE(None, Device, PipelineCache, POINTER(AllocationCallbacks))
FnGetPipelineCacheData = FUNCTYPE(Result, Device, PipelineCache, POINTER(c_size_t), c_void_p)
FnMergePipelineCaches = FUNCTYPE(Result, Device, PipelineCache, c_uint32, POINTER(PipelineCache))
FnCreateGraphicsPipelines = FUNCTYPE(Result, Device, PipelineCache, c_uint32, POINTER(GraphicsPipelineCreateInfo), POINTER(AllocationCallbacks), POINTER(Pipeline))
FnCreateComputePipelines = FUNCTYPE(Result, Device, PipelineCache, c_uint32, POINTER(ComputePipelineCreateInfo), POINTER(AllocationCallbacks), POINTER(Pipeline))
FnDestroyPipeline = FUNCTYPE(None, Device, Pipeline, POINTER(AllocationCallbacks))
FnCreatePipelineLayout = FUNCTYPE(Result, Device, POINTER(PipelineLayoutCreateInfo), POINTER(AllocationCallbacks), POINTER(PipelineLayout))
FnDestroyPipelineLayout = FUNCTYPE(None, Device, PipelineLayout, POINTER(AllocationCallbacks))
FnCreateSampler = FUNCTYPE(Result, Device, POINTER(SamplerCreateInfo), POINTER(AllocationCallbacks), POINTER(Sampler))
FnDestroySampler = FUNCTYPE(None, Device, Sampler, POINTER(AllocationCallbacks))
FnCreateDescriptorSetLayout = FUNCTYPE(Result, Device, POINTER(DescriptorSetLayoutCreateInfo), POINTER(AllocationCallbacks), POINTER(DescriptorSetLayout))
FnDestroyDescriptorSetLayout = FUNCTYPE(None, Device, DescriptorSetLayout, POINTER(AllocationCallbacks))
FnCreateDescriptorPool = FUNCTYPE(Result, Device, POINTER(DescriptorPoolCreateInfo), POINTER(AllocationCallbacks), POINTER(DescriptorPool))
FnDestroyDescriptorPool = FUNCTYPE(None, Device, DescriptorPool, POINTER(AllocationCallbacks))
FnResetDescriptorPool = FUNCTYPE(Result, Device, DescriptorPool, DescriptorPoolResetFlags)
FnAllocateDescriptorSets = FUNCTYPE(Result, Device, POINTER(DescriptorSetAllocateInfo), POINTER(DescriptorSet))
FnFreeDescriptorSets = FUNCTYPE(Result, Device, DescriptorPool, c_uint32, POINTER(DescriptorSet))
FnUpdateDescriptorSets = FUNCTYPE(None, Device, c_uint32, POINTER(WriteDescriptorSet), c_uint32, POINTER(CopyDescriptorSet))
FnCreateFramebuffer = FUNCTYPE(Result, Device, POINTER(FramebufferCreateInfo), POINTER(AllocationCallbacks), POINTER(Framebuffer))
FnDestroyFramebuffer = FUNCTYPE(None, Device, Framebuffer, POINTER(AllocationCallbacks))
FnCreateRenderPass = FUNCTYPE(Result, Device, POINTER(RenderPassCreateInfo), POINTER(AllocationCallbacks), POINTER(RenderPass))
FnDestroyRenderPass = FUNCTYPE(None, Device, RenderPass, POINTER(AllocationCallbacks))
FnGetRenderAreaGranularity = FUNCTYPE(None, Device, RenderPass, POINTER(Extent2D))
FnCreateCommandPool = FUNCTYPE(Result, Device, POINTER(CommandPoolCreateInfo), POINTER(AllocationCallbacks), POINTER(CommandPool))
FnDestroyCommandPool = FUNCTYPE(None, Device, CommandPool, POINTER(AllocationCallbacks))
FnResetCommandPool = FUNCTYPE(Result, Device, CommandPool, CommandPoolResetFlags)
FnAllocateCommandBuffers = FUNCTYPE(Result, Device, POINTER(CommandBufferAllocateInfo), POINTER(CommandBuffer))
FnFreeCommandBuffers = FUNCTYPE(None, Device, CommandPool, c_uint32, POINTER(CommandBuffer))
FnBeginCommandBuffer = FUNCTYPE(Result, CommandBuffer, POINTER(CommandBufferBeginInfo))
FnEndCommandBuffer = FUNCTYPE(Result, CommandBuffer)
FnResetCommandBuffer = FUNCTYPE(Result, CommandBuffer, CommandBufferResetFlags)
FnCmdBindPipeline = FUNCTYPE(None, CommandBuffer, PipelineBindPoint, Pipeline)
FnCmdSetViewport = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(Viewport))
FnCmdSetScissor = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(Rect2D))
FnCmdSetLineWidth = FUNCTYPE(None, CommandBuffer, c_float)
FnCmdSetDepthBias = FUNCTYPE(None, CommandBuffer, c_float, c_float, c_float)
FnCmdSetBlendConstants = FUNCTYPE(None, CommandBuffer)
FnCmdSetDepthBounds = FUNCTYPE(None, CommandBuffer, c_float, c_float)
FnCmdSetStencilCompareMask = FUNCTYPE(None, CommandBuffer, StencilFaceFlags, c_uint32)
FnCmdSetStencilWriteMask = FUNCTYPE(None, CommandBuffer, StencilFaceFlags, c_uint32)
FnCmdSetStencilReference = FUNCTYPE(None, CommandBuffer, StencilFaceFlags, c_uint32)
FnCmdBindDescriptorSets = FUNCTYPE(None, CommandBuffer, PipelineBindPoint, PipelineLayout, c_uint32, c_uint32, POINTER(DescriptorSet), c_uint32, POINTER(c_uint32))
FnCmdBindIndexBuffer = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, IndexType)
FnCmdBindVertexBuffers = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(Buffer), POINTER(DeviceSize))
FnCmdDraw = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, c_uint32, c_uint32)
FnCmdDrawIndexed = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, c_uint32, c_int32, c_uint32)
FnCmdDrawIndirect = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, c_uint32, c_uint32)
FnCmdDrawIndexedIndirect = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, c_uint32, c_uint32)
FnCmdDispatch = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, c_uint32)
FnCmdDispatchIndirect = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize)
FnCmdCopyBuffer = FUNCTYPE(None, CommandBuffer, Buffer, Buffer, c_uint32, POINTER(BufferCopy))
FnCmdCopyImage = FUNCTYPE(None, CommandBuffer, Image, ImageLayout, Image, ImageLayout, c_uint32, POINTER(ImageCopy))
FnCmdBlitImage = FUNCTYPE(None, CommandBuffer, Image, ImageLayout, Image, ImageLayout, c_uint32, POINTER(ImageBlit), Filter)
FnCmdCopyBufferToImage = FUNCTYPE(None, CommandBuffer, Buffer, Image, ImageLayout, c_uint32, POINTER(BufferImageCopy))
FnCmdCopyImageToBuffer = FUNCTYPE(None, CommandBuffer, Image, ImageLayout, Buffer, c_uint32, POINTER(BufferImageCopy))
FnCmdUpdateBuffer = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, DeviceSize, c_void_p)
FnCmdFillBuffer = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, DeviceSize, c_uint32)
FnCmdClearColorImage = FUNCTYPE(None, CommandBuffer, Image, ImageLayout, POINTER(ClearColorValue), c_uint32, POINTER(ImageSubresourceRange))
FnCmdClearDepthStencilImage = FUNCTYPE(None, CommandBuffer, Image, ImageLayout, POINTER(ClearDepthStencilValue), c_uint32, POINTER(ImageSubresourceRange))
FnCmdClearAttachments = FUNCTYPE(None, CommandBuffer, c_uint32, POINTER(ClearAttachment), c_uint32, POINTER(ClearRect))
FnCmdResolveImage = FUNCTYPE(None, CommandBuffer, Image, ImageLayout, Image, ImageLayout, c_uint32, POINTER(ImageResolve))
FnCmdSetEvent = FUNCTYPE(None, CommandBuffer, Event, PipelineStageFlags)
FnCmdResetEvent = FUNCTYPE(None, CommandBuffer, Event, PipelineStageFlags)
FnCmdWaitEvents = FUNCTYPE(None, CommandBuffer, c_uint32, POINTER(Event), PipelineStageFlags, PipelineStageFlags, c_uint32, POINTER(MemoryBarrier), c_uint32, POINTER(BufferMemoryBarrier), c_uint32, POINTER(ImageMemoryBarrier))
FnCmdPipelineBarrier = FUNCTYPE(None, CommandBuffer, PipelineStageFlags, PipelineStageFlags, DependencyFlags, c_uint32, POINTER(MemoryBarrier), c_uint32, POINTER(BufferMemoryBarrier), c_uint32, POINTER(ImageMemoryBarrier))
FnCmdBeginQuery = FUNCTYPE(None, CommandBuffer, QueryPool, c_uint32, QueryControlFlags)
FnCmdEndQuery = FUNCTYPE(None, CommandBuffer, QueryPool, c_uint32)
FnCmdResetQueryPool = FUNCTYPE(None, CommandBuffer, QueryPool, c_uint32, c_uint32)
FnCmdWriteTimestamp = FUNCTYPE(None, CommandBuffer, PipelineStageFlagBits, QueryPool, c_uint32)
FnCmdCopyQueryPoolResults = FUNCTYPE(None, CommandBuffer, QueryPool, c_uint32, c_uint32, Buffer, DeviceSize, DeviceSize, QueryResultFlags)
FnCmdPushConstants = FUNCTYPE(None, CommandBuffer, PipelineLayout, ShaderStageFlags, c_uint32, c_uint32, c_void_p)
FnCmdBeginRenderPass = FUNCTYPE(None, CommandBuffer, POINTER(RenderPassBeginInfo), SubpassContents)
FnCmdNextSubpass = FUNCTYPE(None, CommandBuffer, SubpassContents)
FnCmdEndRenderPass = FUNCTYPE(None, CommandBuffer)
FnCmdExecuteCommands = FUNCTYPE(None, CommandBuffer, c_uint32, POINTER(CommandBuffer))
FnEnumerateInstanceVersion = FUNCTYPE(Result, POINTER(c_uint32))
FnBindBufferMemory2 = FUNCTYPE(Result, Device, c_uint32, POINTER(BindBufferMemoryInfo))
FnBindImageMemory2 = FUNCTYPE(Result, Device, c_uint32, POINTER(BindImageMemoryInfo))
FnGetDeviceGroupPeerMemoryFeatures = FUNCTYPE(None, Device, c_uint32, c_uint32, c_uint32, POINTER(PeerMemoryFeatureFlags))
FnCmdSetDeviceMask = FUNCTYPE(None, CommandBuffer, c_uint32)
FnCmdDispatchBase = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, c_uint32, c_uint32, c_uint32, c_uint32)
FnEnumeratePhysicalDeviceGroups = FUNCTYPE(Result, Instance, POINTER(c_uint32), POINTER(PhysicalDeviceGroupProperties))
FnGetImageMemoryRequirements2 = FUNCTYPE(None, Device, POINTER(ImageMemoryRequirementsInfo2), POINTER(MemoryRequirements2))
FnGetBufferMemoryRequirements2 = FUNCTYPE(None, Device, POINTER(BufferMemoryRequirementsInfo2), POINTER(MemoryRequirements2))
FnGetImageSparseMemoryRequirements2 = FUNCTYPE(None, Device, POINTER(ImageSparseMemoryRequirementsInfo2), POINTER(c_uint32), POINTER(SparseImageMemoryRequirements2))
FnGetPhysicalDeviceFeatures2 = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceFeatures2))
FnGetPhysicalDeviceProperties2 = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceProperties2))
FnGetPhysicalDeviceFormatProperties2 = FUNCTYPE(None, PhysicalDevice, Format, POINTER(FormatProperties2))
FnGetPhysicalDeviceImageFormatProperties2 = FUNCTYPE(Result, PhysicalDevice, POINTER(PhysicalDeviceImageFormatInfo2), POINTER(ImageFormatProperties2))
FnGetPhysicalDeviceQueueFamilyProperties2 = FUNCTYPE(None, PhysicalDevice, POINTER(c_uint32), POINTER(QueueFamilyProperties2))
FnGetPhysicalDeviceMemoryProperties2 = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceMemoryProperties2))
FnGetPhysicalDeviceSparseImageFormatProperties2 = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceSparseImageFormatInfo2), POINTER(c_uint32), POINTER(SparseImageFormatProperties2))
FnTrimCommandPool = FUNCTYPE(None, Device, CommandPool, CommandPoolTrimFlags)
FnGetDeviceQueue2 = FUNCTYPE(None, Device, POINTER(DeviceQueueInfo2), POINTER(Queue))
FnCreateSamplerYcbcrConversion = FUNCTYPE(Result, Device, POINTER(SamplerYcbcrConversionCreateInfo), POINTER(AllocationCallbacks), POINTER(SamplerYcbcrConversion))
FnDestroySamplerYcbcrConversion = FUNCTYPE(None, Device, SamplerYcbcrConversion, POINTER(AllocationCallbacks))
FnCreateDescriptorUpdateTemplate = FUNCTYPE(Result, Device, POINTER(DescriptorUpdateTemplateCreateInfo), POINTER(AllocationCallbacks), POINTER(DescriptorUpdateTemplate))
FnDestroyDescriptorUpdateTemplate = FUNCTYPE(None, Device, DescriptorUpdateTemplate, POINTER(AllocationCallbacks))
FnUpdateDescriptorSetWithTemplate = FUNCTYPE(None, Device, DescriptorSet, DescriptorUpdateTemplate, c_void_p)
FnGetPhysicalDeviceExternalBufferProperties = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceExternalBufferInfo), POINTER(ExternalBufferProperties))
FnGetPhysicalDeviceExternalFenceProperties = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceExternalFenceInfo), POINTER(ExternalFenceProperties))
FnGetPhysicalDeviceExternalSemaphoreProperties = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceExternalSemaphoreInfo), POINTER(ExternalSemaphoreProperties))
FnGetDescriptorSetLayoutSupport = FUNCTYPE(None, Device, POINTER(DescriptorSetLayoutCreateInfo), POINTER(DescriptorSetLayoutSupport))
FnDestroySurfaceKHR = FUNCTYPE(None, Instance, SurfaceKHR, POINTER(AllocationCallbacks))
FnGetPhysicalDeviceSurfaceSupportKHR = FUNCTYPE(Result, PhysicalDevice, c_uint32, SurfaceKHR, POINTER(Bool32))
FnGetPhysicalDeviceSurfaceCapabilitiesKHR = FUNCTYPE(Result, PhysicalDevice, SurfaceKHR, POINTER(SurfaceCapabilitiesKHR))
FnGetPhysicalDeviceSurfaceFormatsKHR = FUNCTYPE(Result, PhysicalDevice, SurfaceKHR, POINTER(c_uint32), POINTER(SurfaceFormatKHR))
FnGetPhysicalDeviceSurfacePresentModesKHR = FUNCTYPE(Result, PhysicalDevice, SurfaceKHR, POINTER(c_uint32), POINTER(PresentModeKHR))
FnCreateSwapchainKHR = FUNCTYPE(Result, Device, POINTER(SwapchainCreateInfoKHR), POINTER(AllocationCallbacks), POINTER(SwapchainKHR))
FnDestroySwapchainKHR = FUNCTYPE(None, Device, SwapchainKHR, POINTER(AllocationCallbacks))
FnGetSwapchainImagesKHR = FUNCTYPE(Result, Device, SwapchainKHR, POINTER(c_uint32), POINTER(Image))
FnAcquireNextImageKHR = FUNCTYPE(Result, Device, SwapchainKHR, c_uint64, Semaphore, Fence, POINTER(c_uint32))
FnQueuePresentKHR = FUNCTYPE(Result, Queue, POINTER(PresentInfoKHR))
FnGetDeviceGroupPresentCapabilitiesKHR = FUNCTYPE(Result, Device, POINTER(DeviceGroupPresentCapabilitiesKHR))
FnGetDeviceGroupSurfacePresentModesKHR = FUNCTYPE(Result, Device, SurfaceKHR, POINTER(DeviceGroupPresentModeFlagsKHR))
FnGetPhysicalDevicePresentRectanglesKHR = FUNCTYPE(Result, PhysicalDevice, SurfaceKHR, POINTER(c_uint32), POINTER(Rect2D))
FnAcquireNextImage2KHR = FUNCTYPE(Result, Device, POINTER(AcquireNextImageInfoKHR), POINTER(c_uint32))
FnGetPhysicalDeviceDisplayPropertiesKHR = FUNCTYPE(Result, PhysicalDevice, POINTER(c_uint32), POINTER(DisplayPropertiesKHR))
FnGetPhysicalDeviceDisplayPlanePropertiesKHR = FUNCTYPE(Result, PhysicalDevice, POINTER(c_uint32), POINTER(DisplayPlanePropertiesKHR))
FnGetDisplayPlaneSupportedDisplaysKHR = FUNCTYPE(Result, PhysicalDevice, c_uint32, POINTER(c_uint32), POINTER(DisplayKHR))
FnGetDisplayModePropertiesKHR = FUNCTYPE(Result, PhysicalDevice, DisplayKHR, POINTER(c_uint32), POINTER(DisplayModePropertiesKHR))
FnCreateDisplayModeKHR = FUNCTYPE(Result, PhysicalDevice, DisplayKHR, POINTER(DisplayModeCreateInfoKHR), POINTER(AllocationCallbacks), POINTER(DisplayModeKHR))
FnGetDisplayPlaneCapabilitiesKHR = FUNCTYPE(Result, PhysicalDevice, DisplayModeKHR, c_uint32, POINTER(DisplayPlaneCapabilitiesKHR))
FnCreateDisplayPlaneSurfaceKHR = FUNCTYPE(Result, Instance, POINTER(DisplaySurfaceCreateInfoKHR), POINTER(AllocationCallbacks), POINTER(SurfaceKHR))
FnCreateSharedSwapchainsKHR = FUNCTYPE(Result, Device, c_uint32, POINTER(SwapchainCreateInfoKHR), POINTER(AllocationCallbacks), POINTER(SwapchainKHR))
FnGetPhysicalDeviceFeatures2KHR = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceFeatures2))
FnGetPhysicalDeviceProperties2KHR = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceProperties2))
FnGetPhysicalDeviceFormatProperties2KHR = FUNCTYPE(None, PhysicalDevice, Format, POINTER(FormatProperties2))
FnGetPhysicalDeviceImageFormatProperties2KHR = FUNCTYPE(Result, PhysicalDevice, POINTER(PhysicalDeviceImageFormatInfo2), POINTER(ImageFormatProperties2))
FnGetPhysicalDeviceQueueFamilyProperties2KHR = FUNCTYPE(None, PhysicalDevice, POINTER(c_uint32), POINTER(QueueFamilyProperties2))
FnGetPhysicalDeviceMemoryProperties2KHR = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceMemoryProperties2))
FnGetPhysicalDeviceSparseImageFormatProperties2KHR = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceSparseImageFormatInfo2), POINTER(c_uint32), POINTER(SparseImageFormatProperties2))
FnGetDeviceGroupPeerMemoryFeaturesKHR = FUNCTYPE(None, Device, c_uint32, c_uint32, c_uint32, POINTER(PeerMemoryFeatureFlags))
FnCmdSetDeviceMaskKHR = FUNCTYPE(None, CommandBuffer, c_uint32)
FnCmdDispatchBaseKHR = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, c_uint32, c_uint32, c_uint32, c_uint32)
FnTrimCommandPoolKHR = FUNCTYPE(None, Device, CommandPool, CommandPoolTrimFlags)
FnEnumeratePhysicalDeviceGroupsKHR = FUNCTYPE(Result, Instance, POINTER(c_uint32), POINTER(PhysicalDeviceGroupProperties))
FnGetPhysicalDeviceExternalBufferPropertiesKHR = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceExternalBufferInfo), POINTER(ExternalBufferProperties))
FnGetMemoryFdKHR = FUNCTYPE(Result, Device, POINTER(MemoryGetFdInfoKHR), POINTER(c_int32))
FnGetMemoryFdPropertiesKHR = FUNCTYPE(Result, Device, ExternalMemoryHandleTypeFlagBits, c_int32, POINTER(MemoryFdPropertiesKHR))
FnGetPhysicalDeviceExternalSemaphorePropertiesKHR = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceExternalSemaphoreInfo), POINTER(ExternalSemaphoreProperties))
FnImportSemaphoreFdKHR = FUNCTYPE(Result, Device, POINTER(ImportSemaphoreFdInfoKHR))
FnGetSemaphoreFdKHR = FUNCTYPE(Result, Device, POINTER(SemaphoreGetFdInfoKHR), POINTER(c_int32))
FnCmdPushDescriptorSetKHR = FUNCTYPE(None, CommandBuffer, PipelineBindPoint, PipelineLayout, c_uint32, c_uint32, POINTER(WriteDescriptorSet))
FnCmdPushDescriptorSetWithTemplateKHR = FUNCTYPE(None, CommandBuffer, DescriptorUpdateTemplate, PipelineLayout, c_uint32, c_void_p)
FnCreateDescriptorUpdateTemplateKHR = FUNCTYPE(Result, Device, POINTER(DescriptorUpdateTemplateCreateInfo), POINTER(AllocationCallbacks), POINTER(DescriptorUpdateTemplate))
FnDestroyDescriptorUpdateTemplateKHR = FUNCTYPE(None, Device, DescriptorUpdateTemplate, POINTER(AllocationCallbacks))
FnUpdateDescriptorSetWithTemplateKHR = FUNCTYPE(None, Device, DescriptorSet, DescriptorUpdateTemplate, c_void_p)
FnCreateRenderPass2KHR = FUNCTYPE(Result, Device, POINTER(RenderPassCreateInfo2KHR), POINTER(AllocationCallbacks), POINTER(RenderPass))
FnCmdBeginRenderPass2KHR = FUNCTYPE(None, CommandBuffer, POINTER(RenderPassBeginInfo), POINTER(SubpassBeginInfoKHR))
FnCmdNextSubpass2KHR = FUNCTYPE(None, CommandBuffer, POINTER(SubpassBeginInfoKHR), POINTER(SubpassEndInfoKHR))
FnCmdEndRenderPass2KHR = FUNCTYPE(None, CommandBuffer, POINTER(SubpassEndInfoKHR))
FnGetSwapchainStatusKHR = FUNCTYPE(Result, Device, SwapchainKHR)
FnGetPhysicalDeviceExternalFencePropertiesKHR = FUNCTYPE(None, PhysicalDevice, POINTER(PhysicalDeviceExternalFenceInfo), POINTER(ExternalFenceProperties))
FnImportFenceFdKHR = FUNCTYPE(Result, Device, POINTER(ImportFenceFdInfoKHR))
FnGetFenceFdKHR = FUNCTYPE(Result, Device, POINTER(FenceGetFdInfoKHR), POINTER(c_int32))
FnGetPhysicalDeviceSurfaceCapabilities2KHR = FUNCTYPE(Result, PhysicalDevice, POINTER(PhysicalDeviceSurfaceInfo2KHR), POINTER(SurfaceCapabilities2KHR))
FnGetPhysicalDeviceSurfaceFormats2KHR = FUNCTYPE(Result, PhysicalDevice, POINTER(PhysicalDeviceSurfaceInfo2KHR), POINTER(c_uint32), POINTER(SurfaceFormat2KHR))
FnGetPhysicalDeviceDisplayProperties2KHR = FUNCTYPE(Result, PhysicalDevice, POINTER(c_uint32), POINTER(DisplayProperties2KHR))
FnGetPhysicalDeviceDisplayPlaneProperties2KHR = FUNCTYPE(Result, PhysicalDevice, POINTER(c_uint32), POINTER(DisplayPlaneProperties2KHR))
FnGetDisplayModeProperties2KHR = FUNCTYPE(Result, PhysicalDevice, DisplayKHR, POINTER(c_uint32), POINTER(DisplayModeProperties2KHR))
FnGetDisplayPlaneCapabilities2KHR = FUNCTYPE(Result, PhysicalDevice, POINTER(DisplayPlaneInfo2KHR), POINTER(DisplayPlaneCapabilities2KHR))
FnGetImageMemoryRequirements2KHR = FUNCTYPE(None, Device, POINTER(ImageMemoryRequirementsInfo2), POINTER(MemoryRequirements2))
FnGetBufferMemoryRequirements2KHR = FUNCTYPE(None, Device, POINTER(BufferMemoryRequirementsInfo2), POINTER(MemoryRequirements2))
FnGetImageSparseMemoryRequirements2KHR = FUNCTYPE(None, Device, POINTER(ImageSparseMemoryRequirementsInfo2), POINTER(c_uint32), POINTER(SparseImageMemoryRequirements2))
FnCreateSamplerYcbcrConversionKHR = FUNCTYPE(Result, Device, POINTER(SamplerYcbcrConversionCreateInfo), POINTER(AllocationCallbacks), POINTER(SamplerYcbcrConversion))
FnDestroySamplerYcbcrConversionKHR = FUNCTYPE(None, Device, SamplerYcbcrConversion, POINTER(AllocationCallbacks))
FnBindBufferMemory2KHR = FUNCTYPE(Result, Device, c_uint32, POINTER(BindBufferMemoryInfo))
FnBindImageMemory2KHR = FUNCTYPE(Result, Device, c_uint32, POINTER(BindImageMemoryInfo))
FnGetDescriptorSetLayoutSupportKHR = FUNCTYPE(None, Device, POINTER(DescriptorSetLayoutCreateInfo), POINTER(DescriptorSetLayoutSupport))
FnCmdDrawIndirectCountKHR = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, Buffer, DeviceSize, c_uint32, c_uint32)
FnCmdDrawIndexedIndirectCountKHR = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, Buffer, DeviceSize, c_uint32, c_uint32)
FnCreateDebugReportCallbackEXT = FUNCTYPE(Result, Instance, POINTER(DebugReportCallbackCreateInfoEXT), POINTER(AllocationCallbacks), POINTER(DebugReportCallbackEXT))
FnDestroyDebugReportCallbackEXT = FUNCTYPE(None, Instance, DebugReportCallbackEXT, POINTER(AllocationCallbacks))
FnDebugReportMessageEXT = FUNCTYPE(None, Instance, DebugReportFlagsEXT, DebugReportObjectTypeEXT, c_uint64, c_size_t, c_int32, c_char_p, c_char_p)
FnDebugMarkerSetObjectTagEXT = FUNCTYPE(Result, Device, POINTER(DebugMarkerObjectTagInfoEXT))
FnDebugMarkerSetObjectNameEXT = FUNCTYPE(Result, Device, POINTER(DebugMarkerObjectNameInfoEXT))
FnCmdDebugMarkerBeginEXT = FUNCTYPE(None, CommandBuffer, POINTER(DebugMarkerMarkerInfoEXT))
FnCmdDebugMarkerEndEXT = FUNCTYPE(None, CommandBuffer)
FnCmdDebugMarkerInsertEXT = FUNCTYPE(None, CommandBuffer, POINTER(DebugMarkerMarkerInfoEXT))
FnCmdBindTransformFeedbackBuffersEXT = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(Buffer), POINTER(DeviceSize), POINTER(DeviceSize))
FnCmdBeginTransformFeedbackEXT = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(Buffer), POINTER(DeviceSize))
FnCmdEndTransformFeedbackEXT = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(Buffer), POINTER(DeviceSize))
FnCmdBeginQueryIndexedEXT = FUNCTYPE(None, CommandBuffer, QueryPool, c_uint32, QueryControlFlags, c_uint32)
FnCmdEndQueryIndexedEXT = FUNCTYPE(None, CommandBuffer, QueryPool, c_uint32, c_uint32)
FnCmdDrawIndirectByteCountEXT = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, Buffer, DeviceSize, c_uint32, c_uint32)
FnCmdDrawIndirectCountAMD = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, Buffer, DeviceSize, c_uint32, c_uint32)
FnCmdDrawIndexedIndirectCountAMD = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, Buffer, DeviceSize, c_uint32, c_uint32)
FnGetShaderInfoAMD = FUNCTYPE(Result, Device, Pipeline, ShaderStageFlagBits, ShaderInfoTypeAMD, POINTER(c_size_t), c_void_p)
FnGetPhysicalDeviceExternalImageFormatPropertiesNV = FUNCTYPE(Result, PhysicalDevice, Format, ImageType, ImageTiling, ImageUsageFlags, ImageCreateFlags, ExternalMemoryHandleTypeFlagsNV, POINTER(ExternalImageFormatPropertiesNV))
FnCmdBeginConditionalRenderingEXT = FUNCTYPE(None, CommandBuffer, POINTER(ConditionalRenderingBeginInfoEXT))
FnCmdEndConditionalRenderingEXT = FUNCTYPE(None, CommandBuffer)
FnCmdProcessCommandsNVX = FUNCTYPE(None, CommandBuffer, POINTER(CmdProcessCommandsInfoNVX))
FnCmdReserveSpaceForCommandsNVX = FUNCTYPE(None, CommandBuffer, POINTER(CmdReserveSpaceForCommandsInfoNVX))
FnCreateIndirectCommandsLayoutNVX = FUNCTYPE(Result, Device, POINTER(IndirectCommandsLayoutCreateInfoNVX), POINTER(AllocationCallbacks), POINTER(IndirectCommandsLayoutNVX))
FnDestroyIndirectCommandsLayoutNVX = FUNCTYPE(None, Device, IndirectCommandsLayoutNVX, POINTER(AllocationCallbacks))
FnCreateObjectTableNVX = FUNCTYPE(Result, Device, POINTER(ObjectTableCreateInfoNVX), POINTER(AllocationCallbacks), POINTER(ObjectTableNVX))
FnDestroyObjectTableNVX = FUNCTYPE(None, Device, ObjectTableNVX, POINTER(AllocationCallbacks))
FnRegisterObjectsNVX = FUNCTYPE(Result, Device, ObjectTableNVX, c_uint32, POINTER(POINTER(ObjectTableEntryNVX)), POINTER(c_uint32))
FnUnregisterObjectsNVX = FUNCTYPE(Result, Device, ObjectTableNVX, c_uint32, POINTER(ObjectEntryTypeNVX), POINTER(c_uint32))
FnGetPhysicalDeviceGeneratedCommandsPropertiesNVX = FUNCTYPE(None, PhysicalDevice, POINTER(DeviceGeneratedCommandsFeaturesNVX), POINTER(DeviceGeneratedCommandsLimitsNVX))
FnCmdSetViewportWScalingNV = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(ViewportWScalingNV))
FnReleaseDisplayEXT = FUNCTYPE(Result, PhysicalDevice, DisplayKHR)
FnGetPhysicalDeviceSurfaceCapabilities2EXT = FUNCTYPE(Result, PhysicalDevice, SurfaceKHR, POINTER(SurfaceCapabilities2EXT))
FnDisplayPowerControlEXT = FUNCTYPE(Result, Device, DisplayKHR, POINTER(DisplayPowerInfoEXT))
FnRegisterDeviceEventEXT = FUNCTYPE(Result, Device, POINTER(DeviceEventInfoEXT), POINTER(AllocationCallbacks), POINTER(Fence))
FnRegisterDisplayEventEXT = FUNCTYPE(Result, Device, DisplayKHR, POINTER(DisplayEventInfoEXT), POINTER(AllocationCallbacks), POINTER(Fence))
FnGetSwapchainCounterEXT = FUNCTYPE(Result, Device, SwapchainKHR, SurfaceCounterFlagBitsEXT, POINTER(c_uint64))
FnGetRefreshCycleDurationGOOGLE = FUNCTYPE(Result, Device, SwapchainKHR, POINTER(RefreshCycleDurationGOOGLE))
FnGetPastPresentationTimingGOOGLE = FUNCTYPE(Result, Device, SwapchainKHR, POINTER(c_uint32), POINTER(PastPresentationTimingGOOGLE))
FnCmdSetDiscardRectangleEXT = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(Rect2D))
FnSetHdrMetadataEXT = FUNCTYPE(None, Device, c_uint32, POINTER(SwapchainKHR), POINTER(HdrMetadataEXT))
FnDebugUtilsMessengerCallbackEXT = FUNCTYPE(Bool32, DebugUtilsMessageSeverityFlagBitsEXT, DebugUtilsMessageTypeFlagsEXT, POINTER(DebugUtilsMessengerCallbackDataEXT), c_void_p)
FnSetDebugUtilsObjectNameEXT = FUNCTYPE(Result, Device, POINTER(DebugUtilsObjectNameInfoEXT))
FnSetDebugUtilsObjectTagEXT = FUNCTYPE(Result, Device, POINTER(DebugUtilsObjectTagInfoEXT))
FnQueueBeginDebugUtilsLabelEXT = FUNCTYPE(None, Queue, POINTER(DebugUtilsLabelEXT))
FnQueueEndDebugUtilsLabelEXT = FUNCTYPE(None, Queue)
FnQueueInsertDebugUtilsLabelEXT = FUNCTYPE(None, Queue, POINTER(DebugUtilsLabelEXT))
FnCmdBeginDebugUtilsLabelEXT = FUNCTYPE(None, CommandBuffer, POINTER(DebugUtilsLabelEXT))
FnCmdEndDebugUtilsLabelEXT = FUNCTYPE(None, CommandBuffer)
FnCmdInsertDebugUtilsLabelEXT = FUNCTYPE(None, CommandBuffer, POINTER(DebugUtilsLabelEXT))
FnCreateDebugUtilsMessengerEXT = FUNCTYPE(Result, Instance, POINTER(DebugUtilsMessengerCreateInfoEXT), POINTER(AllocationCallbacks), POINTER(DebugUtilsMessengerEXT))
FnDestroyDebugUtilsMessengerEXT = FUNCTYPE(None, Instance, DebugUtilsMessengerEXT, POINTER(AllocationCallbacks))
FnSubmitDebugUtilsMessageEXT = FUNCTYPE(None, Instance, DebugUtilsMessageSeverityFlagBitsEXT, DebugUtilsMessageTypeFlagsEXT, POINTER(DebugUtilsMessengerCallbackDataEXT))
FnCmdSetSampleLocationsEXT = FUNCTYPE(None, CommandBuffer, POINTER(SampleLocationsInfoEXT))
FnGetPhysicalDeviceMultisamplePropertiesEXT = FUNCTYPE(None, PhysicalDevice, SampleCountFlagBits, POINTER(MultisamplePropertiesEXT))
FnGetImageDrmFormatModifierPropertiesEXT = FUNCTYPE(Result, Device, Image, POINTER(ImageDrmFormatModifierPropertiesEXT))
FnCreateValidationCacheEXT = FUNCTYPE(Result, Device, POINTER(ValidationCacheCreateInfoEXT), POINTER(AllocationCallbacks), POINTER(ValidationCacheEXT))
FnDestroyValidationCacheEXT = FUNCTYPE(None, Device, ValidationCacheEXT, POINTER(AllocationCallbacks))
FnMergeValidationCachesEXT = FUNCTYPE(Result, Device, ValidationCacheEXT, c_uint32, POINTER(ValidationCacheEXT))
FnGetValidationCacheDataEXT = FUNCTYPE(Result, Device, ValidationCacheEXT, POINTER(c_size_t), c_void_p)
FnCmdBindShadingRateImageNV = FUNCTYPE(None, CommandBuffer, ImageView, ImageLayout)
FnCmdSetViewportShadingRatePaletteNV = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(ShadingRatePaletteNV))
FnCmdSetCoarseSampleOrderNV = FUNCTYPE(None, CommandBuffer, CoarseSampleOrderTypeNV, c_uint32, POINTER(CoarseSampleOrderCustomNV))
FnCreateAccelerationStructureNV = FUNCTYPE(Result, Device, POINTER(AccelerationStructureCreateInfoNV), POINTER(AllocationCallbacks), POINTER(AccelerationStructureNV))
FnDestroyAccelerationStructureNV = FUNCTYPE(None, Device, AccelerationStructureNV, POINTER(AllocationCallbacks))
FnGetAccelerationStructureMemoryRequirementsNV = FUNCTYPE(None, Device, POINTER(AccelerationStructureMemoryRequirementsInfoNV), POINTER(MemoryRequirements2KHR))
FnBindAccelerationStructureMemoryNV = FUNCTYPE(Result, Device, c_uint32, POINTER(BindAccelerationStructureMemoryInfoNV))
FnCmdBuildAccelerationStructureNV = FUNCTYPE(None, CommandBuffer, POINTER(AccelerationStructureInfoNV), Buffer, DeviceSize, Bool32, AccelerationStructureNV, AccelerationStructureNV, Buffer, DeviceSize)
FnCmdCopyAccelerationStructureNV = FUNCTYPE(None, CommandBuffer, AccelerationStructureNV, AccelerationStructureNV, CopyAccelerationStructureModeNV)
FnCmdTraceRaysNV = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, Buffer, DeviceSize, DeviceSize, Buffer, DeviceSize, DeviceSize, Buffer, DeviceSize, DeviceSize, c_uint32, c_uint32, c_uint32)
FnCreateRayTracingPipelinesNV = FUNCTYPE(Result, Device, PipelineCache, c_uint32, POINTER(RayTracingPipelineCreateInfoNV), POINTER(AllocationCallbacks), POINTER(Pipeline))
FnGetRayTracingShaderGroupHandlesNV = FUNCTYPE(Result, Device, Pipeline, c_uint32, c_uint32, c_size_t, c_void_p)
FnGetAccelerationStructureHandleNV = FUNCTYPE(Result, Device, AccelerationStructureNV, c_size_t, c_void_p)
FnCmdWriteAccelerationStructuresPropertiesNV = FUNCTYPE(None, CommandBuffer, c_uint32, POINTER(AccelerationStructureNV), QueryType, QueryPool, c_uint32)
FnCompileDeferredNV = FUNCTYPE(Result, Device, Pipeline, c_uint32)
FnGetMemoryHostPointerPropertiesEXT = FUNCTYPE(Result, Device, ExternalMemoryHandleTypeFlagBits, c_void_p, POINTER(MemoryHostPointerPropertiesEXT))
FnCmdWriteBufferMarkerAMD = FUNCTYPE(None, CommandBuffer, PipelineStageFlagBits, Buffer, DeviceSize, c_uint32)
FnGetPhysicalDeviceCalibrateableTimeDomainsEXT = FUNCTYPE(Result, PhysicalDevice, POINTER(c_uint32), POINTER(TimeDomainEXT))
FnGetCalibratedTimestampsEXT = FUNCTYPE(Result, Device, c_uint32, POINTER(CalibratedTimestampInfoEXT), POINTER(c_uint64), POINTER(c_uint64))
FnCmdDrawMeshTasksNV = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32)
FnCmdDrawMeshTasksIndirectNV = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, c_uint32, c_uint32)
FnCmdDrawMeshTasksIndirectCountNV = FUNCTYPE(None, CommandBuffer, Buffer, DeviceSize, Buffer, DeviceSize, c_uint32, c_uint32)
FnCmdSetExclusiveScissorNV = FUNCTYPE(None, CommandBuffer, c_uint32, c_uint32, POINTER(Rect2D))
FnCmdSetCheckpointNV = FUNCTYPE(None, CommandBuffer, c_void_p)
FnGetQueueCheckpointDataNV = FUNCTYPE(None, Queue, POINTER(c_uint32), POINTER(CheckpointDataNV))
FnCreateWin32SurfaceKHR = FUNCTYPE(Result, Instance, POINTER(Win32SurfaceCreateInfoKHR), POINTER(AllocationCallbacks), POINTER(SurfaceKHR))
FnGetPhysicalDeviceWin32PresentationSupportKHR = FUNCTYPE(Bool32, PhysicalDevice, c_uint32)
FnGetMemoryWin32HandleKHR = FUNCTYPE(Result, Device, POINTER(MemoryGetWin32HandleInfoKHR), POINTER(HANDLE))
FnGetMemoryWin32HandlePropertiesKHR = FUNCTYPE(Result, Device, ExternalMemoryHandleTypeFlagBits, HANDLE, POINTER(MemoryWin32HandlePropertiesKHR))
FnImportSemaphoreWin32HandleKHR = FUNCTYPE(Result, Device, POINTER(ImportSemaphoreWin32HandleInfoKHR))
FnGetSemaphoreWin32HandleKHR = FUNCTYPE(Result, Device, POINTER(SemaphoreGetWin32HandleInfoKHR), POINTER(HANDLE))
FnImportFenceWin32HandleKHR = FUNCTYPE(Result, Device, POINTER(ImportFenceWin32HandleInfoKHR))
FnGetFenceWin32HandleKHR = FUNCTYPE(Result, Device, POINTER(FenceGetWin32HandleInfoKHR), POINTER(HANDLE))
FnGetMemoryWin32HandleNV = FUNCTYPE(Result, Device, DeviceMemory, ExternalMemoryHandleTypeFlagsNV, POINTER(HANDLE))
FnCreateXcbSurfaceKHR = FUNCTYPE(Result, Instance, POINTER(XcbSurfaceCreateInfoKHR), POINTER(AllocationCallbacks), POINTER(SurfaceKHR))
FnGetPhysicalDeviceXcbPresentationSupportKHR = FUNCTYPE(Bool32, PhysicalDevice, c_uint32, POINTER(xcb_connection_t), xcb_visualid_t)


InstanceFunctions = (
  (b"vkDestroyInstance", FnDestroyInstance),
  (b"vkEnumeratePhysicalDevices", FnEnumeratePhysicalDevices),
  (b"vkGetPhysicalDeviceFeatures", FnGetPhysicalDeviceFeatures),
  (b"vkGetPhysicalDeviceFormatProperties", FnGetPhysicalDeviceFormatProperties),
  (b"vkGetPhysicalDeviceImageFormatProperties", FnGetPhysicalDeviceImageFormatProperties),
  (b"vkGetPhysicalDeviceProperties", FnGetPhysicalDeviceProperties),
  (b"vkGetPhysicalDeviceQueueFamilyProperties", FnGetPhysicalDeviceQueueFamilyProperties),
  (b"vkGetPhysicalDeviceMemoryProperties", FnGetPhysicalDeviceMemoryProperties),
  (b"vkGetInstanceProcAddr", FnGetInstanceProcAddr),
  (b"vkGetDeviceProcAddr", FnGetDeviceProcAddr),
  (b"vkCreateDevice", FnCreateDevice),
  (b"vkEnumerateDeviceExtensionProperties", FnEnumerateDeviceExtensionProperties),
  (b"vkEnumerateDeviceLayerProperties", FnEnumerateDeviceLayerProperties),
  (b"vkGetPhysicalDeviceSparseImageFormatProperties", FnGetPhysicalDeviceSparseImageFormatProperties),
  (b"vkEnumeratePhysicalDeviceGroups", FnEnumeratePhysicalDeviceGroups),
  (b"vkGetPhysicalDeviceFeatures2", FnGetPhysicalDeviceFeatures2),
  (b"vkGetPhysicalDeviceProperties2", FnGetPhysicalDeviceProperties2),
  (b"vkGetPhysicalDeviceFormatProperties2", FnGetPhysicalDeviceFormatProperties2),
  (b"vkGetPhysicalDeviceImageFormatProperties2", FnGetPhysicalDeviceImageFormatProperties2),
  (b"vkGetPhysicalDeviceQueueFamilyProperties2", FnGetPhysicalDeviceQueueFamilyProperties2),
  (b"vkGetPhysicalDeviceMemoryProperties2", FnGetPhysicalDeviceMemoryProperties2),
  (b"vkGetPhysicalDeviceSparseImageFormatProperties2", FnGetPhysicalDeviceSparseImageFormatProperties2),
  (b"vkGetPhysicalDeviceExternalBufferProperties", FnGetPhysicalDeviceExternalBufferProperties),
  (b"vkGetPhysicalDeviceExternalFenceProperties", FnGetPhysicalDeviceExternalFenceProperties),
  (b"vkGetPhysicalDeviceExternalSemaphoreProperties", FnGetPhysicalDeviceExternalSemaphoreProperties),
  (b"vkDestroySurfaceKHR", FnDestroySurfaceKHR),
  (b"vkGetPhysicalDeviceSurfaceSupportKHR", FnGetPhysicalDeviceSurfaceSupportKHR),
  (b"vkGetPhysicalDeviceSurfaceCapabilitiesKHR", FnGetPhysicalDeviceSurfaceCapabilitiesKHR),
  (b"vkGetPhysicalDeviceSurfaceFormatsKHR", FnGetPhysicalDeviceSurfaceFormatsKHR),
  (b"vkGetPhysicalDeviceSurfacePresentModesKHR", FnGetPhysicalDeviceSurfacePresentModesKHR),
  (b"vkGetPhysicalDevicePresentRectanglesKHR", FnGetPhysicalDevicePresentRectanglesKHR),
  (b"vkGetPhysicalDeviceDisplayPropertiesKHR", FnGetPhysicalDeviceDisplayPropertiesKHR),
  (b"vkGetPhysicalDeviceDisplayPlanePropertiesKHR", FnGetPhysicalDeviceDisplayPlanePropertiesKHR),
  (b"vkGetDisplayPlaneSupportedDisplaysKHR", FnGetDisplayPlaneSupportedDisplaysKHR),
  (b"vkGetDisplayModePropertiesKHR", FnGetDisplayModePropertiesKHR),
  (b"vkCreateDisplayModeKHR", FnCreateDisplayModeKHR),
  (b"vkGetDisplayPlaneCapabilitiesKHR", FnGetDisplayPlaneCapabilitiesKHR),
  (b"vkCreateDisplayPlaneSurfaceKHR", FnCreateDisplayPlaneSurfaceKHR),
  (b"vkGetPhysicalDeviceFeatures2KHR", FnGetPhysicalDeviceFeatures2KHR),
  (b"vkGetPhysicalDeviceProperties2KHR", FnGetPhysicalDeviceProperties2KHR),
  (b"vkGetPhysicalDeviceFormatProperties2KHR", FnGetPhysicalDeviceFormatProperties2KHR),
  (b"vkGetPhysicalDeviceImageFormatProperties2KHR", FnGetPhysicalDeviceImageFormatProperties2KHR),
  (b"vkGetPhysicalDeviceQueueFamilyProperties2KHR", FnGetPhysicalDeviceQueueFamilyProperties2KHR),
  (b"vkGetPhysicalDeviceMemoryProperties2KHR", FnGetPhysicalDeviceMemoryProperties2KHR),
  (b"vkGetPhysicalDeviceSparseImageFormatProperties2KHR", FnGetPhysicalDeviceSparseImageFormatProperties2KHR),
  (b"vkEnumeratePhysicalDeviceGroupsKHR", FnEnumeratePhysicalDeviceGroupsKHR),
  (b"vkGetPhysicalDeviceExternalBufferPropertiesKHR", FnGetPhysicalDeviceExternalBufferPropertiesKHR),
  (b"vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", FnGetPhysicalDeviceExternalSemaphorePropertiesKHR),
  (b"vkGetPhysicalDeviceExternalFencePropertiesKHR", FnGetPhysicalDeviceExternalFencePropertiesKHR),
  (b"vkGetPhysicalDeviceSurfaceCapabilities2KHR", FnGetPhysicalDeviceSurfaceCapabilities2KHR),
  (b"vkGetPhysicalDeviceSurfaceFormats2KHR", FnGetPhysicalDeviceSurfaceFormats2KHR),
  (b"vkGetPhysicalDeviceDisplayProperties2KHR", FnGetPhysicalDeviceDisplayProperties2KHR),
  (b"vkGetPhysicalDeviceDisplayPlaneProperties2KHR", FnGetPhysicalDeviceDisplayPlaneProperties2KHR),
  (b"vkGetDisplayModeProperties2KHR", FnGetDisplayModeProperties2KHR),
  (b"vkGetDisplayPlaneCapabilities2KHR", FnGetDisplayPlaneCapabilities2KHR),
  (b"vkCreateDebugReportCallbackEXT", FnCreateDebugReportCallbackEXT),
  (b"vkDestroyDebugReportCallbackEXT", FnDestroyDebugReportCallbackEXT),
  (b"vkDebugReportMessageEXT", FnDebugReportMessageEXT),
  (b"vkGetPhysicalDeviceExternalImageFormatPropertiesNV", FnGetPhysicalDeviceExternalImageFormatPropertiesNV),
  (b"vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX", FnGetPhysicalDeviceGeneratedCommandsPropertiesNVX),
  (b"vkReleaseDisplayEXT", FnReleaseDisplayEXT),
  (b"vkGetPhysicalDeviceSurfaceCapabilities2EXT", FnGetPhysicalDeviceSurfaceCapabilities2EXT),
  (b"vkCreateDebugUtilsMessengerEXT", FnCreateDebugUtilsMessengerEXT),
  (b"vkDestroyDebugUtilsMessengerEXT", FnDestroyDebugUtilsMessengerEXT),
  (b"vkSubmitDebugUtilsMessageEXT", FnSubmitDebugUtilsMessageEXT),
  (b"vkGetPhysicalDeviceMultisamplePropertiesEXT", FnGetPhysicalDeviceMultisamplePropertiesEXT),
  (b"vkGetPhysicalDeviceCalibrateableTimeDomainsEXT", FnGetPhysicalDeviceCalibrateableTimeDomainsEXT),
  (b"vkCreateWin32SurfaceKHR", FnCreateWin32SurfaceKHR),
  (b"vkGetPhysicalDeviceWin32PresentationSupportKHR", FnGetPhysicalDeviceWin32PresentationSupportKHR),
  (b"vkCreateXcbSurfaceKHR", FnCreateXcbSurfaceKHR),
  (b"vkGetPhysicalDeviceXcbPresentationSupportKHR", FnGetPhysicalDeviceXcbPresentationSupportKHR),
)

DeviceFunctions = (
  (b"vkDestroyDevice", FnDestroyDevice),
  (b"vkGetDeviceQueue", FnGetDeviceQueue),
  (b"vkQueueSubmit", FnQueueSubmit),
  (b"vkQueueWaitIdle", FnQueueWaitIdle),
  (b"vkDeviceWaitIdle", FnDeviceWaitIdle),
  (b"vkAllocateMemory", FnAllocateMemory),
  (b"vkFreeMemory", FnFreeMemory),
  (b"vkMapMemory", FnMapMemory),
  (b"vkUnmapMemory", FnUnmapMemory),
  (b"vkFlushMappedMemoryRanges", FnFlushMappedMemoryRanges),
  (b"vkInvalidateMappedMemoryRanges", FnInvalidateMappedMemoryRanges),
  (b"vkGetDeviceMemoryCommitment", FnGetDeviceMemoryCommitment),
  (b"vkBindBufferMemory", FnBindBufferMemory),
  (b"vkBindImageMemory", FnBindImageMemory),
  (b"vkGetBufferMemoryRequirements", FnGetBufferMemoryRequirements),
  (b"vkGetImageMemoryRequirements", FnGetImageMemoryRequirements),
  (b"vkGetImageSparseMemoryRequirements", FnGetImageSparseMemoryRequirements),
  (b"vkQueueBindSparse", FnQueueBindSparse),
  (b"vkCreateFence", FnCreateFence),
  (b"vkDestroyFence", FnDestroyFence),
  (b"vkResetFences", FnResetFences),
  (b"vkGetFenceStatus", FnGetFenceStatus),
  (b"vkWaitForFences", FnWaitForFences),
  (b"vkCreateSemaphore", FnCreateSemaphore),
  (b"vkDestroySemaphore", FnDestroySemaphore),
  (b"vkCreateEvent", FnCreateEvent),
  (b"vkDestroyEvent", FnDestroyEvent),
  (b"vkGetEventStatus", FnGetEventStatus),
  (b"vkSetEvent", FnSetEvent),
  (b"vkResetEvent", FnResetEvent),
  (b"vkCreateQueryPool", FnCreateQueryPool),
  (b"vkDestroyQueryPool", FnDestroyQueryPool),
  (b"vkGetQueryPoolResults", FnGetQueryPoolResults),
  (b"vkCreateBuffer", FnCreateBuffer),
  (b"vkDestroyBuffer", FnDestroyBuffer),
  (b"vkCreateBufferView", FnCreateBufferView),
  (b"vkDestroyBufferView", FnDestroyBufferView),
  (b"vkCreateImage", FnCreateImage),
  (b"vkDestroyImage", FnDestroyImage),
  (b"vkGetImageSubresourceLayout", FnGetImageSubresourceLayout),
  (b"vkCreateImageView", FnCreateImageView),
  (b"vkDestroyImageView", FnDestroyImageView),
  (b"vkCreateShaderModule", FnCreateShaderModule),
  (b"vkDestroyShaderModule", FnDestroyShaderModule),
  (b"vkCreatePipelineCache", FnCreatePipelineCache),
  (b"vkDestroyPipelineCache", FnDestroyPipelineCache),
  (b"vkGetPipelineCacheData", FnGetPipelineCacheData),
  (b"vkMergePipelineCaches", FnMergePipelineCaches),
  (b"vkCreateGraphicsPipelines", FnCreateGraphicsPipelines),
  (b"vkCreateComputePipelines", FnCreateComputePipelines),
  (b"vkDestroyPipeline", FnDestroyPipeline),
  (b"vkCreatePipelineLayout", FnCreatePipelineLayout),
  (b"vkDestroyPipelineLayout", FnDestroyPipelineLayout),
  (b"vkCreateSampler", FnCreateSampler),
  (b"vkDestroySampler", FnDestroySampler),
  (b"vkCreateDescriptorSetLayout", FnCreateDescriptorSetLayout),
  (b"vkDestroyDescriptorSetLayout", FnDestroyDescriptorSetLayout),
  (b"vkCreateDescriptorPool", FnCreateDescriptorPool),
  (b"vkDestroyDescriptorPool", FnDestroyDescriptorPool),
  (b"vkResetDescriptorPool", FnResetDescriptorPool),
  (b"vkAllocateDescriptorSets", FnAllocateDescriptorSets),
  (b"vkFreeDescriptorSets", FnFreeDescriptorSets),
  (b"vkUpdateDescriptorSets", FnUpdateDescriptorSets),
  (b"vkCreateFramebuffer", FnCreateFramebuffer),
  (b"vkDestroyFramebuffer", FnDestroyFramebuffer),
  (b"vkCreateRenderPass", FnCreateRenderPass),
  (b"vkDestroyRenderPass", FnDestroyRenderPass),
  (b"vkGetRenderAreaGranularity", FnGetRenderAreaGranularity),
  (b"vkCreateCommandPool", FnCreateCommandPool),
  (b"vkDestroyCommandPool", FnDestroyCommandPool),
  (b"vkResetCommandPool", FnResetCommandPool),
  (b"vkAllocateCommandBuffers", FnAllocateCommandBuffers),
  (b"vkFreeCommandBuffers", FnFreeCommandBuffers),
  (b"vkBeginCommandBuffer", FnBeginCommandBuffer),
  (b"vkEndCommandBuffer", FnEndCommandBuffer),
  (b"vkResetCommandBuffer", FnResetCommandBuffer),
  (b"vkCmdBindPipeline", FnCmdBindPipeline),
  (b"vkCmdSetViewport", FnCmdSetViewport),
  (b"vkCmdSetScissor", FnCmdSetScissor),
  (b"vkCmdSetLineWidth", FnCmdSetLineWidth),
  (b"vkCmdSetDepthBias", FnCmdSetDepthBias),
  (b"vkCmdSetBlendConstants", FnCmdSetBlendConstants),
  (b"vkCmdSetDepthBounds", FnCmdSetDepthBounds),
  (b"vkCmdSetStencilCompareMask", FnCmdSetStencilCompareMask),
  (b"vkCmdSetStencilWriteMask", FnCmdSetStencilWriteMask),
  (b"vkCmdSetStencilReference", FnCmdSetStencilReference),
  (b"vkCmdBindDescriptorSets", FnCmdBindDescriptorSets),
  (b"vkCmdBindIndexBuffer", FnCmdBindIndexBuffer),
  (b"vkCmdBindVertexBuffers", FnCmdBindVertexBuffers),
  (b"vkCmdDraw", FnCmdDraw),
  (b"vkCmdDrawIndexed", FnCmdDrawIndexed),
  (b"vkCmdDrawIndirect", FnCmdDrawIndirect),
  (b"vkCmdDrawIndexedIndirect", FnCmdDrawIndexedIndirect),
  (b"vkCmdDispatch", FnCmdDispatch),
  (b"vkCmdDispatchIndirect", FnCmdDispatchIndirect),
  (b"vkCmdCopyBuffer", FnCmdCopyBuffer),
  (b"vkCmdCopyImage", FnCmdCopyImage),
  (b"vkCmdBlitImage", FnCmdBlitImage),
  (b"vkCmdCopyBufferToImage", FnCmdCopyBufferToImage),
  (b"vkCmdCopyImageToBuffer", FnCmdCopyImageToBuffer),
  (b"vkCmdUpdateBuffer", FnCmdUpdateBuffer),
  (b"vkCmdFillBuffer", FnCmdFillBuffer),
  (b"vkCmdClearColorImage", FnCmdClearColorImage),
  (b"vkCmdClearDepthStencilImage", FnCmdClearDepthStencilImage),
  (b"vkCmdClearAttachments", FnCmdClearAttachments),
  (b"vkCmdResolveImage", FnCmdResolveImage),
  (b"vkCmdSetEvent", FnCmdSetEvent),
  (b"vkCmdResetEvent", FnCmdResetEvent),
  (b"vkCmdWaitEvents", FnCmdWaitEvents),
  (b"vkCmdPipelineBarrier", FnCmdPipelineBarrier),
  (b"vkCmdBeginQuery", FnCmdBeginQuery),
  (b"vkCmdEndQuery", FnCmdEndQuery),
  (b"vkCmdResetQueryPool", FnCmdResetQueryPool),
  (b"vkCmdWriteTimestamp", FnCmdWriteTimestamp),
  (b"vkCmdCopyQueryPoolResults", FnCmdCopyQueryPoolResults),
  (b"vkCmdPushConstants", FnCmdPushConstants),
  (b"vkCmdBeginRenderPass", FnCmdBeginRenderPass),
  (b"vkCmdNextSubpass", FnCmdNextSubpass),
  (b"vkCmdEndRenderPass", FnCmdEndRenderPass),
  (b"vkCmdExecuteCommands", FnCmdExecuteCommands),
  (b"vkBindBufferMemory2", FnBindBufferMemory2),
  (b"vkBindImageMemory2", FnBindImageMemory2),
  (b"vkGetDeviceGroupPeerMemoryFeatures", FnGetDeviceGroupPeerMemoryFeatures),
  (b"vkCmdSetDeviceMask", FnCmdSetDeviceMask),
  (b"vkCmdDispatchBase", FnCmdDispatchBase),
  (b"vkGetImageMemoryRequirements2", FnGetImageMemoryRequirements2),
  (b"vkGetBufferMemoryRequirements2", FnGetBufferMemoryRequirements2),
  (b"vkGetImageSparseMemoryRequirements2", FnGetImageSparseMemoryRequirements2),
  (b"vkTrimCommandPool", FnTrimCommandPool),
  (b"vkGetDeviceQueue2", FnGetDeviceQueue2),
  (b"vkCreateSamplerYcbcrConversion", FnCreateSamplerYcbcrConversion),
  (b"vkDestroySamplerYcbcrConversion", FnDestroySamplerYcbcrConversion),
  (b"vkCreateDescriptorUpdateTemplate", FnCreateDescriptorUpdateTemplate),
  (b"vkDestroyDescriptorUpdateTemplate", FnDestroyDescriptorUpdateTemplate),
  (b"vkUpdateDescriptorSetWithTemplate", FnUpdateDescriptorSetWithTemplate),
  (b"vkGetDescriptorSetLayoutSupport", FnGetDescriptorSetLayoutSupport),
  (b"vkCreateSwapchainKHR", FnCreateSwapchainKHR),
  (b"vkDestroySwapchainKHR", FnDestroySwapchainKHR),
  (b"vkGetSwapchainImagesKHR", FnGetSwapchainImagesKHR),
  (b"vkAcquireNextImageKHR", FnAcquireNextImageKHR),
  (b"vkQueuePresentKHR", FnQueuePresentKHR),
  (b"vkGetDeviceGroupPresentCapabilitiesKHR", FnGetDeviceGroupPresentCapabilitiesKHR),
  (b"vkGetDeviceGroupSurfacePresentModesKHR", FnGetDeviceGroupSurfacePresentModesKHR),
  (b"vkAcquireNextImage2KHR", FnAcquireNextImage2KHR),
  (b"vkCreateSharedSwapchainsKHR", FnCreateSharedSwapchainsKHR),
  (b"vkGetDeviceGroupPeerMemoryFeaturesKHR", FnGetDeviceGroupPeerMemoryFeaturesKHR),
  (b"vkCmdSetDeviceMaskKHR", FnCmdSetDeviceMaskKHR),
  (b"vkCmdDispatchBaseKHR", FnCmdDispatchBaseKHR),
  (b"vkTrimCommandPoolKHR", FnTrimCommandPoolKHR),
  (b"vkGetMemoryFdKHR", FnGetMemoryFdKHR),
  (b"vkGetMemoryFdPropertiesKHR", FnGetMemoryFdPropertiesKHR),
  (b"vkImportSemaphoreFdKHR", FnImportSemaphoreFdKHR),
  (b"vkGetSemaphoreFdKHR", FnGetSemaphoreFdKHR),
  (b"vkCmdPushDescriptorSetKHR", FnCmdPushDescriptorSetKHR),
  (b"vkCmdPushDescriptorSetWithTemplateKHR", FnCmdPushDescriptorSetWithTemplateKHR),
  (b"vkCreateDescriptorUpdateTemplateKHR", FnCreateDescriptorUpdateTemplateKHR),
  (b"vkDestroyDescriptorUpdateTemplateKHR", FnDestroyDescriptorUpdateTemplateKHR),
  (b"vkUpdateDescriptorSetWithTemplateKHR", FnUpdateDescriptorSetWithTemplateKHR),
  (b"vkCreateRenderPass2KHR", FnCreateRenderPass2KHR),
  (b"vkCmdBeginRenderPass2KHR", FnCmdBeginRenderPass2KHR),
  (b"vkCmdNextSubpass2KHR", FnCmdNextSubpass2KHR),
  (b"vkCmdEndRenderPass2KHR", FnCmdEndRenderPass2KHR),
  (b"vkGetSwapchainStatusKHR", FnGetSwapchainStatusKHR),
  (b"vkImportFenceFdKHR", FnImportFenceFdKHR),
  (b"vkGetFenceFdKHR", FnGetFenceFdKHR),
  (b"vkGetImageMemoryRequirements2KHR", FnGetImageMemoryRequirements2KHR),
  (b"vkGetBufferMemoryRequirements2KHR", FnGetBufferMemoryRequirements2KHR),
  (b"vkGetImageSparseMemoryRequirements2KHR", FnGetImageSparseMemoryRequirements2KHR),
  (b"vkCreateSamplerYcbcrConversionKHR", FnCreateSamplerYcbcrConversionKHR),
  (b"vkDestroySamplerYcbcrConversionKHR", FnDestroySamplerYcbcrConversionKHR),
  (b"vkBindBufferMemory2KHR", FnBindBufferMemory2KHR),
  (b"vkBindImageMemory2KHR", FnBindImageMemory2KHR),
  (b"vkGetDescriptorSetLayoutSupportKHR", FnGetDescriptorSetLayoutSupportKHR),
  (b"vkCmdDrawIndirectCountKHR", FnCmdDrawIndirectCountKHR),
  (b"vkCmdDrawIndexedIndirectCountKHR", FnCmdDrawIndexedIndirectCountKHR),
  (b"vkDebugMarkerSetObjectTagEXT", FnDebugMarkerSetObjectTagEXT),
  (b"vkDebugMarkerSetObjectNameEXT", FnDebugMarkerSetObjectNameEXT),
  (b"vkCmdDebugMarkerBeginEXT", FnCmdDebugMarkerBeginEXT),
  (b"vkCmdDebugMarkerEndEXT", FnCmdDebugMarkerEndEXT),
  (b"vkCmdDebugMarkerInsertEXT", FnCmdDebugMarkerInsertEXT),
  (b"vkCmdBindTransformFeedbackBuffersEXT", FnCmdBindTransformFeedbackBuffersEXT),
  (b"vkCmdBeginTransformFeedbackEXT", FnCmdBeginTransformFeedbackEXT),
  (b"vkCmdEndTransformFeedbackEXT", FnCmdEndTransformFeedbackEXT),
  (b"vkCmdBeginQueryIndexedEXT", FnCmdBeginQueryIndexedEXT),
  (b"vkCmdEndQueryIndexedEXT", FnCmdEndQueryIndexedEXT),
  (b"vkCmdDrawIndirectByteCountEXT", FnCmdDrawIndirectByteCountEXT),
  (b"vkCmdDrawIndirectCountAMD", FnCmdDrawIndirectCountAMD),
  (b"vkCmdDrawIndexedIndirectCountAMD", FnCmdDrawIndexedIndirectCountAMD),
  (b"vkGetShaderInfoAMD", FnGetShaderInfoAMD),
  (b"vkCmdBeginConditionalRenderingEXT", FnCmdBeginConditionalRenderingEXT),
  (b"vkCmdEndConditionalRenderingEXT", FnCmdEndConditionalRenderingEXT),
  (b"vkCmdProcessCommandsNVX", FnCmdProcessCommandsNVX),
  (b"vkCmdReserveSpaceForCommandsNVX", FnCmdReserveSpaceForCommandsNVX),
  (b"vkCreateIndirectCommandsLayoutNVX", FnCreateIndirectCommandsLayoutNVX),
  (b"vkDestroyIndirectCommandsLayoutNVX", FnDestroyIndirectCommandsLayoutNVX),
  (b"vkCreateObjectTableNVX", FnCreateObjectTableNVX),
  (b"vkDestroyObjectTableNVX", FnDestroyObjectTableNVX),
  (b"vkRegisterObjectsNVX", FnRegisterObjectsNVX),
  (b"vkUnregisterObjectsNVX", FnUnregisterObjectsNVX),
  (b"vkCmdSetViewportWScalingNV", FnCmdSetViewportWScalingNV),
  (b"vkDisplayPowerControlEXT", FnDisplayPowerControlEXT),
  (b"vkRegisterDeviceEventEXT", FnRegisterDeviceEventEXT),
  (b"vkRegisterDisplayEventEXT", FnRegisterDisplayEventEXT),
  (b"vkGetSwapchainCounterEXT", FnGetSwapchainCounterEXT),
  (b"vkGetRefreshCycleDurationGOOGLE", FnGetRefreshCycleDurationGOOGLE),
  (b"vkGetPastPresentationTimingGOOGLE", FnGetPastPresentationTimingGOOGLE),
  (b"vkCmdSetDiscardRectangleEXT", FnCmdSetDiscardRectangleEXT),
  (b"vkSetHdrMetadataEXT", FnSetHdrMetadataEXT),
  (b"vkSetDebugUtilsObjectNameEXT", FnSetDebugUtilsObjectNameEXT),
  (b"vkSetDebugUtilsObjectTagEXT", FnSetDebugUtilsObjectTagEXT),
  (b"vkQueueBeginDebugUtilsLabelEXT", FnQueueBeginDebugUtilsLabelEXT),
  (b"vkQueueEndDebugUtilsLabelEXT", FnQueueEndDebugUtilsLabelEXT),
  (b"vkQueueInsertDebugUtilsLabelEXT", FnQueueInsertDebugUtilsLabelEXT),
  (b"vkCmdBeginDebugUtilsLabelEXT", FnCmdBeginDebugUtilsLabelEXT),
  (b"vkCmdEndDebugUtilsLabelEXT", FnCmdEndDebugUtilsLabelEXT),
  (b"vkCmdInsertDebugUtilsLabelEXT", FnCmdInsertDebugUtilsLabelEXT),
  (b"vkCmdSetSampleLocationsEXT", FnCmdSetSampleLocationsEXT),
  (b"vkGetImageDrmFormatModifierPropertiesEXT", FnGetImageDrmFormatModifierPropertiesEXT),
  (b"vkCreateValidationCacheEXT", FnCreateValidationCacheEXT),
  (b"vkDestroyValidationCacheEXT", FnDestroyValidationCacheEXT),
  (b"vkMergeValidationCachesEXT", FnMergeValidationCachesEXT),
  (b"vkGetValidationCacheDataEXT", FnGetValidationCacheDataEXT),
  (b"vkCmdBindShadingRateImageNV", FnCmdBindShadingRateImageNV),
  (b"vkCmdSetViewportShadingRatePaletteNV", FnCmdSetViewportShadingRatePaletteNV),
  (b"vkCmdSetCoarseSampleOrderNV", FnCmdSetCoarseSampleOrderNV),
  (b"vkCreateAccelerationStructureNV", FnCreateAccelerationStructureNV),
  (b"vkDestroyAccelerationStructureNV", FnDestroyAccelerationStructureNV),
  (b"vkGetAccelerationStructureMemoryRequirementsNV", FnGetAccelerationStructureMemoryRequirementsNV),
  (b"vkBindAccelerationStructureMemoryNV", FnBindAccelerationStructureMemoryNV),
  (b"vkCmdBuildAccelerationStructureNV", FnCmdBuildAccelerationStructureNV),
  (b"vkCmdCopyAccelerationStructureNV", FnCmdCopyAccelerationStructureNV),
  (b"vkCmdTraceRaysNV", FnCmdTraceRaysNV),
  (b"vkCreateRayTracingPipelinesNV", FnCreateRayTracingPipelinesNV),
  (b"vkGetRayTracingShaderGroupHandlesNV", FnGetRayTracingShaderGroupHandlesNV),
  (b"vkGetAccelerationStructureHandleNV", FnGetAccelerationStructureHandleNV),
  (b"vkCmdWriteAccelerationStructuresPropertiesNV", FnCmdWriteAccelerationStructuresPropertiesNV),
  (b"vkCompileDeferredNV", FnCompileDeferredNV),
  (b"vkGetMemoryHostPointerPropertiesEXT", FnGetMemoryHostPointerPropertiesEXT),
  (b"vkCmdWriteBufferMarkerAMD", FnCmdWriteBufferMarkerAMD),
  (b"vkGetCalibratedTimestampsEXT", FnGetCalibratedTimestampsEXT),
  (b"vkCmdDrawMeshTasksNV", FnCmdDrawMeshTasksNV),
  (b"vkCmdDrawMeshTasksIndirectNV", FnCmdDrawMeshTasksIndirectNV),
  (b"vkCmdDrawMeshTasksIndirectCountNV", FnCmdDrawMeshTasksIndirectCountNV),
  (b"vkCmdSetExclusiveScissorNV", FnCmdSetExclusiveScissorNV),
  (b"vkCmdSetCheckpointNV", FnCmdSetCheckpointNV),
  (b"vkGetQueueCheckpointDataNV", FnGetQueueCheckpointDataNV),
  (b"vkGetMemoryWin32HandleKHR", FnGetMemoryWin32HandleKHR),
  (b"vkGetMemoryWin32HandlePropertiesKHR", FnGetMemoryWin32HandlePropertiesKHR),
  (b"vkImportSemaphoreWin32HandleKHR", FnImportSemaphoreWin32HandleKHR),
  (b"vkGetSemaphoreWin32HandleKHR", FnGetSemaphoreWin32HandleKHR),
  (b"vkImportFenceWin32HandleKHR", FnImportFenceWin32HandleKHR),
  (b"vkGetFenceWin32HandleKHR", FnGetFenceWin32HandleKHR),
  (b"vkGetMemoryWin32HandleNV", FnGetMemoryWin32HandleNV),
)

LoaderFunctions = (
  (b"vkCreateInstance", FnCreateInstance),
  (b"vkEnumerateInstanceExtensionProperties", FnEnumerateInstanceExtensionProperties),
  (b"vkEnumerateInstanceLayerProperties", FnEnumerateInstanceLayerProperties),
  (b"vkEnumerateInstanceVersion", FnEnumerateInstanceVersion),
  (b"vkDebugUtilsMessengerCallbackEXT", FnDebugUtilsMessengerCallbackEXT),
)



# Loading proc
GetInstanceProcAddr = FnGetInstanceProcAddr((b"vkGetInstanceProcAddr", vk))

# Load the loader functions in the module namespace
loc = locals()
for name, fnptr in load_functions(Instance(0), LoaderFunctions, GetInstanceProcAddr):
    loc[name] = fnptr
del loc