diff --git a/src/Vulkan/VkGetProcAddress.cpp b/src/Vulkan/VkGetProcAddress.cpp
index b7a51cb..2d4a302 100644
--- a/src/Vulkan/VkGetProcAddress.cpp
+++ b/src/Vulkan/VkGetProcAddress.cpp
@@ -19,218 +19,263 @@
 
 namespace vk
 {
-#define MAKE_VULKAN_ENTRY(aFunction) { #aFunction, reinterpret_cast<PFN_vkVoidFunction>(aFunction) }
-	static const std::unordered_map <std::string, PFN_vkVoidFunction> func_ptrs =
-	{
-		MAKE_VULKAN_ENTRY(vkCreateInstance),
-		MAKE_VULKAN_ENTRY(vkDestroyInstance),
-		MAKE_VULKAN_ENTRY(vkEnumeratePhysicalDevices),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceFeatures),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceFormatProperties),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceImageFormatProperties),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceProperties),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceMemoryProperties),
-		MAKE_VULKAN_ENTRY(vkGetInstanceProcAddr),
-		MAKE_VULKAN_ENTRY(vkGetDeviceProcAddr),
-		MAKE_VULKAN_ENTRY(vkCreateDevice),
-		MAKE_VULKAN_ENTRY(vkDestroyDevice),
-		MAKE_VULKAN_ENTRY(vkEnumerateInstanceExtensionProperties),
-		MAKE_VULKAN_ENTRY(vkEnumerateDeviceExtensionProperties),
-		MAKE_VULKAN_ENTRY(vkEnumerateInstanceLayerProperties),
-		MAKE_VULKAN_ENTRY(vkEnumerateDeviceLayerProperties),
-		MAKE_VULKAN_ENTRY(vkGetDeviceQueue),
-		MAKE_VULKAN_ENTRY(vkQueueSubmit),
-		MAKE_VULKAN_ENTRY(vkQueueWaitIdle),
-		MAKE_VULKAN_ENTRY(vkDeviceWaitIdle),
-		MAKE_VULKAN_ENTRY(vkAllocateMemory),
-		MAKE_VULKAN_ENTRY(vkFreeMemory),
-		MAKE_VULKAN_ENTRY(vkMapMemory),
-		MAKE_VULKAN_ENTRY(vkUnmapMemory),
-		MAKE_VULKAN_ENTRY(vkFlushMappedMemoryRanges),
-		MAKE_VULKAN_ENTRY(vkInvalidateMappedMemoryRanges),
-		MAKE_VULKAN_ENTRY(vkGetDeviceMemoryCommitment),
-		MAKE_VULKAN_ENTRY(vkBindBufferMemory),
-		MAKE_VULKAN_ENTRY(vkBindImageMemory),
-		MAKE_VULKAN_ENTRY(vkGetBufferMemoryRequirements),
-		MAKE_VULKAN_ENTRY(vkGetImageMemoryRequirements),
-		MAKE_VULKAN_ENTRY(vkGetImageSparseMemoryRequirements),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties),
-		MAKE_VULKAN_ENTRY(vkQueueBindSparse),
-		MAKE_VULKAN_ENTRY(vkCreateFence),
-		MAKE_VULKAN_ENTRY(vkDestroyFence),
-		MAKE_VULKAN_ENTRY(vkResetFences),
-		MAKE_VULKAN_ENTRY(vkGetFenceStatus),
-		MAKE_VULKAN_ENTRY(vkWaitForFences),
-		MAKE_VULKAN_ENTRY(vkCreateSemaphore),
-		MAKE_VULKAN_ENTRY(vkDestroySemaphore),
-		MAKE_VULKAN_ENTRY(vkCreateEvent),
-		MAKE_VULKAN_ENTRY(vkDestroyEvent),
-		MAKE_VULKAN_ENTRY(vkGetEventStatus),
-		MAKE_VULKAN_ENTRY(vkSetEvent),
-		MAKE_VULKAN_ENTRY(vkResetEvent),
-		MAKE_VULKAN_ENTRY(vkCreateQueryPool),
-		MAKE_VULKAN_ENTRY(vkDestroyQueryPool),
-		MAKE_VULKAN_ENTRY(vkGetQueryPoolResults),
-		MAKE_VULKAN_ENTRY(vkCreateBuffer),
-		MAKE_VULKAN_ENTRY(vkDestroyBuffer),
-		MAKE_VULKAN_ENTRY(vkCreateBufferView),
-		MAKE_VULKAN_ENTRY(vkDestroyBufferView),
-		MAKE_VULKAN_ENTRY(vkCreateImage),
-		MAKE_VULKAN_ENTRY(vkDestroyImage),
-		MAKE_VULKAN_ENTRY(vkGetImageSubresourceLayout),
-		MAKE_VULKAN_ENTRY(vkCreateImageView),
-		MAKE_VULKAN_ENTRY(vkDestroyImageView),
-		MAKE_VULKAN_ENTRY(vkCreateShaderModule),
-		MAKE_VULKAN_ENTRY(vkDestroyShaderModule),
-		MAKE_VULKAN_ENTRY(vkCreatePipelineCache),
-		MAKE_VULKAN_ENTRY(vkDestroyPipelineCache),
-		MAKE_VULKAN_ENTRY(vkGetPipelineCacheData),
-		MAKE_VULKAN_ENTRY(vkMergePipelineCaches),
-		MAKE_VULKAN_ENTRY(vkCreateGraphicsPipelines),
-		MAKE_VULKAN_ENTRY(vkCreateComputePipelines),
-		MAKE_VULKAN_ENTRY(vkDestroyPipeline),
-		MAKE_VULKAN_ENTRY(vkCreatePipelineLayout),
-		MAKE_VULKAN_ENTRY(vkDestroyPipelineLayout),
-		MAKE_VULKAN_ENTRY(vkCreateSampler),
-		MAKE_VULKAN_ENTRY(vkDestroySampler),
-		MAKE_VULKAN_ENTRY(vkCreateDescriptorSetLayout),
-		MAKE_VULKAN_ENTRY(vkDestroyDescriptorSetLayout),
-		MAKE_VULKAN_ENTRY(vkCreateDescriptorPool),
-		MAKE_VULKAN_ENTRY(vkDestroyDescriptorPool),
-		MAKE_VULKAN_ENTRY(vkResetDescriptorPool),
-		MAKE_VULKAN_ENTRY(vkAllocateDescriptorSets),
-		MAKE_VULKAN_ENTRY(vkFreeDescriptorSets),
-		MAKE_VULKAN_ENTRY(vkUpdateDescriptorSets),
-		MAKE_VULKAN_ENTRY(vkCreateFramebuffer),
-		MAKE_VULKAN_ENTRY(vkDestroyFramebuffer),
-		MAKE_VULKAN_ENTRY(vkCreateRenderPass),
-		MAKE_VULKAN_ENTRY(vkDestroyRenderPass),
-		MAKE_VULKAN_ENTRY(vkGetRenderAreaGranularity),
-		MAKE_VULKAN_ENTRY(vkCreateCommandPool),
-		MAKE_VULKAN_ENTRY(vkDestroyCommandPool),
-		MAKE_VULKAN_ENTRY(vkResetCommandPool),
-		MAKE_VULKAN_ENTRY(vkAllocateCommandBuffers),
-		MAKE_VULKAN_ENTRY(vkFreeCommandBuffers),
-		MAKE_VULKAN_ENTRY(vkBeginCommandBuffer),
-		MAKE_VULKAN_ENTRY(vkEndCommandBuffer),
-		MAKE_VULKAN_ENTRY(vkResetCommandBuffer),
-		MAKE_VULKAN_ENTRY(vkCmdBindPipeline),
-		MAKE_VULKAN_ENTRY(vkCmdSetViewport),
-		MAKE_VULKAN_ENTRY(vkCmdSetScissor),
-		MAKE_VULKAN_ENTRY(vkCmdSetLineWidth),
-		MAKE_VULKAN_ENTRY(vkCmdSetDepthBias),
-		MAKE_VULKAN_ENTRY(vkCmdSetBlendConstants),
-		MAKE_VULKAN_ENTRY(vkCmdSetDepthBounds),
-		MAKE_VULKAN_ENTRY(vkCmdSetStencilCompareMask),
-		MAKE_VULKAN_ENTRY(vkCmdSetStencilWriteMask),
-		MAKE_VULKAN_ENTRY(vkCmdSetStencilReference),
-		MAKE_VULKAN_ENTRY(vkCmdBindDescriptorSets),
-		MAKE_VULKAN_ENTRY(vkCmdBindIndexBuffer),
-		MAKE_VULKAN_ENTRY(vkCmdBindVertexBuffers),
-		MAKE_VULKAN_ENTRY(vkCmdDraw),
-		MAKE_VULKAN_ENTRY(vkCmdDrawIndexed),
-		MAKE_VULKAN_ENTRY(vkCmdDrawIndirect),
-		MAKE_VULKAN_ENTRY(vkCmdDrawIndexedIndirect),
-		MAKE_VULKAN_ENTRY(vkCmdDispatch),
-		MAKE_VULKAN_ENTRY(vkCmdDispatchIndirect),
-		MAKE_VULKAN_ENTRY(vkCmdCopyBuffer),
-		MAKE_VULKAN_ENTRY(vkCmdCopyImage),
-		MAKE_VULKAN_ENTRY(vkCmdBlitImage),
-		MAKE_VULKAN_ENTRY(vkCmdCopyBufferToImage),
-		MAKE_VULKAN_ENTRY(vkCmdCopyImageToBuffer),
-		MAKE_VULKAN_ENTRY(vkCmdUpdateBuffer),
-		MAKE_VULKAN_ENTRY(vkCmdFillBuffer),
-		MAKE_VULKAN_ENTRY(vkCmdClearColorImage),
-		MAKE_VULKAN_ENTRY(vkCmdClearDepthStencilImage),
-		MAKE_VULKAN_ENTRY(vkCmdClearAttachments),
-		MAKE_VULKAN_ENTRY(vkCmdResolveImage),
-		MAKE_VULKAN_ENTRY(vkCmdSetEvent),
-		MAKE_VULKAN_ENTRY(vkCmdResetEvent),
-		MAKE_VULKAN_ENTRY(vkCmdWaitEvents),
-		MAKE_VULKAN_ENTRY(vkCmdPipelineBarrier),
-		MAKE_VULKAN_ENTRY(vkCmdBeginQuery),
-		MAKE_VULKAN_ENTRY(vkCmdEndQuery),
-		MAKE_VULKAN_ENTRY(vkCmdResetQueryPool),
-		MAKE_VULKAN_ENTRY(vkCmdWriteTimestamp),
-		MAKE_VULKAN_ENTRY(vkCmdCopyQueryPoolResults),
-		MAKE_VULKAN_ENTRY(vkCmdPushConstants),
-		MAKE_VULKAN_ENTRY(vkCmdBeginRenderPass),
-		MAKE_VULKAN_ENTRY(vkCmdNextSubpass),
-		MAKE_VULKAN_ENTRY(vkCmdEndRenderPass),
-		MAKE_VULKAN_ENTRY(vkCmdExecuteCommands),
-		MAKE_VULKAN_ENTRY(vkEnumerateInstanceVersion),
-		MAKE_VULKAN_ENTRY(vkBindBufferMemory2),
-		MAKE_VULKAN_ENTRY(vkBindImageMemory2),
-		MAKE_VULKAN_ENTRY(vkGetDeviceGroupPeerMemoryFeatures),
-		MAKE_VULKAN_ENTRY(vkCmdSetDeviceMask),
-		MAKE_VULKAN_ENTRY(vkCmdDispatchBase),
-		MAKE_VULKAN_ENTRY(vkEnumeratePhysicalDeviceGroups),
-		MAKE_VULKAN_ENTRY(vkGetImageMemoryRequirements2),
-		MAKE_VULKAN_ENTRY(vkGetBufferMemoryRequirements2),
-		MAKE_VULKAN_ENTRY(vkGetImageSparseMemoryRequirements2),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceFeatures2),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceProperties2),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceFormatProperties2),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceImageFormatProperties2),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceMemoryProperties2),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2),
-		MAKE_VULKAN_ENTRY(vkTrimCommandPool),
-		MAKE_VULKAN_ENTRY(vkGetDeviceQueue2),
-		MAKE_VULKAN_ENTRY(vkCreateSamplerYcbcrConversion),
-		MAKE_VULKAN_ENTRY(vkDestroySamplerYcbcrConversion),
-		MAKE_VULKAN_ENTRY(vkCreateDescriptorUpdateTemplate),
-		MAKE_VULKAN_ENTRY(vkDestroyDescriptorUpdateTemplate),
-		MAKE_VULKAN_ENTRY(vkUpdateDescriptorSetWithTemplate),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceExternalBufferProperties),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceExternalFenceProperties),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceExternalSemaphoreProperties),
-		MAKE_VULKAN_ENTRY(vkGetDescriptorSetLayoutSupport),
-		// VK_KHR_bind_memory2
-		MAKE_VULKAN_ENTRY(vkBindBufferMemory2KHR),
-		MAKE_VULKAN_ENTRY(vkBindImageMemory2KHR),
-		// VK_KHR_descriptor_update_template
-		MAKE_VULKAN_ENTRY(vkCreateDescriptorUpdateTemplateKHR),
-		MAKE_VULKAN_ENTRY(vkDestroyDescriptorUpdateTemplateKHR),
-		MAKE_VULKAN_ENTRY(vkUpdateDescriptorSetWithTemplateKHR),
-		// VK_KHR_device_group
-		MAKE_VULKAN_ENTRY(vkGetDeviceGroupPeerMemoryFeaturesKHR),
-		MAKE_VULKAN_ENTRY(vkCmdSetDeviceMaskKHR),
-		MAKE_VULKAN_ENTRY(vkCmdDispatchBaseKHR),
-		// VK_KHR_device_group_creation
-		MAKE_VULKAN_ENTRY(vkEnumeratePhysicalDeviceGroupsKHR),
-		// VK_KHR_external_fence_capabilities
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceExternalFencePropertiesKHR),
-		// VK_KHR_external_memory_capabilities
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceExternalBufferPropertiesKHR),
-		// VK_KHR_external_semaphore_capabilities
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR),
-		// VK_KHR_get_memory_requirements2
-		MAKE_VULKAN_ENTRY(vkGetImageMemoryRequirements2KHR),
-		MAKE_VULKAN_ENTRY(vkGetBufferMemoryRequirements2KHR),
-		MAKE_VULKAN_ENTRY(vkGetImageSparseMemoryRequirements2KHR),
-		// VK_KHR_get_physical_device_properties2
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceFeatures2KHR),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceProperties2KHR),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceFormatProperties2KHR),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceImageFormatProperties2KHR),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2KHR),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceMemoryProperties2KHR),
-		MAKE_VULKAN_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2KHR),
-		// VK_KHR_maintenance1
-		MAKE_VULKAN_ENTRY(vkTrimCommandPoolKHR),
-		// VK_KHR_maintenance3
-		MAKE_VULKAN_ENTRY(vkGetDescriptorSetLayoutSupportKHR),
-		// VK_KHR_sampler_ycbcr_conversion
-		MAKE_VULKAN_ENTRY(vkCreateSamplerYcbcrConversionKHR),
-		MAKE_VULKAN_ENTRY(vkDestroySamplerYcbcrConversionKHR),
-	};
-#undef MAKE_VULKAN_ENTRY
 
