diff --git a/src/mangohud.json b/src/mangohud.json index a2fa3184..c2b8f332 100644 --- a/src/mangohud.json +++ b/src/mangohud.json @@ -7,6 +7,10 @@ "library_path": "libMangoHud.so", "implementation_version": "1", "description": "Vulkan Hud Overlay", + "functions": { + "vkGetInstanceProcAddr": "overlay_vkGetInstanceProcAddr", + "vkGetDeviceProcAddr": "overlay_vkGetDeviceProcAddr" + }, "enable_environment": { "MANGOHUD": "1" }, diff --git a/src/overlay.cpp b/src/overlay.cpp index 518a771a..7f40fb03 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -2512,7 +2512,6 @@ static const struct { const char *name; void *ptr; } name_to_funcptr_map[] = { - { "vkGetDeviceProcAddr", (void *) vkGetDeviceProcAddr }, #define ADD_HOOK(fn) { "vk" # fn, (void *) overlay_ ## fn } #define ADD_ALIAS_HOOK(alias, fn) { "vk" # alias, (void *) overlay_ ## fn } ADD_HOOK(AllocateCommandBuffers), @@ -2546,7 +2545,9 @@ static void *find_ptr(const char *name) return NULL; } -VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkDevice dev, +extern "C" { + +VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL overlay_vkGetDeviceProcAddr(VkDevice dev, const char *funcName) { void *ptr = find_ptr(funcName); @@ -2559,7 +2560,7 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkD return device_data->vtable.GetDeviceProcAddr(dev, funcName); } -VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, +VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL overlay_vkGetInstanceProcAddr(VkInstance instance, const char *funcName) { void *ptr = find_ptr(funcName); @@ -2571,3 +2572,5 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(V if (instance_data->vtable.GetInstanceProcAddr == NULL) return NULL; return instance_data->vtable.GetInstanceProcAddr(instance, funcName); } + +}