// Copyright 2017 The Dawn Authors
//
// 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.

#ifndef DAWNNATIVE_VULKAN_VULKANFUNCTIONS_H_
#define DAWNNATIVE_VULKAN_VULKANFUNCTIONS_H_

#include "common/vulkan_platform.h"

#include "dawn_native/Error.h"

class DynamicLib;

namespace dawn_native::vulkan {

    struct VulkanGlobalInfo;
    struct VulkanDeviceInfo;

    // Stores the Vulkan entry points. Also loads them from the dynamic library
    // and the vkGet*ProcAddress entry points.
    struct VulkanFunctions {
        MaybeError LoadGlobalProcs(const DynamicLib& vulkanLib);
        MaybeError LoadInstanceProcs(VkInstance instance, const VulkanGlobalInfo& globalInfo);
        MaybeError LoadDeviceProcs(VkDevice device, const VulkanDeviceInfo& deviceInfo);

        // ---------- Global procs

        // Initial proc from which we can get all the others
        PFN_vkGetInstanceProcAddr GetInstanceProcAddr = nullptr;

        PFN_vkCreateInstance CreateInstance = nullptr;
        PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties = nullptr;
        PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties = nullptr;
        // DestroyInstance isn't technically a global proc but we want to be able to use it
        // before querying the instance procs in case we need to error out during initialization.
        PFN_vkDestroyInstance DestroyInstance = nullptr;

        // Core Vulkan 1.1
        PFN_vkEnumerateInstanceVersion EnumerateInstanceVersion = nullptr;

        // ---------- Instance procs

        // Core Vulkan 1.0
        PFN_vkCreateDevice CreateDevice = nullptr;
        PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties = nullptr;
        PFN_vkEnumerateDeviceLayerProperties EnumerateDeviceLayerProperties = nullptr;
        PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices = nullptr;
        PFN_vkGetDeviceProcAddr GetDeviceProcAddr = nullptr;
        PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures = nullptr;
        PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties = nullptr;
        PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties =
            nullptr;
        PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties = nullptr;
        PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties = nullptr;
        PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties =
            nullptr;
        PFN_vkGetPhysicalDeviceSparseImageFormatProperties
            GetPhysicalDeviceSparseImageFormatProperties = nullptr;
        // Not technically an instance proc but we want to be able to use it as soon as the
        // device is created.
        PFN_vkDestroyDevice DestroyDevice = nullptr;

        // VK_EXT_debug_utils
        PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT = nullptr;
        PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT = nullptr;
        PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT = nullptr;
        PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT = nullptr;
        PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT = nullptr;
        PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT = nullptr;
        PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT = nullptr;
        PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT = nullptr;
        PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT = nullptr;
        PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT = nullptr;
        PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT = nullptr;

        // VK_KHR_surface
        PFN_vkDestroySurfaceKHR DestroySurfaceKHR = nullptr;
        PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR = nullptr;
        PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR =
            nullptr;
        PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR = nullptr;
        PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR =
            nullptr;

        // Core Vulkan 1.1 promoted extensions, set if either the core version or the extension is
        // present.

        // VK_KHR_external_memory_capabilities
        PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties =
            nullptr;

        // VK_KHR_external_semaphore_capabilities
        PFN_vkGetPhysicalDeviceExternalSemaphoreProperties
            GetPhysicalDeviceExternalSemaphoreProperties = nullptr;

        // VK_KHR_get_physical_device_properties2
        PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2 = nullptr;
        PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2 = nullptr;
        PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2 = nullptr;
        PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2 =
            nullptr;
        PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2 =
            nullptr;
        PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2 = nullptr;
        PFN_vkGetPhysicalDeviceSparseImageFormatProperties2
            GetPhysicalDeviceSparseImageFormatProperties2 = nullptr;

#if defined(VK_USE_PLATFORM_FUCHSIA)
        // FUCHSIA_image_pipe_surface
        PFN_vkCreateImagePipeSurfaceFUCHSIA CreateImagePipeSurfaceFUCHSIA = nullptr;
#endif  // defined(VK_USE_PLATFORM_FUCHSIA)

#if defined(DAWN_ENABLE_BACKEND_METAL)
        // EXT_metal_surface
        PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT = nullptr;
#endif  // defined(DAWN_ENABLE_BACKEND_METAL)

#if defined(DAWN_PLATFORM_WINDOWS)
        // KHR_win32_surface
        PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR = nullptr;
        PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR
            GetPhysicalDeviceWin32PresentationSupportKHR = nullptr;
#endif  // defined(DAWN_PLATFORM_WINDOWS)

#if defined(DAWN_USE_X11)
        // KHR_xlib_surface
        PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR = nullptr;
        PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR
            GetPhysicalDeviceXlibPresentationSupportKHR = nullptr;

