Documentation
#include "loader.h"
#include "stdio.h"
#include "stdlib.h"

#ifdef __linux
#include <dlfcn.h>
#endif
#ifdef _WIN32
#include <windows.h>
#endif

void assign_fn(void** fn, void* proc)
{
    if(proc)  *fn = proc;
}

#define Load_Global_Function(fn)	assign_fn((void**)&fn, vkGetInstanceProcAddr(0, #fn));        
#define Load_Function(fn)	        assign_fn((void**)&fn, vkGetInstanceProcAddr(instance, #fn)); //if(!fn) printf("%s\n", #fn);
#define Load_Device_Function(fn)    assign_fn((void**)&fn, vkGetDeviceProcAddr(device, #fn));     

int load_fn()
{
#ifdef __linux
    void* lib = dlopen("libvulkan.so.1", RTLD_NOW);
	if (!lib)
	{
		printf("FAILED TO FIND libvulkan.so.1\n");
		return 0;
	}
	vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlsym(lib, "vkGetInstanceProcAddr");
#endif
#ifdef _WIN32
    HMODULE lib = LoadLibraryA("vulkan-1.dll");
    if (!lib)
	{
		printf("FAILED TO FIND vulkan-1.dll\n");
		return 0;
	}
    vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)GetProcAddress(lib, "vkGetInstanceProcAddr");
#endif
    if (!vkGetInstanceProcAddr)
	{
		printf("FAILED to load vkGetInstanceProcAddr\n Make sure you have the latest drivers installed\n");
		return 0;
	}
    Load_Global_Function(vkCreateInstance);
    Load_Global_Function(vkEnumerateInstanceExtensionProperties);
    Load_Global_Function(vkEnumerateInstanceLayerProperties);
    Load_Global_Function(vkEnumerateInstanceVersion);

    return 1;
}

