[Vulkcan-Loader] Add vulkain.ifs symbol file

See fxr/646766 for explanation of why we are switching from
the previous list of symbols like in vulkan.symbols.api to
ifs.

This needs to land before fxr/646766 and vulkan.symbols.api will
be removed after fxr/646766 lands.

Change-Id: I3fb00b217ebdcd37105613d67d31645b3b783dd7
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/Vulkan-Loader/+/658884
Reviewed-by: John Bauman <jbauman@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index df93cc2..952ead0 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -204,6 +204,8 @@
     if (is_fuchsia) {
       category = "partner"
 
+      symbols_api = "vulkan.ifs"
+
       # The Vulkan loader's interface is defined by standard Khronos vulkan headers
       # which can be obtained separately from the loader implementation itself.
       no_headers = true
diff --git a/vulkan.ifs b/vulkan.ifs
new file mode 100644
index 0000000..411e2a6
--- /dev/null
+++ b/vulkan.ifs
@@ -0,0 +1,212 @@
+--- !ifs-v1
+IfsVersion:      3.0
+SoName:          libvulkan.so
+Symbols:
+  - { Name: vkAcquireNextImage2KHR, Type: Func }
+  - { Name: vkAcquireNextImageKHR, Type: Func }
+  - { Name: vkAllocateCommandBuffers, Type: Func }
+  - { Name: vkAllocateDescriptorSets, Type: Func }
+  - { Name: vkAllocateMemory, Type: Func }
+  - { Name: vkBeginCommandBuffer, Type: Func }
+  - { Name: vkBindBufferMemory, Type: Func }
+  - { Name: vkBindBufferMemory2, Type: Func }
+  - { Name: vkBindImageMemory, Type: Func }
+  - { Name: vkBindImageMemory2, Type: Func }
+  - { Name: vkCmdBeginQuery, Type: Func }
+  - { Name: vkCmdBeginRenderPass, Type: Func }
+  - { Name: vkCmdBeginRenderPass2, Type: Func }
+  - { Name: vkCmdBindDescriptorSets, Type: Func }
+  - { Name: vkCmdBindIndexBuffer, Type: Func }
+  - { Name: vkCmdBindPipeline, Type: Func }
+  - { Name: vkCmdBindVertexBuffers, Type: Func }
+  - { Name: vkCmdBlitImage, Type: Func }
+  - { Name: vkCmdClearAttachments, Type: Func }
+  - { Name: vkCmdClearColorImage, Type: Func }
+  - { Name: vkCmdClearDepthStencilImage, Type: Func }
+  - { Name: vkCmdCopyBuffer, Type: Func }
+  - { Name: vkCmdCopyBufferToImage, Type: Func }
+  - { Name: vkCmdCopyImage, Type: Func }
+  - { Name: vkCmdCopyImageToBuffer, Type: Func }
+  - { Name: vkCmdCopyQueryPoolResults, Type: Func }
+  - { Name: vkCmdDispatch, Type: Func }
+  - { Name: vkCmdDispatchBase, Type: Func }
+  - { Name: vkCmdDispatchIndirect, Type: Func }
+  - { Name: vkCmdDraw, Type: Func }
+  - { Name: vkCmdDrawIndexed, Type: Func }
+  - { Name: vkCmdDrawIndexedIndirect, Type: Func }
+  - { Name: vkCmdDrawIndexedIndirectCount, Type: Func }
+  - { Name: vkCmdDrawIndirect, Type: Func }
+  - { Name: vkCmdDrawIndirectCount, Type: Func }
+  - { Name: vkCmdEndQuery, Type: Func }
+  - { Name: vkCmdEndRenderPass, Type: Func }
+  - { Name: vkCmdEndRenderPass2, Type: Func }
+  - { Name: vkCmdExecuteCommands, Type: Func }
+  - { Name: vkCmdFillBuffer, Type: Func }
+  - { Name: vkCmdNextSubpass, Type: Func }
+  - { Name: vkCmdNextSubpass2, Type: Func }
+  - { Name: vkCmdPipelineBarrier, Type: Func }
+  - { Name: vkCmdPushConstants, Type: Func }
+  - { Name: vkCmdResetEvent, Type: Func }
+  - { Name: vkCmdResetQueryPool, Type: Func }
+  - { Name: vkCmdResolveImage, Type: Func }
+  - { Name: vkCmdSetBlendConstants, Type: Func }
+  - { Name: vkCmdSetDepthBias, Type: Func }
+  - { Name: vkCmdSetDepthBounds, Type: Func }
+  - { Name: vkCmdSetDeviceMask, Type: Func }
+  - { Name: vkCmdSetEvent, Type: Func }
+  - { Name: vkCmdSetLineWidth, Type: Func }
+  - { Name: vkCmdSetScissor, Type: Func }
+  - { Name: vkCmdSetStencilCompareMask, Type: Func }
+  - { Name: vkCmdSetStencilReference, Type: Func }
+  - { Name: vkCmdSetStencilWriteMask, Type: Func }
+  - { Name: vkCmdSetViewport, Type: Func }
+  - { Name: vkCmdUpdateBuffer, Type: Func }
+  - { Name: vkCmdWaitEvents, Type: Func }
+  - { Name: vkCmdWriteTimestamp, Type: Func }
+  - { Name: vkCreateBuffer, Type: Func }
+  - { Name: vkCreateBufferView, Type: Func }
+  - { Name: vkCreateCommandPool, Type: Func }
+  - { Name: vkCreateComputePipelines, Type: Func }
+  - { Name: vkCreateDescriptorPool, Type: Func }
+  - { Name: vkCreateDescriptorSetLayout, Type: Func }
+  - { Name: vkCreateDescriptorUpdateTemplate, Type: Func }
+  - { Name: vkCreateDevice, Type: Func }
+  - { Name: vkCreateDisplayModeKHR, Type: Func }
+  - { Name: vkCreateDisplayPlaneSurfaceKHR, Type: Func }
+  - { Name: vkCreateEvent, Type: Func }
+  - { Name: vkCreateFence, Type: Func }
+  - { Name: vkCreateFramebuffer, Type: Func }
+  - { Name: vkCreateGraphicsPipelines, Type: Func }
+  - { Name: vkCreateImage, Type: Func }
+  - { Name: vkCreateImagePipeSurfaceFUCHSIA, Type: Func }
+  - { Name: vkCreateImageView, Type: Func }
+  - { Name: vkCreateInstance, Type: Func }
+  - { Name: vkCreatePipelineCache, Type: Func }
+  - { Name: vkCreatePipelineLayout, Type: Func }
+  - { Name: vkCreateQueryPool, Type: Func }
+  - { Name: vkCreateRenderPass, Type: Func }
+  - { Name: vkCreateRenderPass2, Type: Func }
+  - { Name: vkCreateSampler, Type: Func }
+  - { Name: vkCreateSamplerYcbcrConversion, Type: Func }
+  - { Name: vkCreateSemaphore, Type: Func }
+  - { Name: vkCreateShaderModule, Type: Func }
+  - { Name: vkCreateSharedSwapchainsKHR, Type: Func }
+  - { Name: vkCreateSwapchainKHR, Type: Func }
+  - { Name: vkDestroyBuffer, Type: Func }
+  - { Name: vkDestroyBufferView, Type: Func }
+  - { Name: vkDestroyCommandPool, Type: Func }
+  - { Name: vkDestroyDescriptorPool, Type: Func }
+  - { Name: vkDestroyDescriptorSetLayout, Type: Func }
+  - { Name: vkDestroyDescriptorUpdateTemplate, Type: Func }
+  - { Name: vkDestroyDevice, Type: Func }
+  - { Name: vkDestroyEvent, Type: Func }
+  - { Name: vkDestroyFence, Type: Func }
+  - { Name: vkDestroyFramebuffer, Type: Func }
+  - { Name: vkDestroyImage, Type: Func }
+  - { Name: vkDestroyImageView, Type: Func }
+  - { Name: vkDestroyInstance, Type: Func }
+  - { Name: vkDestroyPipeline, Type: Func }
+  - { Name: vkDestroyPipelineCache, Type: Func }
+  - { Name: vkDestroyPipelineLayout, Type: Func }
+  - { Name: vkDestroyQueryPool, Type: Func }
+  - { Name: vkDestroyRenderPass, Type: Func }
+  - { Name: vkDestroySampler, Type: Func }
+  - { Name: vkDestroySamplerYcbcrConversion, Type: Func }
+  - { Name: vkDestroySemaphore, Type: Func }
+  - { Name: vkDestroyShaderModule, Type: Func }
+  - { Name: vkDestroySurfaceKHR, Type: Func }
+  - { Name: vkDestroySwapchainKHR, Type: Func }
+  - { Name: vkDeviceWaitIdle, Type: Func }
+  - { Name: vkEndCommandBuffer, Type: Func }
+  - { Name: vkEnumerateDeviceExtensionProperties, Type: Func }
+  - { Name: vkEnumerateDeviceLayerProperties, Type: Func }
+  - { Name: vkEnumerateInstanceExtensionProperties, Type: Func }
+  - { Name: vkEnumerateInstanceLayerProperties, Type: Func }
+  - { Name: vkEnumerateInstanceVersion, Type: Func }
+  - { Name: vkEnumeratePhysicalDeviceGroups, Type: Func }
+  - { Name: vkEnumeratePhysicalDevices, Type: Func }
+  - { Name: vkFlushMappedMemoryRanges, Type: Func }
+  - { Name: vkFreeCommandBuffers, Type: Func }
+  - { Name: vkFreeDescriptorSets, Type: Func }
+  - { Name: vkFreeMemory, Type: Func }
+  - { Name: vkGetBufferDeviceAddress, Type: Func }
+  - { Name: vkGetBufferMemoryRequirements, Type: Func }
+  - { Name: vkGetBufferMemoryRequirements2, Type: Func }
+  - { Name: vkGetBufferOpaqueCaptureAddress, Type: Func }
+  - { Name: vkGetDescriptorSetLayoutSupport, Type: Func }
+  - { Name: vkGetDeviceGroupPeerMemoryFeatures, Type: Func }
+  - { Name: vkGetDeviceGroupPresentCapabilitiesKHR, Type: Func }
+  - { Name: vkGetDeviceGroupSurfacePresentModesKHR, Type: Func }
+  - { Name: vkGetDeviceMemoryCommitment, Type: Func }
+  - { Name: vkGetDeviceMemoryOpaqueCaptureAddress, Type: Func }
+  - { Name: vkGetDeviceProcAddr, Type: Func }
+  - { Name: vkGetDeviceQueue, Type: Func }
+  - { Name: vkGetDeviceQueue2, Type: Func }
+  - { Name: vkGetDisplayModeProperties2KHR, Type: Func }
+  - { Name: vkGetDisplayModePropertiesKHR, Type: Func }
+  - { Name: vkGetDisplayPlaneCapabilities2KHR, Type: Func }
+  - { Name: vkGetDisplayPlaneCapabilitiesKHR, Type: Func }
+  - { Name: vkGetDisplayPlaneSupportedDisplaysKHR, Type: Func }
+  - { Name: vkGetEventStatus, Type: Func }
+  - { Name: vkGetFenceStatus, Type: Func }
+  - { Name: vkGetImageMemoryRequirements, Type: Func }
+  - { Name: vkGetImageMemoryRequirements2, Type: Func }
+  - { Name: vkGetImageSparseMemoryRequirements, Type: Func }
+  - { Name: vkGetImageSparseMemoryRequirements2, Type: Func }
+  - { Name: vkGetImageSubresourceLayout, Type: Func }
+  - { Name: vkGetInstanceProcAddr, Type: Func }
+  - { Name: vkGetPhysicalDeviceDisplayPlaneProperties2KHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceDisplayPlanePropertiesKHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceDisplayProperties2KHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceDisplayPropertiesKHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceExternalBufferProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceExternalFenceProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceExternalSemaphoreProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceFeatures, Type: Func }
+  - { Name: vkGetPhysicalDeviceFeatures2, Type: Func }
+  - { Name: vkGetPhysicalDeviceFormatProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceFormatProperties2, Type: Func }
+  - { Name: vkGetPhysicalDeviceImageFormatProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceImageFormatProperties2, Type: Func }
+  - { Name: vkGetPhysicalDeviceMemoryProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceMemoryProperties2, Type: Func }
+  - { Name: vkGetPhysicalDevicePresentRectanglesKHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceProperties2, Type: Func }
+  - { Name: vkGetPhysicalDeviceQueueFamilyProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceQueueFamilyProperties2, Type: Func }
+  - { Name: vkGetPhysicalDeviceSparseImageFormatProperties, Type: Func }
+  - { Name: vkGetPhysicalDeviceSparseImageFormatProperties2, Type: Func }
+  - { Name: vkGetPhysicalDeviceSurfaceCapabilities2KHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceSurfaceCapabilitiesKHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceSurfaceFormats2KHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceSurfaceFormatsKHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceSurfacePresentModesKHR, Type: Func }
+  - { Name: vkGetPhysicalDeviceSurfaceSupportKHR, Type: Func }
+  - { Name: vkGetPipelineCacheData, Type: Func }
+  - { Name: vkGetQueryPoolResults, Type: Func }
+  - { Name: vkGetRenderAreaGranularity, Type: Func }
+  - { Name: vkGetSemaphoreCounterValue, Type: Func }
+  - { Name: vkGetSwapchainImagesKHR, Type: Func }
+  - { Name: vkInvalidateMappedMemoryRanges, Type: Func }
+  - { Name: vkMapMemory, Type: Func }
+  - { Name: vkMergePipelineCaches, Type: Func }
+  - { Name: vkQueueBindSparse, Type: Func }
+  - { Name: vkQueuePresentKHR, Type: Func }
+  - { Name: vkQueueSubmit, Type: Func }
+  - { Name: vkQueueWaitIdle, Type: Func }
+  - { Name: vkResetCommandBuffer, Type: Func }
+  - { Name: vkResetCommandPool, Type: Func }
+  - { Name: vkResetDescriptorPool, Type: Func }
+  - { Name: vkResetEvent, Type: Func }
+  - { Name: vkResetFences, Type: Func }
+  - { Name: vkResetQueryPool, Type: Func }
+  - { Name: vkSetEvent, Type: Func }
+  - { Name: vkSignalSemaphore, Type: Func }
+  - { Name: vkTrimCommandPool, Type: Func }
+  - { Name: vkUnmapMemory, Type: Func }
+  - { Name: vkUpdateDescriptorSetWithTemplate, Type: Func }
+  - { Name: vkUpdateDescriptorSets, Type: Func }
+  - { Name: vkWaitForFences, Type: Func }
+  - { Name: vkWaitSemaphores, Type: Func }
+...