From 29726388f6ab0baab48d056ddbda753a886e3124 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 28 Jun 2017 10:50:01 +0100 Subject: [PATCH] Fix implementation of D3D12ResourceManager::SerialisableResource * When referencing all resources we use this function to determine what should be excluded, and in this case we want to make sure that e.g. the device record and any swapchain records are included, but the queue/list records or frame capture record should be omitted as they will be included specially. --- renderdoc/driver/d3d12/d3d12_device.h | 1 + renderdoc/driver/d3d12/d3d12_manager.cpp | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/d3d12/d3d12_device.h b/renderdoc/driver/d3d12/d3d12_device.h index 85d21b673..a5e49808f 100644 --- a/renderdoc/driver/d3d12/d3d12_device.h +++ b/renderdoc/driver/d3d12/d3d12_device.h @@ -366,6 +366,7 @@ public: FrameRecord &GetFrameRecord() { return m_FrameRecord; } const DrawcallDescription *GetDrawcall(uint32_t eventID); + ResourceId GetFrameCaptureResourceId() { return m_FrameCaptureRecord->GetResourceID(); } void AddDebugMessage(MessageCategory c, MessageSeverity sv, MessageSource src, std::string d); void AddDebugMessage(const DebugMessage &msg) { m_DebugMessages.push_back(msg); } vector GetDebugMessages(); diff --git a/renderdoc/driver/d3d12/d3d12_manager.cpp b/renderdoc/driver/d3d12/d3d12_manager.cpp index 085df5305..e044f03cc 100644 --- a/renderdoc/driver/d3d12/d3d12_manager.cpp +++ b/renderdoc/driver/d3d12/d3d12_manager.cpp @@ -618,7 +618,10 @@ void D3D12ResourceManager::SerialiseResourceStates(vectorSpecialResource) + if(record->type == Resource_GraphicsCommandList || record->type == Resource_CommandQueue) + return false; + + if(m_Device->GetFrameCaptureResourceId() == id) return false; return true;