void load_instance_fn(VkInstance instance)
{
    Load_Function(vkAllocationFunction);
    Load_Function(vkReallocationFunction);
    Load_Function(vkFreeFunction);
    Load_Function(vkInternalAllocationNotification);
    Load_Function(vkInternalFreeNotification);
    Load_Function(vkVoidFunction);
    Load_Function(vkCreateInstance);
    Load_Function(vkDestroyInstance);
    Load_Function(vkEnumeratePhysicalDevices);
    Load_Function(vkGetPhysicalDeviceFeatures);
    Load_Function(vkGetPhysicalDeviceFormatProperties);
    Load_Function(vkGetPhysicalDeviceImageFormatProperties);
    Load_Function(vkGetPhysicalDeviceProperties);
    Load_Function(vkGetPhysicalDeviceQueueFamilyProperties);
    Load_Function(vkGetPhysicalDeviceMemoryProperties);
    Load_Function(vkGetInstanceProcAddr);
    Load_Function(vkGetDeviceProcAddr);
    Load_Function(vkCreateDevice);
    Load_Function(vkDestroyDevice);
    Load_Function(vkEnumerateInstanceExtensionProperties);
    Load_Function(vkEnumerateDeviceExtensionProperties);
    Load_Function(vkEnumerateInstanceLayerProperties);
    Load_Function(vkEnumerateDeviceLayerProperties);
    Load_Function(vkGetDeviceQueue);
    Load_Function(vkQueueSubmit);
    Load_Function(vkQueueWaitIdle);
    Load_Function(vkDeviceWaitIdle);
    Load_Function(vkAllocateMemory);
    Load_Function(vkFreeMemory);
    Load_Function(vkMapMemory);
    Load_Function(vkUnmapMemory);
    Load_Function(vkFlushMappedMemoryRanges);
    Load_Function(vkInvalidateMappedMemoryRanges);
    Load_Function(vkGetDeviceMemoryCommitment);
    Load_Function(vkBindBufferMemory);
    Load_Function(vkBindImageMemory);
    Load_Function(vkGetBufferMemoryRequirements);
    Load_Function(vkGetImageMemoryRequirements);
    Load_Function(vkGetImageSparseMemoryRequirements);
    Load_Function(vkGetPhysicalDeviceSparseImageFormatProperties);
    Load_Function(vkQueueBindSparse);
    Load_Function(vkCreateFence);
    Load_Function(vkDestroyFence);
    Load_Function(vkResetFences);
    Load_Function(vkGetFenceStatus);
    Load_Function(vkWaitForFences);
    Load_Function(vkCreateSemaphore);
    Load_Function(vkDestroySemaphore);
    Load_Function(vkCreateEvent);
    Load_Function(vkDestroyEvent);
    Load_Function(vkGetEventStatus);
    Load_Function(vkSetEvent);
    Load_Function(vkResetEvent);
    Load_Function(vkCreateQueryPool);
    Load_Function(vkDestroyQueryPool);
    Load_Function(vkGetQueryPoolResults);
    Load_Function(vkCreateBuffer);
    Load_Function(vkDestroyBuffer);
    Load_Function(vkCreateBufferView);
    Load_Function(vkDestroyBufferView);
    Load_Function(vkCreateImage);
    Load_Function(vkDestroyImage);
    Load_Function(vkGetImageSubresourceLayout);
    Load_Function(vkCreateImageView);
    Load_Function(vkDestroyImageView);
    Load_Function(vkCreateShaderModule);
    Load_Function(vkDestroyShaderModule);
    Load_Function(vkCreatePipelineCache);
    Load_Function(vkDestroyPipelineCache);
    Load_Function(vkGetPipelineCacheData);
    Load_Function(vkMergePipelineCaches);
    Load_Function(vkCreateGraphicsPipelines);
    Load_Function(vkCreateComputePipelines);
    Load_Function(vkDestroyPipeline);
    Load_Function(vkCreatePipelineLayout);
    Load_Function(vkDestroyPipelineLayout);
    Load_Function(vkCreateSampler);
    Load_Function(vkDestroySampler);
    Load_Function(vkCreateDescriptorSetLayout);
    Load_Function(vkDestroyDescriptorSetLayout);
    Load_Function(vkCreateDescriptorPool);
    Load_Function(vkDestroyDescriptorPool);
    Load_Function(vkResetDescriptorPool);
    Load_Function(vkAllocateDescriptorSets);
    Load_Function(vkFreeDescriptorSets);
    Load_Function(vkUpdateDescriptorSets);
    Load_Function(vkCreateFramebuffer);
    Load_Function(vkDestroyFramebuffer);
    Load_Function(vkCreateRenderPass);
    Load_Function(vkDestroyRenderPass);
    Load_Function(vkGetRenderAreaGranularity);
    Load_Function(vkCreateCommandPool);
    Load_Function(vkDestroyCommandPool);
    Load_Function(vkResetCommandPool);
    Load_Function(vkAllocateCommandBuffers);
    Load_Function(vkFreeCommandBuffers);
    Load_Function(vkBeginCommandBuffer);
    Load_Function(vkEndCommandBuffer);
    Load_Function(vkResetCommandBuffer);
    Load_Function(vkCmdBindPipeline);
    Load_Function(vkCmdSetViewport);
    Load_Function(vkCmdSetScissor);
    Load_Function(vkCmdSetLineWidth);
    Load_Function(vkCmdSetDepthBias);
    Load_Function(vkCmdSetBlendConstants);
    Load_Function(vkCmdSetDepthBounds);
    Load_Function(vkCmdSetStencilCompareMask);
    Load_Function(vkCmdSetStencilWriteMask);
    Load_Function(vkCmdSetStencilReference);
    Load_Function(vkCmdBindDescriptorSets);
    Load_Function(vkCmdBindIndexBuffer);
    Load_Function(vkCmdBindVertexBuffers);
    Load_Function(vkCmdDraw);
    Load_Function(vkCmdDrawIndexed);
    Load_Function(vkCmdDrawIndirect);
    Load_Function(vkCmdDrawIndexedIndirect);
    Load_Function(vkCmdDispatch);
    Load_Function(vkCmdDispatchIndirect);
    Load_Function(vkCmdCopyBuffer);
    Load_Function(vkCmdCopyImage);
    Load_Function(vkCmdBlitImage);
    Load_Function(vkCmdCopyBufferToImage);
    Load_Function(vkCmdCopyImageToBuffer);
    Load_Function(vkCmdUpdateBuffer);
    Load_Function(vkCmdFillBuffer);
    Load_Function(vkCmdClearColorImage);
    Load_Function(vkCmdClearDepthStencilImage);
    Load_Function(vkCmdClearAttachments);
    Load_Function(vkCmdResolveImage);
    Load_Function(vkCmdSetEvent);
    Load_Function(vkCmdResetEvent);
    Load_Function(vkCmdWaitEvents);
    Load_Function(vkCmdPipelineBarrier);
    Load_Function(vkCmdBeginQuery);
    Load_Function(vkCmdEndQuery);
    Load_Function(vkCmdResetQueryPool);
    Load_Function(vkCmdWriteTimestamp);
    Load_Function(vkCmdCopyQueryPoolResults);
    Load_Function(vkCmdPushConstants);
    Load_Function(vkCmdBeginRenderPass);
    Load_Function(vkCmdNextSubpass);
    Load_Function(vkCmdEndRenderPass);
    Load_Function(vkCmdExecuteCommands);
    Load_Function(vkEnumerateInstanceVersion);
    Load_Function(vkBindBufferMemory2);
    Load_Function(vkBindImageMemory2);
    Load_Function(vkGetDeviceGroupPeerMemoryFeatures);
    Load_Function(vkCmdSetDeviceMask);
    Load_Function(vkCmdDispatchBase);
    Load_Function(vkEnumeratePhysicalDeviceGroups);
    Load_Function(vkGetImageMemoryRequirements2);
    Load_Function(vkGetBufferMemoryRequirements2);
    Load_Function(vkGetImageSparseMemoryRequirements2);
    Load_Function(vkGetPhysicalDeviceFeatures2);
    Load_Function(vkGetPhysicalDeviceProperties2);
    Load_Function(vkGetPhysicalDeviceFormatProperties2);
    Load_Function(vkGetPhysicalDeviceImageFormatProperties2);
    Load_Function(vkGetPhysicalDeviceQueueFamilyProperties2);
    Load_Function(vkGetPhysicalDeviceMemoryProperties2);
    Load_Function(vkGetPhysicalDeviceSparseImageFormatProperties2);
    Load_Function(vkTrimCommandPool);
    Load_Function(vkGetDeviceQueue2);
    Load_Function(vkCreateSamplerYcbcrConversion);
    Load_Function(vkDestroySamplerYcbcrConversion);
    Load_Function(vkCreateDescriptorUpdateTemplate);
    Load_Function(vkDestroyDescriptorUpdateTemplate);
    Load_Function(vkUpdateDescriptorSetWithTemplate);
    Load_Function(vkGetPhysicalDeviceExternalBufferProperties);
    Load_Function(vkGetPhysicalDeviceExternalFenceProperties);
    Load_Function(vkGetPhysicalDeviceExternalSemaphoreProperties);
    Load_Function(vkGetDescriptorSetLayoutSupport);
    Load_Function(vkCmdDrawIndirectCount);
    Load_Function(vkCmdDrawIndexedIndirectCount);
    Load_Function(vkCreateRenderPass2);
    Load_Function(vkCmdBeginRenderPass2);
    Load_Function(vkCmdNextSubpass2);
    Load_Function(vkCmdEndRenderPass2);
    Load_Function(vkResetQueryPool);
    Load_Function(vkGetSemaphoreCounterValue);
    Load_Function(vkWaitSemaphores);
    Load_Function(vkSignalSemaphore);
    Load_Function(vkGetBufferDeviceAddress);
    Load_Function(vkGetBufferOpaqueCaptureAddress);
    Load_Function(vkGetDeviceMemoryOpaqueCaptureAddress);
    Load_Function(vkDestroySurfaceKHR);
    Load_Function(vkGetPhysicalDeviceSurfaceSupportKHR);
    Load_Function(vkGetPhysicalDeviceSurfaceCapabilitiesKHR);
    Load_Function(vkGetPhysicalDeviceSurfaceFormatsKHR);
    Load_Function(vkGetPhysicalDeviceSurfacePresentModesKHR);
    Load_Function(vkCreateSwapchainKHR);
    Load_Function(vkDestroySwapchainKHR);
    Load_Function(vkGetSwapchainImagesKHR);
    Load_Function(vkAcquireNextImageKHR);
    Load_Function(vkQueuePresentKHR);
    Load_Function(vkGetDeviceGroupPresentCapabilitiesKHR);
    Load_Function(vkGetDeviceGroupSurfacePresentModesKHR);
    Load_Function(vkGetPhysicalDevicePresentRectanglesKHR);
    Load_Function(vkAcquireNextImage2KHR);
    Load_Function(vkGetPhysicalDeviceDisplayPropertiesKHR);
    Load_Function(vkGetPhysicalDeviceDisplayPlanePropertiesKHR);
    Load_Function(vkGetDisplayPlaneSupportedDisplaysKHR);
    Load_Function(vkGetDisplayModePropertiesKHR);
    Load_Function(vkCreateDisplayModeKHR);
    Load_Function(vkGetDisplayPlaneCapabilitiesKHR);
    Load_Function(vkCreateDisplayPlaneSurfaceKHR);
    Load_Function(vkCreateSharedSwapchainsKHR);
    Load_Function(vkGetPhysicalDeviceFeatures2KHR);
    Load_Function(vkGetPhysicalDeviceProperties2KHR);
    Load_Function(vkGetPhysicalDeviceFormatProperties2KHR);
    Load_Function(vkGetPhysicalDeviceImageFormatProperties2KHR);
    Load_Function(vkGetPhysicalDeviceQueueFamilyProperties2KHR);
    Load_Function(vkGetPhysicalDeviceMemoryProperties2KHR);
    Load_Function(vkGetPhysicalDeviceSparseImageFormatProperties2KHR);
    Load_Function(vkGetDeviceGroupPeerMemoryFeaturesKHR);
    Load_Function(vkCmdSetDeviceMaskKHR);
    Load_Function(vkCmdDispatchBaseKHR);
    Load_Function(vkTrimCommandPoolKHR);
    Load_Function(vkEnumeratePhysicalDeviceGroupsKHR);
    Load_Function(vkGetPhysicalDeviceExternalBufferPropertiesKHR);
    Load_Function(vkGetMemoryFdKHR);
    Load_Function(vkGetMemoryFdPropertiesKHR);
    Load_Function(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR);
    Load_Function(vkImportSemaphoreFdKHR);
    Load_Function(vkGetSemaphoreFdKHR);
    Load_Function(vkCmdPushDescriptorSetKHR);
    Load_Function(vkCmdPushDescriptorSetWithTemplateKHR);
    Load_Function(vkCreateDescriptorUpdateTemplateKHR);
    Load_Function(vkDestroyDescriptorUpdateTemplateKHR);
    Load_Function(vkUpdateDescriptorSetWithTemplateKHR);
    Load_Function(vkCreateRenderPass2KHR);
    Load_Function(vkCmdBeginRenderPass2KHR);
    Load_Function(vkCmdNextSubpass2KHR);
    Load_Function(vkCmdEndRenderPass2KHR);
    Load_Function(vkGetSwapchainStatusKHR);
    Load_Function(vkGetPhysicalDeviceExternalFencePropertiesKHR);
    Load_Function(vkImportFenceFdKHR);
    Load_Function(vkGetFenceFdKHR);
    Load_Function(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR);
    Load_Function(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR);
    Load_Function(vkAcquireProfilingLockKHR);
    Load_Function(vkReleaseProfilingLockKHR);
    Load_Function(vkGetPhysicalDeviceSurfaceCapabilities2KHR);
    Load_Function(vkGetPhysicalDeviceSurfaceFormats2KHR);
    Load_Function(vkGetPhysicalDeviceDisplayProperties2KHR);
    Load_Function(vkGetPhysicalDeviceDisplayPlaneProperties2KHR);
    Load_Function(vkGetDisplayModeProperties2KHR);
    Load_Function(vkGetDisplayPlaneCapabilities2KHR);
    Load_Function(vkGetImageMemoryRequirements2KHR);
    Load_Function(vkGetBufferMemoryRequirements2KHR);
    Load_Function(vkGetImageSparseMemoryRequirements2KHR);
    Load_Function(vkCreateSamplerYcbcrConversionKHR);
    Load_Function(vkDestroySamplerYcbcrConversionKHR);
    Load_Function(vkBindBufferMemory2KHR);
    Load_Function(vkBindImageMemory2KHR);
    Load_Function(vkGetDescriptorSetLayoutSupportKHR);
    Load_Function(vkCmdDrawIndirectCountKHR);
    Load_Function(vkCmdDrawIndexedIndirectCountKHR);
    Load_Function(vkGetSemaphoreCounterValueKHR);
    Load_Function(vkWaitSemaphoresKHR);
    Load_Function(vkSignalSemaphoreKHR);
    Load_Function(vkGetBufferDeviceAddressKHR);
    Load_Function(vkGetBufferOpaqueCaptureAddressKHR);
    Load_Function(vkGetDeviceMemoryOpaqueCaptureAddressKHR);
    Load_Function(vkGetPipelineExecutablePropertiesKHR);
    Load_Function(vkGetPipelineExecutableStatisticsKHR);
    Load_Function(vkGetPipelineExecutableInternalRepresentationsKHR);
    Load_Function(vkDebugReportCallbackEXT);
    Load_Function(vkCreateDebugReportCallbackEXT);
    Load_Function(vkDestroyDebugReportCallbackEXT);
    Load_Function(vkDebugReportMessageEXT);
    Load_Function(vkDebugMarkerSetObjectTagEXT);
    Load_Function(vkDebugMarkerSetObjectNameEXT);
    Load_Function(vkCmdDebugMarkerBeginEXT);
    Load_Function(vkCmdDebugMarkerEndEXT);
    Load_Function(vkCmdDebugMarkerInsertEXT);
    Load_Function(vkCmdBindTransformFeedbackBuffersEXT);
    Load_Function(vkCmdBeginTransformFeedbackEXT);
    Load_Function(vkCmdEndTransformFeedbackEXT);
    Load_Function(vkCmdBeginQueryIndexedEXT);
    Load_Function(vkCmdEndQueryIndexedEXT);
    Load_Function(vkCmdDrawIndirectByteCountEXT);
    Load_Function(vkGetImageViewHandleNVX);
    Load_Function(vkGetImageViewAddressNVX);
    Load_Function(vkCmdDrawIndirectCountAMD);
    Load_Function(vkCmdDrawIndexedIndirectCountAMD);
    Load_Function(vkGetShaderInfoAMD);
    Load_Function(vkGetPhysicalDeviceExternalImageFormatPropertiesNV);
    Load_Function(vkCmdBeginConditionalRenderingEXT);
    Load_Function(vkCmdEndConditionalRenderingEXT);
    Load_Function(vkCmdSetViewportWScalingNV);
    Load_Function(vkReleaseDisplayEXT);
    Load_Function(vkGetPhysicalDeviceSurfaceCapabilities2EXT);
    Load_Function(vkDisplayPowerControlEXT);
    Load_Function(vkRegisterDeviceEventEXT);
    Load_Function(vkRegisterDisplayEventEXT);
    Load_Function(vkGetSwapchainCounterEXT);
    Load_Function(vkGetRefreshCycleDurationGOOGLE);
    Load_Function(vkGetPastPresentationTimingGOOGLE);
    Load_Function(vkCmdSetDiscardRectangleEXT);
    Load_Function(vkSetHdrMetadataEXT);
    Load_Function(vkDebugUtilsMessengerCallbackEXT);
    Load_Function(vkSetDebugUtilsObjectNameEXT);
    Load_Function(vkSetDebugUtilsObjectTagEXT);
    Load_Function(vkQueueBeginDebugUtilsLabelEXT);
    Load_Function(vkQueueEndDebugUtilsLabelEXT);
    Load_Function(vkQueueInsertDebugUtilsLabelEXT);
    Load_Function(vkCmdBeginDebugUtilsLabelEXT);
    Load_Function(vkCmdEndDebugUtilsLabelEXT);
    Load_Function(vkCmdInsertDebugUtilsLabelEXT);
    Load_Function(vkCreateDebugUtilsMessengerEXT);
    Load_Function(vkDestroyDebugUtilsMessengerEXT);
    Load_Function(vkSubmitDebugUtilsMessageEXT);
    Load_Function(vkCmdSetSampleLocationsEXT);
    Load_Function(vkGetPhysicalDeviceMultisamplePropertiesEXT);
    Load_Function(vkGetImageDrmFormatModifierPropertiesEXT);
    Load_Function(vkCreateValidationCacheEXT);
    Load_Function(vkDestroyValidationCacheEXT);
    Load_Function(vkMergeValidationCachesEXT);
    Load_Function(vkGetValidationCacheDataEXT);
    Load_Function(vkCmdBindShadingRateImageNV);
    Load_Function(vkCmdSetViewportShadingRatePaletteNV);
    Load_Function(vkCmdSetCoarseSampleOrderNV);
    Load_Function(vkCreateAccelerationStructureNV);
    Load_Function(vkDestroyAccelerationStructureKHR);
    Load_Function(vkDestroyAccelerationStructureNV);
    Load_Function(vkGetAccelerationStructureMemoryRequirementsNV);
    Load_Function(vkBindAccelerationStructureMemoryKHR);
    Load_Function(vkBindAccelerationStructureMemoryNV);
    Load_Function(vkCmdBuildAccelerationStructureNV);
    Load_Function(vkCmdCopyAccelerationStructureNV);
    Load_Function(vkCmdTraceRaysNV);
    Load_Function(vkCreateRayTracingPipelinesNV);
    Load_Function(vkGetRayTracingShaderGroupHandlesKHR);
    Load_Function(vkGetRayTracingShaderGroupHandlesNV);
    Load_Function(vkGetAccelerationStructureHandleNV);
    Load_Function(vkCmdWriteAccelerationStructuresPropertiesKHR);
    Load_Function(vkCmdWriteAccelerationStructuresPropertiesNV);
    Load_Function(vkCompileDeferredNV);
    Load_Function(vkGetMemoryHostPointerPropertiesEXT);
    Load_Function(vkCmdWriteBufferMarkerAMD);
    Load_Function(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT);
    Load_Function(vkGetCalibratedTimestampsEXT);
    Load_Function(vkCmdDrawMeshTasksNV);
    Load_Function(vkCmdDrawMeshTasksIndirectNV);
    Load_Function(vkCmdDrawMeshTasksIndirectCountNV);
    Load_Function(vkCmdSetExclusiveScissorNV);
    Load_Function(vkCmdSetCheckpointNV);
    Load_Function(vkGetQueueCheckpointDataNV);
    Load_Function(vkInitializePerformanceApiINTEL);
    Load_Function(vkUninitializePerformanceApiINTEL);
    Load_Function(vkCmdSetPerformanceMarkerINTEL);
    Load_Function(vkCmdSetPerformanceStreamMarkerINTEL);
    Load_Function(vkCmdSetPerformanceOverrideINTEL);
    Load_Function(vkAcquirePerformanceConfigurationINTEL);
    Load_Function(vkReleasePerformanceConfigurationINTEL);
    Load_Function(vkQueueSetPerformanceConfigurationINTEL);
    Load_Function(vkGetPerformanceParameterINTEL);
    Load_Function(vkSetLocalDimmingAMD);
    Load_Function(vkGetBufferDeviceAddressEXT);
    Load_Function(vkGetPhysicalDeviceToolPropertiesEXT);
    Load_Function(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV);
    Load_Function(vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV);
    Load_Function(vkCreateHeadlessSurfaceEXT);
    Load_Function(vkCmdSetLineStippleEXT);
    Load_Function(vkResetQueryPoolEXT);
    Load_Function(vkGetGeneratedCommandsMemoryRequirementsNV);
    Load_Function(vkCmdPreprocessGeneratedCommandsNV);
    Load_Function(vkCmdExecuteGeneratedCommandsNV);
    Load_Function(vkCmdBindPipelineShaderGroupNV);
    Load_Function(vkCreateIndirectCommandsLayoutNV);
    Load_Function(vkDestroyIndirectCommandsLayoutNV);
    Load_Function(vkCreatePrivateDataSlotEXT);
    Load_Function(vkDestroyPrivateDataSlotEXT);
    Load_Function(vkSetPrivateDataEXT);
    Load_Function(vkGetPrivateDataEXT);

    Load_Function(vkCreateWin32SurfaceKHR);
    Load_Function(vkGetPhysicalDeviceWin32PresentationSupportKHR);
    Load_Function(vkGetMemoryWin32HandleKHR);
    Load_Function(vkGetMemoryWin32HandlePropertiesKHR);
    Load_Function(vkImportSemaphoreWin32HandleKHR);
    Load_Function(vkGetSemaphoreWin32HandleKHR);
    Load_Function(vkImportFenceWin32HandleKHR);
    Load_Function(vkGetFenceWin32HandleKHR);
    Load_Function(vkGetMemoryWin32HandleNV);
    Load_Function(vkGetPhysicalDeviceSurfacePresentModes2EXT);
    Load_Function(vkAcquireFullScreenExclusiveModeEXT);
    Load_Function(vkReleaseFullScreenExclusiveModeEXT);
    Load_Function(vkGetDeviceGroupSurfacePresentModes2EXT);

    Load_Function(vkCreateXlibSurfaceKHR);
    Load_Function(vkGetPhysicalDeviceXlibPresentationSupportKHR);

    Load_Function(vkCreateXcbSurfaceKHR);
    Load_Function(vkGetPhysicalDeviceXcbPresentationSupportKHR);

    Load_Function(vkCreateWaylandSurfaceKHR);
    Load_Function(vkGetPhysicalDeviceWaylandPresentationSupportKHR);
  
    Load_Function(vkCreateAndroidSurfaceKHR);
    Load_Function(vkGetAndroidHardwareBufferPropertiesANDROID);
    Load_Function(vkGetMemoryAndroidHardwareBufferANDROID);
}