        // KHR_xcb_surface
        PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR = nullptr;
        PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR
            GetPhysicalDeviceXcbPresentationSupportKHR = nullptr;
#endif  // defined(DAWN_USE_X11)

        // ---------- Device procs

        // Core Vulkan 1.0
        PFN_vkAllocateCommandBuffers AllocateCommandBuffers = nullptr;
        PFN_vkAllocateDescriptorSets AllocateDescriptorSets = nullptr;
        PFN_vkAllocateMemory AllocateMemory = nullptr;
        PFN_vkBeginCommandBuffer BeginCommandBuffer = nullptr;
        PFN_vkBindBufferMemory BindBufferMemory = nullptr;
        PFN_vkBindImageMemory BindImageMemory = nullptr;
        PFN_vkCmdBeginQuery CmdBeginQuery = nullptr;
        PFN_vkCmdBeginRenderPass CmdBeginRenderPass = nullptr;
        PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets = nullptr;
        PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer = nullptr;
        PFN_vkCmdBindPipeline CmdBindPipeline = nullptr;
        PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers = nullptr;
        PFN_vkCmdBlitImage CmdBlitImage = nullptr;
        PFN_vkCmdClearAttachments CmdClearAttachments = nullptr;
        PFN_vkCmdClearColorImage CmdClearColorImage = nullptr;
        PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage = nullptr;
        PFN_vkCmdCopyBuffer CmdCopyBuffer = nullptr;
        PFN_vkCmdCopyBufferToImage CmdCopyBufferToImage = nullptr;
        PFN_vkCmdCopyImage CmdCopyImage = nullptr;
        PFN_vkCmdCopyImageToBuffer CmdCopyImageToBuffer = nullptr;
        PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults = nullptr;
        PFN_vkCmdDispatch CmdDispatch = nullptr;
        PFN_vkCmdDispatchIndirect CmdDispatchIndirect = nullptr;
        PFN_vkCmdDraw CmdDraw = nullptr;
        PFN_vkCmdDrawIndexed CmdDrawIndexed = nullptr;
        PFN_vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect = nullptr;
        PFN_vkCmdDrawIndirect CmdDrawIndirect = nullptr;
        PFN_vkCmdEndQuery CmdEndQuery = nullptr;
        PFN_vkCmdEndRenderPass CmdEndRenderPass = nullptr;
        PFN_vkCmdExecuteCommands CmdExecuteCommands = nullptr;
        PFN_vkCmdFillBuffer CmdFillBuffer = nullptr;
        PFN_vkCmdNextSubpass CmdNextSubpass = nullptr;
        PFN_vkCmdPipelineBarrier CmdPipelineBarrier = nullptr;
        PFN_vkCmdPushConstants CmdPushConstants = nullptr;
        PFN_vkCmdResetEvent CmdResetEvent = nullptr;
        PFN_vkCmdResetQueryPool CmdResetQueryPool = nullptr;
        PFN_vkCmdResolveImage CmdResolveImage = nullptr;
        PFN_vkCmdSetBlendConstants CmdSetBlendConstants = nullptr;
        PFN_vkCmdSetDepthBias CmdSetDepthBias = nullptr;
        PFN_vkCmdSetDepthBounds CmdSetDepthBounds = nullptr;
        PFN_vkCmdSetEvent CmdSetEvent = nullptr;
        PFN_vkCmdSetLineWidth CmdSetLineWidth = nullptr;
        PFN_vkCmdSetScissor CmdSetScissor = nullptr;
        PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask = nullptr;
        PFN_vkCmdSetStencilReference CmdSetStencilReference = nullptr;
        PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask = nullptr;
        PFN_vkCmdSetViewport CmdSetViewport = nullptr;
        PFN_vkCmdUpdateBuffer CmdUpdateBuffer = nullptr;
        PFN_vkCmdWaitEvents CmdWaitEvents = nullptr;
        PFN_vkCmdWriteTimestamp CmdWriteTimestamp = nullptr;
        PFN_vkCreateBuffer CreateBuffer = nullptr;
        PFN_vkCreateBufferView CreateBufferView = nullptr;
        PFN_vkCreateCommandPool CreateCommandPool = nullptr;
        PFN_vkCreateComputePipelines CreateComputePipelines = nullptr;
        PFN_vkCreateDescriptorPool CreateDescriptorPool = nullptr;
        PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout = nullptr;
        PFN_vkCreateEvent CreateEvent = nullptr;
        PFN_vkCreateFence CreateFence = nullptr;
        PFN_vkCreateFramebuffer CreateFramebuffer = nullptr;
        PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines = nullptr;
        PFN_vkCreateImage CreateImage = nullptr;
        PFN_vkCreateImageView CreateImageView = nullptr;
        PFN_vkCreatePipelineCache CreatePipelineCache = nullptr;
        PFN_vkCreatePipelineLayout CreatePipelineLayout = nullptr;
        PFN_vkCreateQueryPool CreateQueryPool = nullptr;
        PFN_vkCreateRenderPass CreateRenderPass = nullptr;
        PFN_vkCreateSampler CreateSampler = nullptr;
        PFN_vkCreateSemaphore CreateSemaphore = nullptr;
        PFN_vkCreateShaderModule CreateShaderModule = nullptr;
        PFN_vkDestroyBuffer DestroyBuffer = nullptr;
        PFN_vkDestroyBufferView DestroyBufferView = nullptr;
        PFN_vkDestroyCommandPool DestroyCommandPool = nullptr;
        PFN_vkDestroyDescriptorPool DestroyDescriptorPool = nullptr;
        PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout = nullptr;
        PFN_vkDestroyEvent DestroyEvent = nullptr;
        PFN_vkDestroyFence DestroyFence = nullptr;
        PFN_vkDestroyFramebuffer DestroyFramebuffer = nullptr;
        PFN_vkDestroyImage DestroyImage = nullptr;
        PFN_vkDestroyImageView DestroyImageView = nullptr;
        PFN_vkDestroyPipeline DestroyPipeline = nullptr;
        PFN_vkDestroyPipelineCache DestroyPipelineCache = nullptr;
        PFN_vkDestroyPipelineLayout DestroyPipelineLayout = nullptr;
        PFN_vkDestroyQueryPool DestroyQueryPool = nullptr;
        PFN_vkDestroyRenderPass DestroyRenderPass = nullptr;
        PFN_vkDestroySampler DestroySampler = nullptr;
        PFN_vkDestroySemaphore DestroySemaphore = nullptr;
        PFN_vkDestroyShaderModule DestroyShaderModule = nullptr;
        PFN_vkDeviceWaitIdle DeviceWaitIdle = nullptr;
        PFN_vkEndCommandBuffer EndCommandBuffer = nullptr;
        PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges = nullptr;
        PFN_vkFreeCommandBuffers FreeCommandBuffers = nullptr;
        PFN_vkFreeDescriptorSets FreeDescriptorSets = nullptr;
        PFN_vkFreeMemory FreeMemory = nullptr;
        PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements = nullptr;
        PFN_vkGetDeviceMemoryCommitment GetDeviceMemoryCommitment = nullptr;
        PFN_vkGetDeviceQueue GetDeviceQueue = nullptr;
        PFN_vkGetEventStatus GetEventStatus = nullptr;
        PFN_vkGetFenceStatus GetFenceStatus = nullptr;
        PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements = nullptr;
        PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements = nullptr;
        PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout = nullptr;
        PFN_vkGetPipelineCacheData GetPipelineCacheData = nullptr;
        PFN_vkGetQueryPoolResults GetQueryPoolResults = nullptr;
        PFN_vkGetRenderAreaGranularity GetRenderAreaGranularity = nullptr;
        PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges = nullptr;
        PFN_vkMapMemory MapMemory = nullptr;
        PFN_vkMergePipelineCaches MergePipelineCaches = nullptr;
        PFN_vkQueueBindSparse QueueBindSparse = nullptr;
        PFN_vkQueueSubmit QueueSubmit = nullptr;
        PFN_vkQueueWaitIdle QueueWaitIdle = nullptr;
        PFN_vkResetCommandBuffer ResetCommandBuffer = nullptr;
        PFN_vkResetCommandPool ResetCommandPool = nullptr;
        PFN_vkResetDescriptorPool ResetDescriptorPool = nullptr;
        PFN_vkResetEvent ResetEvent = nullptr;
        PFN_vkResetFences ResetFences = nullptr;
        PFN_vkSetEvent SetEvent = nullptr;
        PFN_vkUnmapMemory UnmapMemory = nullptr;
        PFN_vkUpdateDescriptorSets UpdateDescriptorSets = nullptr;
        PFN_vkWaitForFences WaitForFences = nullptr;

