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

Commit 6bed0c52 authored by Ian Elliott's avatar Ian Elliott Committed by Jesse Hall
Browse files

Properly implement stubhal's vkGetInstanceProcAddr()

It used to always return a crashing-NoOp function for unknown functions.  Now,
it attempt to follow the spec and return either NULL or a non-crashing-NoOp
function where appropriate.

Test: VulkanFeaturesTest
Bug: 68779289
Change-Id: I98f9fd2a0a1bef4a985c46dbce93216488da82e7
(cherry picked from commit 53333057f31bf91765b930b12ec44e9af1bd18f2)
parent 1d990b21
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ VKAPI_ATTR VkResult EnumeratePhysicalDevices(VkInstance /*instance*/,
    return VK_SUCCESS;
}

VKAPI_ATTR PFN_vkVoidFunction GetInstanceProcAddr(VkInstance /*instance*/,
VKAPI_ATTR PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance,
                                                  const char* name) {
    if (strcmp(name, "vkCreateInstance") == 0)
        return reinterpret_cast<PFN_vkVoidFunction>(CreateInstance);
@@ -110,7 +110,9 @@ VKAPI_ATTR PFN_vkVoidFunction GetInstanceProcAddr(VkInstance /*instance*/,
        return reinterpret_cast<PFN_vkVoidFunction>(EnumeratePhysicalDevices);
    if (strcmp(name, "vkGetInstanceProcAddr") == 0)
        return reinterpret_cast<PFN_vkVoidFunction>(GetInstanceProcAddr);

    // Per the spec, return NULL if instance is NULL.
    if (!instance)
        return nullptr;
    // None of the other Vulkan functions should ever be called, as they all
    // take a VkPhysicalDevice or other object obtained from a physical device.
    return reinterpret_cast<PFN_vkVoidFunction>(NoOp);