From f693a9fadc272614776d899ade5fce2aadaa8403 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 11 Dec 2017 19:01:29 +0000 Subject: [PATCH] Remove dependent temp replacement pipes when removing shader replacement --- renderdoc/driver/d3d12/d3d12_replay.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/d3d12/d3d12_replay.cpp b/renderdoc/driver/d3d12/d3d12_replay.cpp index e0854b31d..d882150e9 100644 --- a/renderdoc/driver/d3d12/d3d12_replay.cpp +++ b/renderdoc/driver/d3d12/d3d12_replay.cpp @@ -1626,7 +1626,15 @@ void D3D12Replay::RemoveReplacement(ResourceId id) ResourceId pipeid = rm->GetOriginalID(pipe->GetResourceID()); - rm->RemoveReplacement(pipeid); + if(rm->HasReplacement(pipeid)) + { + // if there was an active replacement, remove the dependent replaced pipelines. + ID3D12DeviceChild *replpipe = rm->GetLiveResource(pipeid); + + rm->RemoveReplacement(pipeid); + + SAFE_RELEASE(replpipe); + } } } }