        // VK_KHR_external_memory_fd
        PFN_vkGetMemoryFdKHR GetMemoryFdKHR = nullptr;
        PFN_vkGetMemoryFdPropertiesKHR GetMemoryFdPropertiesKHR = nullptr;

        // VK_KHR_external_semaphore_fd
        PFN_vkImportSemaphoreFdKHR ImportSemaphoreFdKHR = nullptr;
        PFN_vkGetSemaphoreFdKHR GetSemaphoreFdKHR = nullptr;

        // VK_KHR_get_memory_requirements2
        PFN_vkGetBufferMemoryRequirements2KHR GetBufferMemoryRequirements2 = nullptr;
        PFN_vkGetImageMemoryRequirements2KHR GetImageMemoryRequirements2 = nullptr;
        PFN_vkGetImageSparseMemoryRequirements2KHR GetImageSparseMemoryRequirements2 = nullptr;

        // VK_KHR_swapchain
        PFN_vkCreateSwapchainKHR CreateSwapchainKHR = nullptr;
        PFN_vkDestroySwapchainKHR DestroySwapchainKHR = nullptr;
        PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR = nullptr;
        PFN_vkAcquireNextImageKHR AcquireNextImageKHR = nullptr;
        PFN_vkQueuePresentKHR QueuePresentKHR = nullptr;

#if VK_USE_PLATFORM_FUCHSIA
        // VK_FUCHSIA_external_memory
        PFN_vkGetMemoryZirconHandleFUCHSIA GetMemoryZirconHandleFUCHSIA = nullptr;
        PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA GetMemoryZirconHandlePropertiesFUCHSIA =
            nullptr;

        // VK_FUCHSIA_external_semaphore
        PFN_vkImportSemaphoreZirconHandleFUCHSIA ImportSemaphoreZirconHandleFUCHSIA = nullptr;
        PFN_vkGetSemaphoreZirconHandleFUCHSIA GetSemaphoreZirconHandleFUCHSIA = nullptr;
#endif
    };

    // Create a wrapper around VkResult in the dawn_native::vulkan namespace. This shadows the
    // default VkResult (::VkResult). This ensures that assigning or creating a VkResult from a raw
    // ::VkResult uses WrapUnsafe. This makes it clear that users of VkResult must be intentional
    // about handling error cases.
    class VkResult {
      public:
        constexpr static VkResult WrapUnsafe(::VkResult value) {
            return VkResult(value);
        }

        constexpr operator ::VkResult() const {
            return mValue;
        }

      private:
        // Private. Use VkResult::WrapUnsafe instead.
        constexpr VkResult(::VkResult value) : mValue(value) {
        }

        ::VkResult mValue;
    };

}  // namespace dawn_native::vulkan

#endif  // DAWNNATIVE_VULKAN_VULKANFUNCTIONS_H_
