From b41e8edfae22954f44a234f12e6481b79f154f2b Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 22 Oct 2015 23:49:12 +0200 Subject: [PATCH] Move TLS initialisation to constructor so it's available on replay too --- renderdoc/driver/vulkan/vk_core.cpp | 15 +++++++++++++++ .../driver/vulkan/wrappers/vk_device_funcs.cpp | 6 ------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 4e7456f8e..093a33243 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -326,6 +326,12 @@ WrappedVulkan::WrappedVulkan(const char *logFilename) m_FrameTimer.Restart(); + threadSerialiserTLSSlot = Threading::AllocateTLSSlot(); + tempMemoryTLSSlot = Threading::AllocateTLSSlot(); + + + // VKTODOHIGH need to deallocate m_ThreadSerialisers and m_ThreadTempMem + m_TotalTime = m_AvgFrametime = m_MinFrametime = m_MaxFrametime = 0.0; m_RootEventID = 1; @@ -416,6 +422,15 @@ WrappedVulkan::~WrappedVulkan() } SAFE_DELETE(m_pSerialiser); + + for(size_t i=0; i < m_ThreadSerialisers.size(); i++) + delete m_ThreadSerialisers[i]; + + for(size_t i=0; i < m_ThreadTempMem.size(); i++) + { + delete[] m_ThreadTempMem[i]->memory; + delete m_ThreadTempMem[i]; + } } VkCmdBuffer WrappedVulkan::GetNextCmd() diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 76967cf15..51765d25a 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -38,12 +38,6 @@ VkResult WrappedVulkan::vkCreateInstance( VkResult ret = GetInstanceDispatchTable(*pInstance)->CreateInstance(pCreateInfo, &inst); - // VKTODOHIGH need to deallocate these - threadSerialiserTLSSlot = Threading::AllocateTLSSlot(); - tempMemoryTLSSlot = Threading::AllocateTLSSlot(); - - // VKTODOHIGH need to deallocate m_ThreadSerialisers and m_ThreadTempMem - GetResourceManager()->WrapResource(inst, inst); if(ret != VK_SUCCESS)