Skip to content
Permalink
Browse files

- add vk_debug_callstack for getting the location where a vulkan warn…

…ing or error happens
  • Loading branch information...
dpjudas authored and madame-rachelle committed May 9, 2019
1 parent 5f26cda commit 7a5ee7b6de8177db29c35cecc80188c24d995c0c
Showing with 11 additions and 0 deletions.
  1. +11 −0 src/rendering/vulkan/system/vk_device.cpp
@@ -47,6 +47,8 @@
bool I_GetVulkanPlatformExtensions(unsigned int *count, const char **names);
bool I_CreateVulkanSurface(VkInstance instance, VkSurfaceKHR *surface);

FString JitCaptureStackTrace(int framesToSkip, bool includeNativeFrames);

// Physical device info
static std::vector<VulkanPhysicalDevice> AvailableDevices;
static std::vector<VulkanCompatibleDevice> SupportedDevices;
@@ -56,6 +58,8 @@ CUSTOM_CVAR(Bool, vk_debug, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINI
Printf("This won't take effect until " GAMENAME " is restarted.\n");
}

CVAR(Bool, vk_debug_callstack, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)

CUSTOM_CVAR(Int, vk_device, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
{
Printf("This won't take effect until " GAMENAME " is restarted.\n");
@@ -398,6 +402,13 @@ VkBool32 VulkanDevice::DebugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT mess
Printf("\n");
Printf(TEXTCOLOR_RED "[%s] ", typestr);
Printf(TEXTCOLOR_WHITE "%s\n", msg.GetChars());

if (vk_debug_callstack)
{
FString callstack = JitCaptureStackTrace(0, true);
if (!callstack.IsEmpty())
Printf("%s\n", callstack.GetChars());
}
}
}

0 comments on commit 7a5ee7b

Please sign in to comment.
You can’t perform that action at this time.