void load_device_fn(VkDevice device)
{
    Load_Device_Function(vkAllocationFunction);
    Load_Device_Function(vkReallocationFunction);
    Load_Device_Function(vkFreeFunction);
    Load_Device_Function(vkInternalAllocationNotification);
    Load_Device_Function(vkInternalFreeNotification);
    Load_Device_Function(vkVoidFunction);
    Load_Device_Function(vkCreateInstance);
    Load_Device_Function(vkDestroyInstance);
    Load_Device_Function(vkEnumeratePhysicalDevices);
    Load_Device_Function(vkGetPhysicalDeviceFeatures);
    Load_Device_Function(vkGetPhysicalDeviceFormatProperties);
    Load_Device_Function(vkGetPhysicalDeviceImageFormatProperties);
    Load_Device_Function(vkGetPhysicalDeviceProperties);
    Load_Device_Function(vkGetPhysicalDeviceQueueFamilyProperties);
    Load_Device_Function(vkGetPhysicalDeviceMemoryProperties);
    Load_Device_Function(vkGetInstanceProcAddr);
    Load_Device_Function(vkGetDeviceProcAddr);
    Load_Device_Function(vkCreateDevice);
    Load_Device_Function(vkDestroyDevice);
    Load_Device_Function(vkEnumerateInstanceExtensionProperties);
    Load_Device_Function(vkEnumerateDeviceExtensionProperties);
    Load_Device_Function(vkEnumerateInstanceLayerProperties);
    Load_Device_Function(vkEnumerateDeviceLayerProperties);
    Load_Device_Function(vkGetDeviceQueue);
    Load_Device_Function(vkQueueSubmit);
    Load_Device_Function(vkQueueWaitIdle);
    Load_Device_Function(vkDeviceWaitIdle);
    Load_Device_Function(vkAllocateMemory);
    Load_Device_Function(vkFreeMemory);
    Load_Device_Function(vkMapMemory);
    Load_Device_Function(vkUnmapMemory);
    Load_Device_Function(vkFlushMappedMemoryRanges);
    Load_Device_Function(vkInvalidateMappedMemoryRanges);
    Load_Device_Function(vkGetDeviceMemoryCommitment);
    Load_Device_Function(vkBindBufferMemory);
    Load_Device_Function(vkBindImageMemory);
    Load_Device_Function(vkGetBufferMemoryRequirements);
    Load_Device_Function(vkGetImageMemoryRequirements);
    Load_Device_Function(vkGetImageSparseMemoryRequirements);
    Load_Device_Function(vkGetPhysicalDeviceSparseImageFormatProperties);
    Load_Device_Function(vkQueueBindSparse);
    Load_Device_Function(vkCreateFence);
    Load_Device_Function(vkDestroyFence);
    Load_Device_Function(vkResetFences);
    Load_Device_Function(vkGetFenceStatus);
    Load_Device_Function(vkWaitForFences);
    Load_Device_Function(vkCreateSemaphore);
    Load_Device_Function(vkDestroySemaphore);
    Load_Device_Function(vkCreateEvent);
    Load_Device_Function(vkDestroyEvent);
    Load_Device_Function(vkGetEventStatus);
    Load_Device_Function(vkSetEvent);
    Load_Device_Function(vkResetEvent);
    Load_Device_Function(vkCreateQueryPool);
    Load_Device_Function(vkDestroyQueryPool);
    Load_Device_Function(vkGetQueryPoolResults);
    Load_Device_Function(vkCreateBuffer);
    Load_Device_Function(vkDestroyBuffer);
    Load_Device_Function(vkCreateBufferView);
    Load_Device_Function(vkDestroyBufferView);
    Load_Device_Function(vkCreateImage);
    Load_Device_Function(vkDestroyImage);
    Load_Device_Function(vkGetImageSubresourceLayout);
    Load_Device_Function(vkCreateImageView);
    Load_Device_Function(vkDestroyImageView);
    Load_Device_Function(vkCreateShaderModule);
    Load_Device_Function(vkDestroyShaderModule);
    Load_Device_Function(vkCreatePipelineCache);
    Load_Device_Function(vkDestroyPipelineCache);
    Load_Device_Function(vkGetPipelineCacheData);
    Load_Device_Function(vkMergePipelineCaches);
    Load_Device_Function(vkCreateGraphicsPipelines);
    Load_Device_Function(vkCreateComputePipelines);
    Load_Device_Function(vkDestroyPipeline);
    Load_Device_Function(vkCreatePipelineLayout);
    Load_Device_Function(vkDestroyPipelineLayout);
    Load_Device_Function(vkCreateSampler);
    Load_Device_Function(vkDestroySampler);
    Load_Device_Function(vkCreateDescriptorSetLayout);
    Load_Device_Function(vkDestroyDescriptorSetLayout);
    Load_Device_Function(vkCreateDescriptorPool);
    Load_Device_Function(vkDestroyDescriptorPool);
    Load_Device_Function(vkResetDescriptorPool);
    Load_Device_Function(vkAllocateDescriptorSets);
    Load_Device_Function(vkFreeDescriptorSets);
    Load_Device_Function(vkUpdateDescriptorSets);
    Load_Device_Function(vkCreateFramebuffer);
    Load_Device_Function(vkDestroyFramebuffer);
    Load_Device_Function(vkCreateRenderPass);
    Load_Device_Function(vkDestroyRenderPass);
    Load_Device_Function(vkGetRenderAreaGranularity);
    Load_Device_Function(vkCreateCommandPool);
    Load_Device_Function(vkDestroyCommandPool);
    Load_Device_Function(vkResetCommandPool);
    Load_Device_Function(vkAllocateCommandBuffers);
    Load_Device_Function(vkFreeCommandBuffers);
    Load_Device_Function(vkBeginCommandBuffer);
    Load_Device_Function(vkEndCommandBuffer);
    Load_Device_Function(vkResetCommandBuffer);
    Load_Device_Function(vkCmdBindPipeline);
    Load_Device_Function(vkCmdSetViewport);
    Load_Device_Function(vkCmdSetScissor);
    Load_Device_Function(vkCmdSetLineWidth);
    Load_Device_Function(vkCmdSetDepthBias);
    Load_Device_Function(vkCmdSetBlendConstants);
    Load_Device_Function(vkCmdSetDepthBounds);
    Load_Device_Function(vkCmdSetStencilCompareMask);
    Load_Device_Function(vkCmdSetStencilWriteMask);
    Load_Device_Function(vkCmdSetStencilReference);
    Load_Device_Function(vkCmdBindDescriptorSets);
    Load_Device_Function(vkCmdBindIndexBuffer);
    Load_Device_Function(vkCmdBindVertexBuffers);
    Load_Device_Function(vkCmdDraw);
    Load_Device_Function(vkCmdDrawIndexed);
    Load_Device_Function(vkCmdDrawIndirect);
    Load_Device_Function(vkCmdDrawIndexedIndirect);
    Load_Device_Function(vkCmdDispatch);
    Load_Device_Function(vkCmdDispatchIndirect);
    Load_Device_Function(vkCmdCopyBuffer);
    Load_Device_Function(vkCmdCopyImage);
    Load_Device_Function(vkCmdBlitImage);
    Load_Device_Function(vkCmdCopyBufferToImage);
    Load_Device_Function(vkCmdCopyImageToBuffer);
    Load_Device_Function(vkCmdUpdateBuffer);
    Load_Device_Function(vkCmdFillBuffer);
    Load_Device_Function(vkCmdClearColorImage);
    Load_Device_Function(vkCmdClearDepthStencilImage);
    Load_Device_Function(vkCmdClearAttachments);
    Load_Device_Function(vkCmdResolveImage);
    Load_Device_Function(vkCmdSetEvent);
    Load_Device_Function(vkCmdResetEvent);
    Load_Device_Function(vkCmdWaitEvents);
    Load_Device_Function(vkCmdPipelineBarrier);
    Load_Device_Function(vkCmdBeginQuery);
    Load_Device_Function(vkCmdEndQuery);
    Load_Device_Function(vkCmdResetQueryPool);
    Load_Device_Function(vkCmdWriteTimestamp);
    Load_Device_Function(vkCmdCopyQueryPoolResults);
    Load_Device_Function(vkCmdPushConstants);
    Load_Device_Function(vkCmdBeginRenderPass);
    Load_Device_Function(vkCmdNextSubpass);
    Load_Device_Function(vkCmdEndRenderPass);
    Load_Device_Function(vkCmdExecuteCommands);
    Load_Device_Function(vkEnumerateInstanceVersion);
    Load_Device_Function(vkBindBufferMemory2);
    Load_Device_Function(vkBindImageMemory2);
    Load_Device_Function(vkGetDeviceGroupPeerMemoryFeatures);
    Load_Device_Function(vkCmdSetDeviceMask);
    Load_Device_Function(vkCmdDispatchBase);
    Load_Device_Function(vkEnumeratePhysicalDeviceGroups);
    Load_Device_Function(vkGetImageMemoryRequirements2);
    Load_Device_Function(vkGetBufferMemoryRequirements2);
    Load_Device_Function(vkGetImageSparseMemoryRequirements2);
    Load_Device_Function(vkGetPhysicalDeviceFeatures2);
    Load_Device_Function(vkGetPhysicalDeviceProperties2);
    Load_Device_Function(vkGetPhysicalDeviceFormatProperties2);
    Load_Device_Function(vkGetPhysicalDeviceImageFormatProperties2);
    Load_Device_Function(vkGetPhysicalDeviceQueueFamilyProperties2);
    Load_Device_Function(vkGetPhysicalDeviceMemoryProperties2);
    Load_Device_Function(vkGetPhysicalDeviceSparseImageFormatProperties2);
    Load_Device_Function(vkTrimCommandPool);
    Load_Device_Function(vkGetDeviceQueue2);
    Load_Device_Function(vkCreateSamplerYcbcrConversion);
    Load_Device_Function(vkDestroySamplerYcbcrConversion);
    Load_Device_Function(vkCreateDescriptorUpdateTemplate);
    Load_Device_Function(vkDestroyDescriptorUpdateTemplate);
    Load_Device_Function(vkUpdateDescriptorSetWithTemplate);
    Load_Device_Function(vkGetPhysicalDeviceExternalBufferProperties);
    Load_Device_Function(vkGetPhysicalDeviceExternalFenceProperties);
    Load_Device_Function(vkGetPhysicalDeviceExternalSemaphoreProperties);
    Load_Device_Function(vkGetDescriptorSetLayoutSupport);
    Load_Device_Function(vkCmdDrawIndirectCount);
    Load_Device_Function(vkCmdDrawIndexedIndirectCount);
    Load_Device_Function(vkCreateRenderPass2);
    Load_Device_Function(vkCmdBeginRenderPass2);
    Load_Device_Function(vkCmdNextSubpass2);
    Load_Device_Function(vkCmdEndRenderPass2);
    Load_Device_Function(vkResetQueryPool);
    Load_Device_Function(vkGetSemaphoreCounterValue);
    Load_Device_Function(vkWaitSemaphores);
    Load_Device_Function(vkSignalSemaphore);
    Load_Device_Function(vkGetBufferDeviceAddress);
    Load_Device_Function(vkGetBufferOpaqueCaptureAddress);
    Load_Device_Function(vkGetDeviceMemoryOpaqueCaptureAddress);
    Load_Device_Function(vkDestroySurfaceKHR);
    Load_Device_Function(vkGetPhysicalDeviceSurfaceSupportKHR);
    Load_Device_Function(vkGetPhysicalDeviceSurfaceCapabilitiesKHR);
    Load_Device_Function(vkGetPhysicalDeviceSurfaceFormatsKHR);
    Load_Device_Function(vkGetPhysicalDeviceSurfacePresentModesKHR);
    Load_Device_Function(vkCreateSwapchainKHR);
    Load_Device_Function(vkDestroySwapchainKHR);
    Load_Device_Function(vkGetSwapchainImagesKHR);
    Load_Device_Function(vkAcquireNextImageKHR);
    Load_Device_Function(vkQueuePresentKHR);
    Load_Device_Function(vkGetDeviceGroupPresentCapabilitiesKHR);
    Load_Device_Function(vkGetDeviceGroupSurfacePresentModesKHR);
    Load_Device_Function(vkGetPhysicalDevicePresentRectanglesKHR);
    Load_Device_Function(vkAcquireNextImage2KHR);
    Load_Device_Function(vkGetPhysicalDeviceDisplayPropertiesKHR);
    Load_Device_Function(vkGetPhysicalDeviceDisplayPlanePropertiesKHR);
    Load_Device_Function(vkGetDisplayPlaneSupportedDisplaysKHR);
    Load_Device_Function(vkGetDisplayModePropertiesKHR);
    Load_Device_Function(vkCreateDisplayModeKHR);
    Load_Device_Function(vkGetDisplayPlaneCapabilitiesKHR);
    Load_Device_Function(vkCreateDisplayPlaneSurfaceKHR);
    Load_Device_Function(vkCreateSharedSwapchainsKHR);
    Load_Device_Function(vkGetPhysicalDeviceFeatures2KHR);
    Load_Device_Function(vkGetPhysicalDeviceProperties2KHR);
    Load_Device_Function(vkGetPhysicalDeviceFormatProperties2KHR);
    Load_Device_Function(vkGetPhysicalDeviceImageFormatProperties2KHR);
    Load_Device_Function(vkGetPhysicalDeviceQueueFamilyProperties2KHR);
    Load_Device_Function(vkGetPhysicalDeviceMemoryProperties2KHR);
    Load_Device_Function(vkGetPhysicalDeviceSparseImageFormatProperties2KHR);
    Load_Device_Function(vkGetDeviceGroupPeerMemoryFeaturesKHR);
    Load_Device_Function(vkCmdSetDeviceMaskKHR);
    Load_Device_Function(vkCmdDispatchBaseKHR);
    Load_Device_Function(vkTrimCommandPoolKHR);
    Load_Device_Function(vkEnumeratePhysicalDeviceGroupsKHR);
    Load_Device_Function(vkGetPhysicalDeviceExternalBufferPropertiesKHR);
    Load_Device_Function(vkGetMemoryFdKHR);
    Load_Device_Function(vkGetMemoryFdPropertiesKHR);
    Load_Device_Function(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR);
    Load_Device_Function(vkImportSemaphoreFdKHR);
    Load_Device_Function(vkGetSemaphoreFdKHR);
    Load_Device_Function(vkCmdPushDescriptorSetKHR);
    Load_Device_Function(vkCmdPushDescriptorSetWithTemplateKHR);
    Load_Device_Function(vkCreateDescriptorUpdateTemplateKHR);
    Load_Device_Function(vkDestroyDescriptorUpdateTemplateKHR);
    Load_Device_Function(vkUpdateDescriptorSetWithTemplateKHR);
    Load_Device_Function(vkCreateRenderPass2KHR);
    Load_Device_Function(vkCmdBeginRenderPass2KHR);
    Load_Device_Function(vkCmdNextSubpass2KHR);
    Load_Device_Function(vkCmdEndRenderPass2KHR);
    Load_Device_Function(vkGetSwapchainStatusKHR);
    Load_Device_Function(vkGetPhysicalDeviceExternalFencePropertiesKHR);
    Load_Device_Function(vkImportFenceFdKHR);
    Load_Device_Function(vkGetFenceFdKHR);
    Load_Device_Function(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR);
    Load_Device_Function(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR);
    Load_Device_Function(vkAcquireProfilingLockKHR);
    Load_Device_Function(vkReleaseProfilingLockKHR);
    Load_Device_Function(vkGetPhysicalDeviceSurfaceCapabilities2KHR);
    Load_Device_Function(vkGetPhysicalDeviceSurfaceFormats2KHR);
    Load_Device_Function(vkGetPhysicalDeviceDisplayProperties2KHR);
    Load_Device_Function(vkGetPhysicalDeviceDisplayPlaneProperties2KHR);
    Load_Device_Function(vkGetDisplayModeProperties2KHR);
    Load_Device_Function(vkGetDisplayPlaneCapabilities2KHR);
    Load_Device_Function(vkGetImageMemoryRequirements2KHR);
    Load_Device_Function(vkGetBufferMemoryRequirements2KHR);
    Load_Device_Function(vkGetImageSparseMemoryRequirements2KHR);
    Load_Device_Function(vkCreateSamplerYcbcrConversionKHR);
    Load_Device_Function(vkDestroySamplerYcbcrConversionKHR);
    Load_Device_Function(vkBindBufferMemory2KHR);
    Load_Device_Function(vkBindImageMemory2KHR);
    Load_Device_Function(vkGetDescriptorSetLayoutSupportKHR);
    Load_Device_Function(vkCmdDrawIndirectCountKHR);
    Load_Device_Function(vkCmdDrawIndexedIndirectCountKHR);
    Load_Device_Function(vkGetSemaphoreCounterValueKHR);
    Load_Device_Function(vkWaitSemaphoresKHR);
    Load_Device_Function(vkSignalSemaphoreKHR);
    Load_Device_Function(vkGetBufferDeviceAddressKHR);
    Load_Device_Function(vkGetBufferOpaqueCaptureAddressKHR);
    Load_Device_Function(vkGetDeviceMemoryOpaqueCaptureAddressKHR);
    Load_Device_Function(vkGetPipelineExecutablePropertiesKHR);
    Load_Device_Function(vkGetPipelineExecutableStatisticsKHR);
    Load_Device_Function(vkGetPipelineExecutableInternalRepresentationsKHR);
    Load_Device_Function(vkDebugReportCallbackEXT);
    Load_Device_Function(vkCreateDebugReportCallbackEXT);
    Load_Device_Function(vkDestroyDebugReportCallbackEXT);
    Load_Device_Function(vkDebugReportMessageEXT);
    Load_Device_Function(vkDebugMarkerSetObjectTagEXT);
    Load_Device_Function(vkDebugMarkerSetObjectNameEXT);
    Load_Device_Function(vkCmdDebugMarkerBeginEXT);
    Load_Device_Function(vkCmdDebugMarkerEndEXT);
    Load_Device_Function(vkCmdDebugMarkerInsertEXT);
    Load_Device_Function(vkCmdBindTransformFeedbackBuffersEXT);
    Load_Device_Function(vkCmdBeginTransformFeedbackEXT);
    Load_Device_Function(vkCmdEndTransformFeedbackEXT);
    Load_Device_Function(vkCmdBeginQueryIndexedEXT);
    Load_Device_Function(vkCmdEndQueryIndexedEXT);
    Load_Device_Function(vkCmdDrawIndirectByteCountEXT);
    Load_Device_Function(vkGetImageViewHandleNVX);
    Load_Device_Function(vkGetImageViewAddressNVX);
    Load_Device_Function(vkCmdDrawIndirectCountAMD);
    Load_Device_Function(vkCmdDrawIndexedIndirectCountAMD);
    Load_Device_Function(vkGetShaderInfoAMD);
    Load_Device_Function(vkGetPhysicalDeviceExternalImageFormatPropertiesNV);
    Load_Device_Function(vkCmdBeginConditionalRenderingEXT);
    Load_Device_Function(vkCmdEndConditionalRenderingEXT);
    Load_Device_Function(vkCmdSetViewportWScalingNV);
    Load_Device_Function(vkReleaseDisplayEXT);
    Load_Device_Function(vkGetPhysicalDeviceSurfaceCapabilities2EXT);
    Load_Device_Function(vkDisplayPowerControlEXT);
    Load_Device_Function(vkRegisterDeviceEventEXT);
    Load_Device_Function(vkRegisterDisplayEventEXT);
    Load_Device_Function(vkGetSwapchainCounterEXT);
    Load_Device_Function(vkGetRefreshCycleDurationGOOGLE);
    Load_Device_Function(vkGetPastPresentationTimingGOOGLE);
    Load_Device_Function(vkCmdSetDiscardRectangleEXT);
    Load_Device_Function(vkSetHdrMetadataEXT);
    Load_Device_Function(vkDebugUtilsMessengerCallbackEXT);
    Load_Device_Function(vkSetDebugUtilsObjectNameEXT);
    Load_Device_Function(vkSetDebugUtilsObjectTagEXT);
    Load_Device_Function(vkQueueBeginDebugUtilsLabelEXT);
    Load_Device_Function(vkQueueEndDebugUtilsLabelEXT);
    Load_Device_Function(vkQueueInsertDebugUtilsLabelEXT);
    Load_Device_Function(vkCmdBeginDebugUtilsLabelEXT);
    Load_Device_Function(vkCmdEndDebugUtilsLabelEXT);
    Load_Device_Function(vkCmdInsertDebugUtilsLabelEXT);
    Load_Device_Function(vkCreateDebugUtilsMessengerEXT);
    Load_Device_Function(vkDestroyDebugUtilsMessengerEXT);
    Load_Device_Function(vkSubmitDebugUtilsMessageEXT);
    Load_Device_Function(vkCmdSetSampleLocationsEXT);
    Load_Device_Function(vkGetPhysicalDeviceMultisamplePropertiesEXT);
    Load_Device_Function(vkGetImageDrmFormatModifierPropertiesEXT);
    Load_Device_Function(vkCreateValidationCacheEXT);
    Load_Device_Function(vkDestroyValidationCacheEXT);
    Load_Device_Function(vkMergeValidationCachesEXT);
    Load_Device_Function(vkGetValidationCacheDataEXT);
    Load_Device_Function(vkCmdBindShadingRateImageNV);
    Load_Device_Function(vkCmdSetViewportShadingRatePaletteNV);
    Load_Device_Function(vkCmdSetCoarseSampleOrderNV);
    Load_Device_Function(vkCreateAccelerationStructureNV);
    Load_Device_Function(vkDestroyAccelerationStructureKHR);
    Load_Device_Function(vkDestroyAccelerationStructureNV);
    Load_Device_Function(vkGetAccelerationStructureMemoryRequirementsNV);
    Load_Device_Function(vkBindAccelerationStructureMemoryKHR);
    Load_Device_Function(vkBindAccelerationStructureMemoryNV);
    Load_Device_Function(vkCmdBuildAccelerationStructureNV);
    Load_Device_Function(vkCmdCopyAccelerationStructureNV);
    Load_Device_Function(vkCmdTraceRaysNV);
    Load_Device_Function(vkCreateRayTracingPipelinesNV);
    Load_Device_Function(vkGetRayTracingShaderGroupHandlesKHR);
    Load_Device_Function(vkGetRayTracingShaderGroupHandlesNV);
    Load_Device_Function(vkGetAccelerationStructureHandleNV);
    Load_Device_Function(vkCmdWriteAccelerationStructuresPropertiesKHR);
    Load_Device_Function(vkCmdWriteAccelerationStructuresPropertiesNV);
    Load_Device_Function(vkCompileDeferredNV);
    Load_Device_Function(vkGetMemoryHostPointerPropertiesEXT);
    Load_Device_Function(vkCmdWriteBufferMarkerAMD);
    Load_Device_Function(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT);
    Load_Device_Function(vkGetCalibratedTimestampsEXT);
    Load_Device_Function(vkCmdDrawMeshTasksNV);
    Load_Device_Function(vkCmdDrawMeshTasksIndirectNV);
    Load_Device_Function(vkCmdDrawMeshTasksIndirectCountNV);
    Load_Device_Function(vkCmdSetExclusiveScissorNV);
    Load_Device_Function(vkCmdSetCheckpointNV);
    Load_Device_Function(vkGetQueueCheckpointDataNV);
    Load_Device_Function(vkInitializePerformanceApiINTEL);
    Load_Device_Function(vkUninitializePerformanceApiINTEL);
    Load_Device_Function(vkCmdSetPerformanceMarkerINTEL);
    Load_Device_Function(vkCmdSetPerformanceStreamMarkerINTEL);
    Load_Device_Function(vkCmdSetPerformanceOverrideINTEL);
    Load_Device_Function(vkAcquirePerformanceConfigurationINTEL);
    Load_Device_Function(vkReleasePerformanceConfigurationINTEL);
    Load_Device_Function(vkQueueSetPerformanceConfigurationINTEL);
    Load_Device_Function(vkGetPerformanceParameterINTEL);
    Load_Device_Function(vkSetLocalDimmingAMD);
    Load_Device_Function(vkGetBufferDeviceAddressEXT);
    Load_Device_Function(vkGetPhysicalDeviceToolPropertiesEXT);
    Load_Device_Function(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV);
    Load_Device_Function(vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV);
    Load_Device_Function(vkCreateHeadlessSurfaceEXT);
    Load_Device_Function(vkCmdSetLineStippleEXT);
    Load_Device_Function(vkResetQueryPoolEXT);
    Load_Device_Function(vkGetGeneratedCommandsMemoryRequirementsNV);
    Load_Device_Function(vkCmdPreprocessGeneratedCommandsNV);
    Load_Device_Function(vkCmdExecuteGeneratedCommandsNV);
    Load_Device_Function(vkCmdBindPipelineShaderGroupNV);
    Load_Device_Function(vkCreateIndirectCommandsLayoutNV);
    Load_Device_Function(vkDestroyIndirectCommandsLayoutNV);
    Load_Device_Function(vkCreatePrivateDataSlotEXT);
    Load_Device_Function(vkDestroyPrivateDataSlotEXT);
    Load_Device_Function(vkSetPrivateDataEXT);
    Load_Device_Function(vkGetPrivateDataEXT);
}


