diff --git a/renderdoc/core/resource_manager.h b/renderdoc/core/resource_manager.h index 44f591de3..ca0cb5fc6 100644 --- a/renderdoc/core/resource_manager.h +++ b/renderdoc/core/resource_manager.h @@ -327,6 +327,7 @@ struct ResourceRecord m_ChunkLock = new Threading::CriticalSection(); } + void DisableChunkLocking() { SAFE_DELETE(m_ChunkLock); } ~ResourceRecord() { SAFE_DELETE(m_ChunkLock); } void AddParent(ResourceRecord *r) { diff --git a/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp b/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp index aadcdf502..d64e367cd 100644 --- a/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp +++ b/renderdoc/driver/d3d12/d3d12_command_list_wrap.cpp @@ -404,6 +404,8 @@ HRESULT WrappedID3D12GraphicsCommandList::Reset(ID3D12CommandAllocator *pAllocat { bool firstTime = false; + m_ListRecord->DisableChunkLocking(); + // reset for new recording m_ListRecord->DeleteChunks(); m_ListRecord->ContainsExecuteIndirect = false; @@ -422,6 +424,7 @@ HRESULT WrappedID3D12GraphicsCommandList::Reset(ID3D12CommandAllocator *pAllocat m_ListRecord->bakedCommands = GetResourceManager()->AddResourceRecord(ResourceIDGen::GetNewUniqueID()); + m_ListRecord->bakedCommands->DisableChunkLocking(); m_ListRecord->bakedCommands->type = Resource_GraphicsCommandList; m_ListRecord->bakedCommands->InternalResource = true; m_ListRecord->bakedCommands->cmdInfo = new CmdListRecordingInfo(); diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index af01ff49b..c89402e8e 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -633,6 +633,8 @@ VkResult WrappedVulkan::vkAllocateCommandBuffers(VkDevice device, { VkResourceRecord *record = GetResourceManager()->AddResourceRecord(pCommandBuffers[i]); + record->DisableChunkLocking(); + Chunk *chunk = NULL; { @@ -1009,6 +1011,7 @@ VkResult WrappedVulkan::vkBeginCommandBuffer(VkCommandBuffer commandBuffer, record->bakedCommands->Delete(GetResourceManager()); record->bakedCommands = GetResourceManager()->AddResourceRecord(ResourceIDGen::GetNewUniqueID()); + record->bakedCommands->DisableChunkLocking(); record->bakedCommands->InternalResource = true; record->bakedCommands->Resource = (WrappedVkRes *)commandBuffer; record->bakedCommands->cmdInfo = new CmdBufferRecordingInfo();