vulkan: Update templates for generated extensions

When the swapchain extensions were added to the API file, only
the libvulkan/get_proc_addr.cpp template was updated. This change
updates the remaining templates, so that when used they generate the
appropriate output with the new API file:

- libvulkan/entry.cpp: Remove hardcoded extension entry points, now
  that they're autogenerated.
- nulldrv/null_driver_gen.cpp: Exclude all extension entry points;
  this only works because the API currently only includes entry points
  implemented by the loader. Eventually we'll want to replace this
  with an extension blacklist.

Change-Id: Id6ea11fb739390d8262fa5ce77c213fbbdeb0148
(cherry picked from commit 1d40de6ecdd74c47ebd40fadd5926cc2984cc91c)
diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
index 23d9951..7616740 100644
--- a/vulkan/api/vulkan.api
+++ b/vulkan/api/vulkan.api
@@ -4335,6 +4335,20 @@
 // Extensions //
 ////////////////
 
+@extension("VK_EXT_KHR_swapchain")
+cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
+        VkPhysicalDevice                        physicalDevice,
+        u32                                     queueFamilyIndex,
+        const VkSurfaceDescriptionKHR*          pSurfaceDescription,
+        VkBool32*                               pSupported) {
+    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
+
+    supported := ?
+    pSupported[0] = supported
+
+    return ?
+}
+
 @extension("VK_EXT_KHR_device_swapchain")
 cmd VkResult vkGetSurfacePropertiesKHR(
         VkDevice                                 device,
@@ -4467,19 +4481,6 @@
     return ?
 }
 
-@extension("VK_EXT_KHR_swapchain")
-cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
-        VkPhysicalDevice                        physicalDevice,
-        u32                                     queueFamilyIndex,
-        const VkSurfaceDescriptionKHR*          pSurfaceDescription,
-        VkBool32*                               pSupported) {
-    physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-
-    supported := ?
-    pSupported[0] = supported
-
-    return ?
-}
 
 ////////////////
 // Validation //
diff --git a/vulkan/libvulkan/entry.cpp.tmpl b/vulkan/libvulkan/entry.cpp.tmpl
index 4e671e5..72185e7 100644
--- a/vulkan/libvulkan/entry.cpp.tmpl
+++ b/vulkan/libvulkan/entry.cpp.tmpl
@@ -79,52 +79,6 @@
     {{end}}
   {{end}}
 
-{{/* Extension functions aren't in the API file yet, so must be special-cased */}}
-__attribute__((visibility("default")))
-VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkSurfaceDescriptionKHR* pSurfaceDescription, VkBool32* pSupported) {
-    return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, pSurfaceDescription, pSupported);
-}

-__attribute__((visibility("default")))
-VkResult vkGetSurfacePropertiesKHR(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, VkSurfacePropertiesKHR* pSurfaceProperties) {
-    return GetVtbl(device).GetSurfacePropertiesKHR(device, pSurfaceDescription, pSurfaceProperties);
-}

-__attribute__((visibility("default")))
-VkResult vkGetSurfaceFormatsKHR(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, uint32_t* pCount, VkSurfaceFormatKHR* pSurfaceFormats) {
-    return GetVtbl(device).GetSurfaceFormatsKHR(device, pSurfaceDescription, pCount, pSurfaceFormats);
-}

-__attribute__((visibility("default")))
-VkResult vkGetSurfacePresentModesKHR(VkDevice device, const VkSurfaceDescriptionKHR* pSurfaceDescription, uint32_t* pCount, VkPresentModeKHR* pPresentModes) {
-    return GetVtbl(device).GetSurfacePresentModesKHR(device, pSurfaceDescription, pCount, pPresentModes);
-}

-__attribute__((visibility("default")))
-VkResult vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, VkSwapchainKHR* pSwapchain) {
-    return GetVtbl(device).CreateSwapchainKHR(device, pCreateInfo, pSwapchain);
-}

-__attribute__((visibility("default")))
-VkResult vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain) {
-    return GetVtbl(device).DestroySwapchainKHR(device, swapchain);
-}

-__attribute__((visibility("default")))
-VkResult vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pCount, VkImage* pSwapchainImages) {
-    return GetVtbl(device).GetSwapchainImagesKHR(device, swapchain, pCount, pSwapchainImages);
-}

-__attribute__((visibility("default")))
-VkResult vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, uint32_t* pImageIndex) {
-    return GetVtbl(device).AcquireNextImageKHR(device, swapchain, timeout, semaphore, pImageIndex);
-}

-__attribute__((visibility("default")))
-VkResult vkQueuePresentKHR(VkQueue queue, VkPresentInfoKHR* pPresentInfo) {
-    return GetVtbl(queue).QueuePresentKHR(queue, pPresentInfo);
-}

 {{end}}
 
 
diff --git a/vulkan/nulldrv/null_driver_gen.cpp.tmpl b/vulkan/nulldrv/null_driver_gen.cpp.tmpl
index 11dda93..d749c6e 100644
--- a/vulkan/nulldrv/null_driver_gen.cpp.tmpl
+++ b/vulkan/nulldrv/null_driver_gen.cpp.tmpl
@@ -76,8 +76,10 @@
 const NameProcEntry kInstanceProcTbl[] = {«
   // clang-format off
   {{range $f := SortBy (AllCommands $) "FunctionName"}}
-    {{if eq (Macro "Vtbl" $f) "Instance"}}
-      {"{{Macro "FunctionName" $f}}", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vk{{Macro "FunctionNameNoPrefix" $f}}>({{Macro "FunctionNameNoPrefix" $f}}))},
+    {{if not (GetAnnotation $f "extension")}}
+      {{if eq (Macro "Vtbl" $f) "Instance"}}
+        {"{{Macro "FunctionName" $f}}", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vk{{Macro "FunctionNameNoPrefix" $f}}>({{Macro "FunctionNameNoPrefix" $f}}))},
+      {{end}}
     {{end}}
   {{end}}
   // clang-format on
@@ -86,8 +88,10 @@
 const NameProcEntry kDeviceProcTbl[] = {«
   // clang-format off
   {{range $f := SortBy (AllCommands $) "FunctionName"}}
-    {{if eq (Macro "Vtbl" $f) "Device"}}
-      {"{{Macro "FunctionName" $f}}", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vk{{Macro "FunctionNameNoPrefix" $f}}>({{Macro "FunctionNameNoPrefix" $f}}))},
+    {{if not (GetAnnotation $f "extension")}}
+      {{if eq (Macro "Vtbl" $f) "Device"}}
+        {"{{Macro "FunctionName" $f}}", reinterpret_cast<PFN_vkVoidFunction>(static_cast<PFN_vk{{Macro "FunctionNameNoPrefix" $f}}>({{Macro "FunctionNameNoPrefix" $f}}))},
+      {{end}}
     {{end}}
   {{end}}
   // clang-format on