#define Vulkan_Function_Dec(fn) PFN_##fn fn;

Vulkan_Function_Dec(vkAllocationFunction);
Vulkan_Function_Dec(vkReallocationFunction);
Vulkan_Function_Dec(vkFreeFunction);
Vulkan_Function_Dec(vkInternalAllocationNotification);
Vulkan_Function_Dec(vkInternalFreeNotification);
Vulkan_Function_Dec(vkVoidFunction);
Vulkan_Function_Dec(vkCreateInstance);
Vulkan_Function_Dec(vkDestroyInstance);
Vulkan_Function_Dec(vkEnumeratePhysicalDevices);
Vulkan_Function_Dec(vkGetPhysicalDeviceFeatures);
Vulkan_Function_Dec(vkGetPhysicalDeviceFormatProperties);
Vulkan_Function_Dec(vkGetPhysicalDeviceImageFormatProperties);
Vulkan_Function_Dec(vkGetPhysicalDeviceProperties);
Vulkan_Function_Dec(vkGetPhysicalDeviceQueueFamilyProperties);
Vulkan_Function_Dec(vkGetPhysicalDeviceMemoryProperties);
Vulkan_Function_Dec(vkGetInstanceProcAddr);
Vulkan_Function_Dec(vkGetDeviceProcAddr);
Vulkan_Function_Dec(vkCreateDevice);
Vulkan_Function_Dec(vkDestroyDevice);
Vulkan_Function_Dec(vkEnumerateInstanceExtensionProperties);
Vulkan_Function_Dec(vkEnumerateDeviceExtensionProperties);
Vulkan_Function_Dec(vkEnumerateInstanceLayerProperties);
Vulkan_Function_Dec(vkEnumerateDeviceLayerProperties);
Vulkan_Function_Dec(vkGetDeviceQueue);
Vulkan_Function_Dec(vkQueueSubmit);
Vulkan_Function_Dec(vkQueueWaitIdle);
Vulkan_Function_Dec(vkDeviceWaitIdle);
Vulkan_Function_Dec(vkAllocateMemory);
Vulkan_Function_Dec(vkFreeMemory);
Vulkan_Function_Dec(vkMapMemory);
Vulkan_Function_Dec(vkUnmapMemory);
Vulkan_Function_Dec(vkFlushMappedMemoryRanges);
Vulkan_Function_Dec(vkInvalidateMappedMemoryRanges);
Vulkan_Function_Dec(vkGetDeviceMemoryCommitment);
Vulkan_Function_Dec(vkBindBufferMemory);
Vulkan_Function_Dec(vkBindImageMemory);
Vulkan_Function_Dec(vkGetBufferMemoryRequirements);
Vulkan_Function_Dec(vkGetImageMemoryRequirements);
Vulkan_Function_Dec(vkGetImageSparseMemoryRequirements);
Vulkan_Function_Dec(vkGetPhysicalDeviceSparseImageFormatProperties);
Vulkan_Function_Dec(vkQueueBindSparse);
Vulkan_Function_Dec(vkCreateFence);
Vulkan_Function_Dec(vkDestroyFence);
Vulkan_Function_Dec(vkResetFences);
Vulkan_Function_Dec(vkGetFenceStatus);
Vulkan_Function_Dec(vkWaitForFences);
Vulkan_Function_Dec(vkCreateSemaphore);
Vulkan_Function_Dec(vkDestroySemaphore);
Vulkan_Function_Dec(vkCreateEvent);
Vulkan_Function_Dec(vkDestroyEvent);
Vulkan_Function_Dec(vkGetEventStatus);
Vulkan_Function_Dec(vkSetEvent);
Vulkan_Function_Dec(vkResetEvent);
Vulkan_Function_Dec(vkCreateQueryPool);
Vulkan_Function_Dec(vkDestroyQueryPool);
Vulkan_Function_Dec(vkGetQueryPoolResults);
Vulkan_Function_Dec(vkCreateBuffer);
Vulkan_Function_Dec(vkDestroyBuffer);
Vulkan_Function_Dec(vkCreateBufferView);
Vulkan_Function_Dec(vkDestroyBufferView);
Vulkan_Function_Dec(vkCreateImage);
Vulkan_Function_Dec(vkDestroyImage);
Vulkan_Function_Dec(vkGetImageSubresourceLayout);
Vulkan_Function_Dec(vkCreateImageView);
Vulkan_Function_Dec(vkDestroyImageView);
Vulkan_Function_Dec(vkCreateShaderModule);
Vulkan_Function_Dec(vkDestroyShaderModule);
Vulkan_Function_Dec(vkCreatePipelineCache);
Vulkan_Function_Dec(vkDestroyPipelineCache);
Vulkan_Function_Dec(vkGetPipelineCacheData);
Vulkan_Function_Dec(vkMergePipelineCaches);
Vulkan_Function_Dec(vkCreateGraphicsPipelines);
Vulkan_Function_Dec(vkCreateComputePipelines);
Vulkan_Function_Dec(vkDestroyPipeline);
Vulkan_Function_Dec(vkCreatePipelineLayout);
Vulkan_Function_Dec(vkDestroyPipelineLayout);
Vulkan_Function_Dec(vkCreateSampler);
Vulkan_Function_Dec(vkDestroySampler);
Vulkan_Function_Dec(vkCreateDescriptorSetLayout);
Vulkan_Function_Dec(vkDestroyDescriptorSetLayout);
Vulkan_Function_Dec(vkCreateDescriptorPool);
Vulkan_Function_Dec(vkDestroyDescriptorPool);
Vulkan_Function_Dec(vkResetDescriptorPool);
Vulkan_Function_Dec(vkAllocateDescriptorSets);
Vulkan_Function_Dec(vkFreeDescriptorSets);
Vulkan_Function_Dec(vkUpdateDescriptorSets);
Vulkan_Function_Dec(vkCreateFramebuffer);
Vulkan_Function_Dec(vkDestroyFramebuffer);
Vulkan_Function_Dec(vkCreateRenderPass);
Vulkan_Function_Dec(vkDestroyRenderPass);
Vulkan_Function_Dec(vkGetRenderAreaGranularity);
Vulkan_Function_Dec(vkCreateCommandPool);
Vulkan_Function_Dec(vkDestroyCommandPool);
Vulkan_Function_Dec(vkResetCommandPool);
Vulkan_Function_Dec(vkAllocateCommandBuffers);
Vulkan_Function_Dec(vkFreeCommandBuffers);
Vulkan_Function_Dec(vkBeginCommandBuffer);
Vulkan_Function_Dec(vkEndCommandBuffer);
Vulkan_Function_Dec(vkResetCommandBuffer);
Vulkan_Function_Dec(vkCmdBindPipeline);
Vulkan_Function_Dec(vkCmdSetViewport);
Vulkan_Function_Dec(vkCmdSetScissor);
Vulkan_Function_Dec(vkCmdSetLineWidth);
Vulkan_Function_Dec(vkCmdSetDepthBias);
Vulkan_Function_Dec(vkCmdSetBlendConstants);
Vulkan_Function_Dec(vkCmdSetDepthBounds);
Vulkan_Function_Dec(vkCmdSetStencilCompareMask);
Vulkan_Function_Dec(vkCmdSetStencilWriteMask);
Vulkan_Function_Dec(vkCmdSetStencilReference);
Vulkan_Function_Dec(vkCmdBindDescriptorSets);
Vulkan_Function_Dec(vkCmdBindIndexBuffer);
Vulkan_Function_Dec(vkCmdBindVertexBuffers);
Vulkan_Function_Dec(vkCmdDraw);
Vulkan_Function_Dec(vkCmdDrawIndexed);
Vulkan_Function_Dec(vkCmdDrawIndirect);
Vulkan_Function_Dec(vkCmdDrawIndexedIndirect);
Vulkan_Function_Dec(vkCmdDispatch);
Vulkan_Function_Dec(vkCmdDispatchIndirect);
Vulkan_Function_Dec(vkCmdCopyBuffer);
Vulkan_Function_Dec(vkCmdCopyImage);
Vulkan_Function_Dec(vkCmdBlitImage);
Vulkan_Function_Dec(vkCmdCopyBufferToImage);
Vulkan_Function_Dec(vkCmdCopyImageToBuffer);
Vulkan_Function_Dec(vkCmdUpdateBuffer);
Vulkan_Function_Dec(vkCmdFillBuffer);
Vulkan_Function_Dec(vkCmdClearColorImage);
Vulkan_Function_Dec(vkCmdClearDepthStencilImage);
Vulkan_Function_Dec(vkCmdClearAttachments);
Vulkan_Function_Dec(vkCmdResolveImage);
Vulkan_Function_Dec(vkCmdSetEvent);
Vulkan_Function_Dec(vkCmdResetEvent);
Vulkan_Function_Dec(vkCmdWaitEvents);
Vulkan_Function_Dec(vkCmdPipelineBarrier);
Vulkan_Function_Dec(vkCmdBeginQuery);
Vulkan_Function_Dec(vkCmdEndQuery);
Vulkan_Function_Dec(vkCmdResetQueryPool);
Vulkan_Function_Dec(vkCmdWriteTimestamp);
Vulkan_Function_Dec(vkCmdCopyQueryPoolResults);
Vulkan_Function_Dec(vkCmdPushConstants);
Vulkan_Function_Dec(vkCmdBeginRenderPass);
Vulkan_Function_Dec(vkCmdNextSubpass);
Vulkan_Function_Dec(vkCmdEndRenderPass);
Vulkan_Function_Dec(vkCmdExecuteCommands);
Vulkan_Function_Dec(vkEnumerateInstanceVersion);
Vulkan_Function_Dec(vkBindBufferMemory2);
Vulkan_Function_Dec(vkBindImageMemory2);
Vulkan_Function_Dec(vkGetDeviceGroupPeerMemoryFeatures);
Vulkan_Function_Dec(vkCmdSetDeviceMask);
Vulkan_Function_Dec(vkCmdDispatchBase);
Vulkan_Function_Dec(vkEnumeratePhysicalDeviceGroups);
Vulkan_Function_Dec(vkGetImageMemoryRequirements2);
Vulkan_Function_Dec(vkGetBufferMemoryRequirements2);
Vulkan_Function_Dec(vkGetImageSparseMemoryRequirements2);
Vulkan_Function_Dec(vkGetPhysicalDeviceFeatures2);
Vulkan_Function_Dec(vkGetPhysicalDeviceProperties2);
Vulkan_Function_Dec(vkGetPhysicalDeviceFormatProperties2);
Vulkan_Function_Dec(vkGetPhysicalDeviceImageFormatProperties2);
Vulkan_Function_Dec(vkGetPhysicalDeviceQueueFamilyProperties2);
Vulkan_Function_Dec(vkGetPhysicalDeviceMemoryProperties2);
Vulkan_Function_Dec(vkGetPhysicalDeviceSparseImageFormatProperties2);
Vulkan_Function_Dec(vkTrimCommandPool);
Vulkan_Function_Dec(vkGetDeviceQueue2);
Vulkan_Function_Dec(vkCreateSamplerYcbcrConversion);
Vulkan_Function_Dec(vkDestroySamplerYcbcrConversion);
Vulkan_Function_Dec(vkCreateDescriptorUpdateTemplate);
Vulkan_Function_Dec(vkDestroyDescriptorUpdateTemplate);
Vulkan_Function_Dec(vkUpdateDescriptorSetWithTemplate);
Vulkan_Function_Dec(vkGetPhysicalDeviceExternalBufferProperties);
Vulkan_Function_Dec(vkGetPhysicalDeviceExternalFenceProperties);
Vulkan_Function_Dec(vkGetPhysicalDeviceExternalSemaphoreProperties);
Vulkan_Function_Dec(vkGetDescriptorSetLayoutSupport);
Vulkan_Function_Dec(vkCmdDrawIndirectCount);
Vulkan_Function_Dec(vkCmdDrawIndexedIndirectCount);
Vulkan_Function_Dec(vkCreateRenderPass2);
Vulkan_Function_Dec(vkCmdBeginRenderPass2);
Vulkan_Function_Dec(vkCmdNextSubpass2);
Vulkan_Function_Dec(vkCmdEndRenderPass2);
Vulkan_Function_Dec(vkResetQueryPool);
Vulkan_Function_Dec(vkGetSemaphoreCounterValue);
Vulkan_Function_Dec(vkWaitSemaphores);
Vulkan_Function_Dec(vkSignalSemaphore);
Vulkan_Function_Dec(vkGetBufferDeviceAddress);
Vulkan_Function_Dec(vkGetBufferOpaqueCaptureAddress);
Vulkan_Function_Dec(vkGetDeviceMemoryOpaqueCaptureAddress);
Vulkan_Function_Dec(vkDestroySurfaceKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceSurfaceSupportKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceSurfaceCapabilitiesKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceSurfaceFormatsKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceSurfacePresentModesKHR);
Vulkan_Function_Dec(vkCreateSwapchainKHR);
Vulkan_Function_Dec(vkDestroySwapchainKHR);
Vulkan_Function_Dec(vkGetSwapchainImagesKHR);
Vulkan_Function_Dec(vkAcquireNextImageKHR);
Vulkan_Function_Dec(vkQueuePresentKHR);
Vulkan_Function_Dec(vkGetDeviceGroupPresentCapabilitiesKHR);
Vulkan_Function_Dec(vkGetDeviceGroupSurfacePresentModesKHR);
Vulkan_Function_Dec(vkGetPhysicalDevicePresentRectanglesKHR);
Vulkan_Function_Dec(vkAcquireNextImage2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceDisplayPropertiesKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceDisplayPlanePropertiesKHR);
Vulkan_Function_Dec(vkGetDisplayPlaneSupportedDisplaysKHR);
Vulkan_Function_Dec(vkGetDisplayModePropertiesKHR);
Vulkan_Function_Dec(vkCreateDisplayModeKHR);
Vulkan_Function_Dec(vkGetDisplayPlaneCapabilitiesKHR);
Vulkan_Function_Dec(vkCreateDisplayPlaneSurfaceKHR);
Vulkan_Function_Dec(vkCreateSharedSwapchainsKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceFeatures2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceProperties2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceFormatProperties2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceImageFormatProperties2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceQueueFamilyProperties2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceMemoryProperties2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceSparseImageFormatProperties2KHR);
Vulkan_Function_Dec(vkGetDeviceGroupPeerMemoryFeaturesKHR);
Vulkan_Function_Dec(vkCmdSetDeviceMaskKHR);
Vulkan_Function_Dec(vkCmdDispatchBaseKHR);
Vulkan_Function_Dec(vkTrimCommandPoolKHR);
Vulkan_Function_Dec(vkEnumeratePhysicalDeviceGroupsKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceExternalBufferPropertiesKHR);
Vulkan_Function_Dec(vkGetMemoryFdKHR);
Vulkan_Function_Dec(vkGetMemoryFdPropertiesKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR);
Vulkan_Function_Dec(vkImportSemaphoreFdKHR);
Vulkan_Function_Dec(vkGetSemaphoreFdKHR);
Vulkan_Function_Dec(vkCmdPushDescriptorSetKHR);
Vulkan_Function_Dec(vkCmdPushDescriptorSetWithTemplateKHR);
Vulkan_Function_Dec(vkCreateDescriptorUpdateTemplateKHR);
Vulkan_Function_Dec(vkDestroyDescriptorUpdateTemplateKHR);
Vulkan_Function_Dec(vkUpdateDescriptorSetWithTemplateKHR);
Vulkan_Function_Dec(vkCreateRenderPass2KHR);
Vulkan_Function_Dec(vkCmdBeginRenderPass2KHR);
Vulkan_Function_Dec(vkCmdNextSubpass2KHR);
Vulkan_Function_Dec(vkCmdEndRenderPass2KHR);
Vulkan_Function_Dec(vkGetSwapchainStatusKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceExternalFencePropertiesKHR);
Vulkan_Function_Dec(vkImportFenceFdKHR);
Vulkan_Function_Dec(vkGetFenceFdKHR);
Vulkan_Function_Dec(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR);
Vulkan_Function_Dec(vkAcquireProfilingLockKHR);
Vulkan_Function_Dec(vkReleaseProfilingLockKHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceSurfaceCapabilities2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceSurfaceFormats2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceDisplayProperties2KHR);
Vulkan_Function_Dec(vkGetPhysicalDeviceDisplayPlaneProperties2KHR);
Vulkan_Function_Dec(vkGetDisplayModeProperties2KHR);
Vulkan_Function_Dec(vkGetDisplayPlaneCapabilities2KHR);
Vulkan_Function_Dec(vkGetImageMemoryRequirements2KHR);
Vulkan_Function_Dec(vkGetBufferMemoryRequirements2KHR);
Vulkan_Function_Dec(vkGetImageSparseMemoryRequirements2KHR);
Vulkan_Function_Dec(vkCreateSamplerYcbcrConversionKHR);
Vulkan_Function_Dec(vkDestroySamplerYcbcrConversionKHR);
Vulkan_Function_Dec(vkBindBufferMemory2KHR);
Vulkan_Function_Dec(vkBindImageMemory2KHR);
Vulkan_Function_Dec(vkGetDescriptorSetLayoutSupportKHR);
Vulkan_Function_Dec(vkCmdDrawIndirectCountKHR);
Vulkan_Function_Dec(vkCmdDrawIndexedIndirectCountKHR);
Vulkan_Function_Dec(vkGetSemaphoreCounterValueKHR);
Vulkan_Function_Dec(vkWaitSemaphoresKHR);
Vulkan_Function_Dec(vkSignalSemaphoreKHR);
Vulkan_Function_Dec(vkGetBufferDeviceAddressKHR);
Vulkan_Function_Dec(vkGetBufferOpaqueCaptureAddressKHR);
Vulkan_Function_Dec(vkGetDeviceMemoryOpaqueCaptureAddressKHR);
Vulkan_Function_Dec(vkGetPipelineExecutablePropertiesKHR);
Vulkan_Function_Dec(vkGetPipelineExecutableStatisticsKHR);
Vulkan_Function_Dec(vkGetPipelineExecutableInternalRepresentationsKHR);
Vulkan_Function_Dec(vkDebugReportCallbackEXT);
Vulkan_Function_Dec(vkCreateDebugReportCallbackEXT);
Vulkan_Function_Dec(vkDestroyDebugReportCallbackEXT);
Vulkan_Function_Dec(vkDebugReportMessageEXT);
Vulkan_Function_Dec(vkDebugMarkerSetObjectTagEXT);
Vulkan_Function_Dec(vkDebugMarkerSetObjectNameEXT);
Vulkan_Function_Dec(vkCmdDebugMarkerBeginEXT);
Vulkan_Function_Dec(vkCmdDebugMarkerEndEXT);
Vulkan_Function_Dec(vkCmdDebugMarkerInsertEXT);
Vulkan_Function_Dec(vkCmdBindTransformFeedbackBuffersEXT);
Vulkan_Function_Dec(vkCmdBeginTransformFeedbackEXT);
Vulkan_Function_Dec(vkCmdEndTransformFeedbackEXT);
Vulkan_Function_Dec(vkCmdBeginQueryIndexedEXT);
Vulkan_Function_Dec(vkCmdEndQueryIndexedEXT);
Vulkan_Function_Dec(vkCmdDrawIndirectByteCountEXT);
Vulkan_Function_Dec(vkGetImageViewHandleNVX);
Vulkan_Function_Dec(vkGetImageViewAddressNVX);
Vulkan_Function_Dec(vkCmdDrawIndirectCountAMD);
Vulkan_Function_Dec(vkCmdDrawIndexedIndirectCountAMD);
Vulkan_Function_Dec(vkGetShaderInfoAMD);
Vulkan_Function_Dec(vkGetPhysicalDeviceExternalImageFormatPropertiesNV);
Vulkan_Function_Dec(vkCmdBeginConditionalRenderingEXT);
Vulkan_Function_Dec(vkCmdEndConditionalRenderingEXT);
Vulkan_Function_Dec(vkCmdSetViewportWScalingNV);
Vulkan_Function_Dec(vkReleaseDisplayEXT);
Vulkan_Function_Dec(vkGetPhysicalDeviceSurfaceCapabilities2EXT);
Vulkan_Function_Dec(vkDisplayPowerControlEXT);
Vulkan_Function_Dec(vkRegisterDeviceEventEXT);
Vulkan_Function_Dec(vkRegisterDisplayEventEXT);
Vulkan_Function_Dec(vkGetSwapchainCounterEXT);
Vulkan_Function_Dec(vkGetRefreshCycleDurationGOOGLE);
Vulkan_Function_Dec(vkGetPastPresentationTimingGOOGLE);
Vulkan_Function_Dec(vkCmdSetDiscardRectangleEXT);
Vulkan_Function_Dec(vkSetHdrMetadataEXT);
Vulkan_Function_Dec(vkDebugUtilsMessengerCallbackEXT);
Vulkan_Function_Dec(vkSetDebugUtilsObjectNameEXT);
Vulkan_Function_Dec(vkSetDebugUtilsObjectTagEXT);
Vulkan_Function_Dec(vkQueueBeginDebugUtilsLabelEXT);
Vulkan_Function_Dec(vkQueueEndDebugUtilsLabelEXT);
Vulkan_Function_Dec(vkQueueInsertDebugUtilsLabelEXT);
Vulkan_Function_Dec(vkCmdBeginDebugUtilsLabelEXT);
Vulkan_Function_Dec(vkCmdEndDebugUtilsLabelEXT);
Vulkan_Function_Dec(vkCmdInsertDebugUtilsLabelEXT);
Vulkan_Function_Dec(vkCreateDebugUtilsMessengerEXT);
Vulkan_Function_Dec(vkDestroyDebugUtilsMessengerEXT);
Vulkan_Function_Dec(vkSubmitDebugUtilsMessageEXT);
Vulkan_Function_Dec(vkCmdSetSampleLocationsEXT);
Vulkan_Function_Dec(vkGetPhysicalDeviceMultisamplePropertiesEXT);
Vulkan_Function_Dec(vkGetImageDrmFormatModifierPropertiesEXT);
Vulkan_Function_Dec(vkCreateValidationCacheEXT);
Vulkan_Function_Dec(vkDestroyValidationCacheEXT);
Vulkan_Function_Dec(vkMergeValidationCachesEXT);
Vulkan_Function_Dec(vkGetValidationCacheDataEXT);
Vulkan_Function_Dec(vkCmdBindShadingRateImageNV);
Vulkan_Function_Dec(vkCmdSetViewportShadingRatePaletteNV);
Vulkan_Function_Dec(vkCmdSetCoarseSampleOrderNV);
Vulkan_Function_Dec(vkCreateAccelerationStructureNV);
Vulkan_Function_Dec(vkDestroyAccelerationStructureKHR);
Vulkan_Function_Dec(vkDestroyAccelerationStructureNV);
Vulkan_Function_Dec(vkGetAccelerationStructureMemoryRequirementsNV);
Vulkan_Function_Dec(vkBindAccelerationStructureMemoryKHR);
Vulkan_Function_Dec(vkBindAccelerationStructureMemoryNV);
Vulkan_Function_Dec(vkCmdBuildAccelerationStructureNV);
Vulkan_Function_Dec(vkCmdCopyAccelerationStructureNV);
Vulkan_Function_Dec(vkCmdTraceRaysNV);
Vulkan_Function_Dec(vkCreateRayTracingPipelinesNV);
Vulkan_Function_Dec(vkGetRayTracingShaderGroupHandlesKHR);
Vulkan_Function_Dec(vkGetRayTracingShaderGroupHandlesNV);
Vulkan_Function_Dec(vkGetAccelerationStructureHandleNV);
Vulkan_Function_Dec(vkCmdWriteAccelerationStructuresPropertiesKHR);
Vulkan_Function_Dec(vkCmdWriteAccelerationStructuresPropertiesNV);
Vulkan_Function_Dec(vkCompileDeferredNV);
Vulkan_Function_Dec(vkGetMemoryHostPointerPropertiesEXT);
Vulkan_Function_Dec(vkCmdWriteBufferMarkerAMD);
Vulkan_Function_Dec(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT);
Vulkan_Function_Dec(vkGetCalibratedTimestampsEXT);
Vulkan_Function_Dec(vkCmdDrawMeshTasksNV);
Vulkan_Function_Dec(vkCmdDrawMeshTasksIndirectNV);
Vulkan_Function_Dec(vkCmdDrawMeshTasksIndirectCountNV);
Vulkan_Function_Dec(vkCmdSetExclusiveScissorNV);
Vulkan_Function_Dec(vkCmdSetCheckpointNV);
Vulkan_Function_Dec(vkGetQueueCheckpointDataNV);
Vulkan_Function_Dec(vkInitializePerformanceApiINTEL);
Vulkan_Function_Dec(vkUninitializePerformanceApiINTEL);
Vulkan_Function_Dec(vkCmdSetPerformanceMarkerINTEL);
Vulkan_Function_Dec(vkCmdSetPerformanceStreamMarkerINTEL);
Vulkan_Function_Dec(vkCmdSetPerformanceOverrideINTEL);
Vulkan_Function_Dec(vkAcquirePerformanceConfigurationINTEL);
Vulkan_Function_Dec(vkReleasePerformanceConfigurationINTEL);
Vulkan_Function_Dec(vkQueueSetPerformanceConfigurationINTEL);
Vulkan_Function_Dec(vkGetPerformanceParameterINTEL);
Vulkan_Function_Dec(vkSetLocalDimmingAMD);
Vulkan_Function_Dec(vkGetBufferDeviceAddressEXT);
Vulkan_Function_Dec(vkGetPhysicalDeviceToolPropertiesEXT);
Vulkan_Function_Dec(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV);
Vulkan_Function_Dec(vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV);
Vulkan_Function_Dec(vkCreateHeadlessSurfaceEXT);
Vulkan_Function_Dec(vkCmdSetLineStippleEXT);
Vulkan_Function_Dec(vkResetQueryPoolEXT);
Vulkan_Function_Dec(vkGetGeneratedCommandsMemoryRequirementsNV);
Vulkan_Function_Dec(vkCmdPreprocessGeneratedCommandsNV);
Vulkan_Function_Dec(vkCmdExecuteGeneratedCommandsNV);
Vulkan_Function_Dec(vkCmdBindPipelineShaderGroupNV);
Vulkan_Function_Dec(vkCreateIndirectCommandsLayoutNV);
Vulkan_Function_Dec(vkDestroyIndirectCommandsLayoutNV);
Vulkan_Function_Dec(vkCreatePrivateDataSlotEXT);
Vulkan_Function_Dec(vkDestroyPrivateDataSlotEXT);
Vulkan_Function_Dec(vkSetPrivateDataEXT);
Vulkan_Function_Dec(vkGetPrivateDataEXT);

