// Copyright 2018 The SwiftShader Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "VkGetProcAddress.h"

#include <unordered_map>
#include <string>

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)
	{
		auto pFunc = func_ptrs.find(std::string(pName));
		return (pFunc == func_ptrs.end()) ? nullptr : pFunc->second;
	}
}
