Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2818f93c authored by Jesse Hall's avatar Jesse Hall
Browse files

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)
parent 1d1e65fa
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -4335,6 +4335,20 @@ cmd void vkCmdExecuteCommands(
// 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 @@ cmd VkResult vkQueuePresentKHR(
    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 //
+0 −46
Original line number Diff line number Diff line
@@ -79,52 +79,6 @@ namespace {
    {{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}}


+8 −4
Original line number Diff line number Diff line
@@ -76,20 +76,24 @@ PFN_vkVoidFunction LookupProcAddr(const NameProcEntry (&table)[N], const char* n
const NameProcEntry kInstanceProcTbl[] = {«
  // clang-format off
  {{range $f := SortBy (AllCommands $) "FunctionName"}}
    {{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
»};

const NameProcEntry kDeviceProcTbl[] = {«
  // clang-format off
  {{range $f := SortBy (AllCommands $) "FunctionName"}}
    {{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
»};