//windows
void* vkCreateWin32SurfaceKHR;
void* vkGetPhysicalDeviceWin32PresentationSupportKHR;
void* vkGetMemoryWin32HandleKHR;
void* vkGetMemoryWin32HandlePropertiesKHR;
void* vkImportSemaphoreWin32HandleKHR;
void* vkGetSemaphoreWin32HandleKHR;
void* vkImportFenceWin32HandleKHR;
void* vkGetFenceWin32HandleKHR;
void* vkGetMemoryWin32HandleNV;
void* vkGetPhysicalDeviceSurfacePresentModes2EXT;
void* vkAcquireFullScreenExclusiveModeEXT;
void* vkReleaseFullScreenExclusiveModeEXT;
void* vkGetDeviceGroupSurfacePresentModes2EXT;

//x11
void* vkCreateXlibSurfaceKHR;
void* vkGetPhysicalDeviceXlibPresentationSupportKHR;

//xcb
void* vkCreateXcbSurfaceKHR;
void* vkGetPhysicalDeviceXcbPresentationSupportKHR;

//wayland
void* vkCreateWaylandSurfaceKHR;
void* vkGetPhysicalDeviceWaylandPresentationSupportKHR;

//android
void* vkCreateAndroidSurfaceKHR;
void* vkGetAndroidHardwareBufferPropertiesANDROID;
void* vkGetMemoryAndroidHardwareBufferANDROID;