diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index b7a1ce118..7b94186b6 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -598,6 +598,10 @@ bool WrappedVulkan::Serialise_vkCreateDevice( { if(m_PhysicalReplayData[i].phys == physicalDevice) { + // VKTODO super ultra mega hyper hack of great justice + void PopulateDeviceHooks(VkDevice d); + PopulateDeviceHooks(device); + m_PhysicalReplayData[i].dev = device; // VKTODO: shouldn't be 0, 0 m_Real.vkGetDeviceQueue(device, 0, 0, &m_PhysicalReplayData[i].q); diff --git a/renderdoc/driver/vulkan/vk_hooks_linux.cpp b/renderdoc/driver/vulkan/vk_hooks_linux.cpp index 9692d3f08..a28e8a713 100644 --- a/renderdoc/driver/vulkan/vk_hooks_linux.cpp +++ b/renderdoc/driver/vulkan/vk_hooks_linux.cpp @@ -241,6 +241,17 @@ class VulkanHook : LibraryHook DefineHooks(); +void PopulateDeviceHooks(VkDevice d) +{ +#define HACK_WSI(func) VulkanHook::vkhooks.VK.func = (CONCAT(PFN_, func))VulkanHook::vkhooks.GPA_Device(d, STRINGIZE(func)); + HACK_WSI(vkCreateSwapChainWSI) + HACK_WSI(vkDestroySwapChainWSI) + HACK_WSI(vkGetSwapChainInfoWSI) + HACK_WSI(vkAcquireNextImageWSI) + HACK_WSI(vkQueuePresentWSI) +#undef HACK_WSI +} + bool VulkanHook::SetupHooks(VulkanFunctions &VK) { bool success = true;