-	PFN_vkVoidFunction GetProcAddr(const char* pName)
+#define MAKE_VULKAN_GLOBAL_ENTRY(aFunction) { #aFunction, reinterpret_cast<PFN_vkVoidFunction>(aFunction) }
+static const std::unordered_map<std::string, PFN_vkVoidFunction> globalFunctionPointers =
+{
+	MAKE_VULKAN_GLOBAL_ENTRY(vkCreateInstance),
+	MAKE_VULKAN_GLOBAL_ENTRY(vkEnumerateInstanceExtensionProperties),
+	MAKE_VULKAN_GLOBAL_ENTRY(vkEnumerateInstanceLayerProperties),
+	MAKE_VULKAN_GLOBAL_ENTRY(vkEnumerateInstanceVersion),
+};
+#undef MAKE_VULKAN_GLOBAL_ENTRY
+
+#define MAKE_VULKAN_INSTANCE_ENTRY(aFunction) { #aFunction, reinterpret_cast<PFN_vkVoidFunction>(aFunction) }
+static const std::unordered_map<std::string, PFN_vkVoidFunction> instanceFunctionPointers =
+{
+	MAKE_VULKAN_INSTANCE_ENTRY(vkDestroyInstance),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkEnumeratePhysicalDevices),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceFeatures),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceFormatProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceImageFormatProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceMemoryProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkCreateDevice),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkEnumerateDeviceExtensionProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkEnumerateDeviceLayerProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkEnumeratePhysicalDeviceGroups),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceFeatures2),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceProperties2),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceFormatProperties2),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceImageFormatProperties2),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceMemoryProperties2),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceExternalBufferProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceExternalFenceProperties),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceExternalSemaphoreProperties),
+	// VK_KHR_device_group_creation
+	MAKE_VULKAN_INSTANCE_ENTRY(vkEnumeratePhysicalDeviceGroupsKHR),
+	// VK_KHR_external_fence_capabilities
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceExternalFencePropertiesKHR),
+	// VK_KHR_external_memory_capabilities
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceExternalBufferPropertiesKHR),
+	// VK_KHR_external_semaphore_capabilities
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR),
+	// VK_KHR_get_physical_device_properties2
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceFeatures2KHR),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceProperties2KHR),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceFormatProperties2KHR),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceImageFormatProperties2KHR),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2KHR),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceMemoryProperties2KHR),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2KHR),
+};
+#undef MAKE_VULKAN_GLOBAL_ENTRY
+
+#define MAKE_VULKAN_DEVICE_ENTRY(aFunction) { #aFunction, reinterpret_cast<PFN_vkVoidFunction>(aFunction) }
+static const std::unordered_map<std::string, PFN_vkVoidFunction> deviceFunctionPointers =
+{
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetInstanceProcAddr),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceProcAddr),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyDevice),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceQueue),
+	MAKE_VULKAN_DEVICE_ENTRY(vkQueueSubmit),
+	MAKE_VULKAN_DEVICE_ENTRY(vkQueueWaitIdle),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDeviceWaitIdle),
+	MAKE_VULKAN_DEVICE_ENTRY(vkAllocateMemory),
+	MAKE_VULKAN_DEVICE_ENTRY(vkFreeMemory),
+	MAKE_VULKAN_DEVICE_ENTRY(vkMapMemory),
+	MAKE_VULKAN_DEVICE_ENTRY(vkUnmapMemory),
+	MAKE_VULKAN_DEVICE_ENTRY(vkFlushMappedMemoryRanges),
+	MAKE_VULKAN_DEVICE_ENTRY(vkInvalidateMappedMemoryRanges),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceMemoryCommitment),
+	MAKE_VULKAN_DEVICE_ENTRY(vkBindBufferMemory),
+	MAKE_VULKAN_DEVICE_ENTRY(vkBindImageMemory),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetBufferMemoryRequirements),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetImageMemoryRequirements),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetImageSparseMemoryRequirements),
+	MAKE_VULKAN_DEVICE_ENTRY(vkQueueBindSparse),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateFence),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyFence),
+	MAKE_VULKAN_DEVICE_ENTRY(vkResetFences),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetFenceStatus),
+	MAKE_VULKAN_DEVICE_ENTRY(vkWaitForFences),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateSemaphore),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroySemaphore),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateEvent),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyEvent),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetEventStatus),
+	MAKE_VULKAN_DEVICE_ENTRY(vkSetEvent),
+	MAKE_VULKAN_DEVICE_ENTRY(vkResetEvent),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateQueryPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyQueryPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetQueryPoolResults),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateBufferView),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyBufferView),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateImage),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyImage),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetImageSubresourceLayout),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateImageView),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyImageView),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateShaderModule),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyShaderModule),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreatePipelineCache),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyPipelineCache),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetPipelineCacheData),
+	MAKE_VULKAN_DEVICE_ENTRY(vkMergePipelineCaches),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateGraphicsPipelines),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateComputePipelines),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyPipeline),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreatePipelineLayout),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyPipelineLayout),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateSampler),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroySampler),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateDescriptorSetLayout),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyDescriptorSetLayout),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateDescriptorPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyDescriptorPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkResetDescriptorPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkAllocateDescriptorSets),
+	MAKE_VULKAN_DEVICE_ENTRY(vkFreeDescriptorSets),
+	MAKE_VULKAN_DEVICE_ENTRY(vkUpdateDescriptorSets),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateFramebuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyFramebuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateRenderPass),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyRenderPass),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetRenderAreaGranularity),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateCommandPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyCommandPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkResetCommandPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkAllocateCommandBuffers),
+	MAKE_VULKAN_DEVICE_ENTRY(vkFreeCommandBuffers),
+	MAKE_VULKAN_DEVICE_ENTRY(vkBeginCommandBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkEndCommandBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkResetCommandBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdBindPipeline),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetViewport),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetScissor),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetLineWidth),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetDepthBias),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetBlendConstants),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetDepthBounds),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetStencilCompareMask),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetStencilWriteMask),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetStencilReference),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdBindDescriptorSets),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdBindIndexBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdBindVertexBuffers),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdDraw),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdDrawIndexed),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdDrawIndirect),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdDrawIndexedIndirect),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdDispatch),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdDispatchIndirect),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdCopyBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdCopyImage),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdBlitImage),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdCopyBufferToImage),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdCopyImageToBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdUpdateBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdFillBuffer),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdClearColorImage),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdClearDepthStencilImage),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdClearAttachments),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdResolveImage),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetEvent),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdResetEvent),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdWaitEvents),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdPipelineBarrier),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdBeginQuery),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdEndQuery),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdResetQueryPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdWriteTimestamp),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdCopyQueryPoolResults),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdPushConstants),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdBeginRenderPass),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdNextSubpass),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdEndRenderPass),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdExecuteCommands),
+	MAKE_VULKAN_DEVICE_ENTRY(vkBindBufferMemory2),
+	MAKE_VULKAN_DEVICE_ENTRY(vkBindImageMemory2),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceGroupPeerMemoryFeatures),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetDeviceMask),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdDispatchBase),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetImageMemoryRequirements2),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetBufferMemoryRequirements2),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetImageSparseMemoryRequirements2),
+	MAKE_VULKAN_DEVICE_ENTRY(vkTrimCommandPool),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceQueue2),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateSamplerYcbcrConversion),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroySamplerYcbcrConversion),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateDescriptorUpdateTemplate),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyDescriptorUpdateTemplate),
+	MAKE_VULKAN_DEVICE_ENTRY(vkUpdateDescriptorSetWithTemplate),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetDescriptorSetLayoutSupport),
+	// VK_KHR_descriptor_update_template
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateDescriptorUpdateTemplateKHR),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroyDescriptorUpdateTemplateKHR),
+	MAKE_VULKAN_DEVICE_ENTRY(vkUpdateDescriptorSetWithTemplateKHR),
+	// VK_KHR_device_group
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceGroupPeerMemoryFeaturesKHR),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdSetDeviceMaskKHR),
+	MAKE_VULKAN_DEVICE_ENTRY(vkCmdDispatchBaseKHR),
+	// VK_KHR_maintenance1
+	MAKE_VULKAN_DEVICE_ENTRY(vkTrimCommandPoolKHR),
+	// VK_KHR_sampler_ycbcr_conversion
+	MAKE_VULKAN_DEVICE_ENTRY(vkCreateSamplerYcbcrConversionKHR),
+	MAKE_VULKAN_DEVICE_ENTRY(vkDestroySamplerYcbcrConversionKHR),
+	// VK_KHR_bind_memory2
+	MAKE_VULKAN_DEVICE_ENTRY(vkBindBufferMemory2KHR),
+	MAKE_VULKAN_DEVICE_ENTRY(vkBindImageMemory2KHR),
+	// VK_KHR_get_memory_requirements2
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetImageMemoryRequirements2KHR),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetBufferMemoryRequirements2KHR),
+	MAKE_VULKAN_DEVICE_ENTRY(vkGetImageSparseMemoryRequirements2KHR),
+	// VK_KHR_maintenance3
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetDescriptorSetLayoutSupportKHR),
+};
+#undef MAKE_VULKAN_DEVICE_ENTRY
+
+PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName)
+{
+	auto globalFunction = globalFunctionPointers.find(std::string(pName));
+	if(globalFunction != globalFunctionPointers.end())
 	{
-		auto pFunc = func_ptrs.find(std::string(pName));
-		return (pFunc == func_ptrs.end()) ? nullptr : pFunc->second;
+		return globalFunction->second;
 	}
+
+	if(instance != VK_NULL_HANDLE)
+	{
+		auto instanceFunction = instanceFunctionPointers.find(std::string(pName));
+		if(instanceFunction != instanceFunctionPointers.end())
+		{
+			return instanceFunction->second;
+		}
+
+		auto deviceFunction = deviceFunctionPointers.find(std::string(pName));
+		if(deviceFunction != deviceFunctionPointers.end())
+		{
+			return deviceFunction->second;
+		}
+	}
+
+	return nullptr;
+}
+
+PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName)
+{
+	auto deviceFunction = deviceFunctionPointers.find(std::string(pName));
+	if(deviceFunction != deviceFunctionPointers.end())
+	{
+		return deviceFunction->second;
+	}
+
+	return nullptr;
+}
+
 }
