diff --git a/renderdoc/driver/d3d11/d3d11_device.cpp b/renderdoc/driver/d3d11/d3d11_device.cpp index 6ca68a14b..ebc026f01 100644 --- a/renderdoc/driver/d3d11/d3d11_device.cpp +++ b/renderdoc/driver/d3d11/d3d11_device.cpp @@ -2704,6 +2704,9 @@ void WrappedID3D11Device::DerivedResource(ID3D11DeviceChild *parent, ResourceId { ResourceId parentId = GetResourceManager()->GetOriginalID(GetIDForDeviceChild(parent)); + if(GetReplay()->GetResourceDesc(parentId).derivedResources.contains(child)) + return; + GetReplay()->GetResourceDesc(parentId).derivedResources.push_back(child); GetReplay()->GetResourceDesc(child).parentResources.push_back(parentId); } diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index 5002e2589..8e97ecaf9 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -3914,6 +3914,9 @@ void WrappedID3D12Device::DerivedResource(ID3D12DeviceChild *parent, ResourceId void WrappedID3D12Device::DerivedResource(ResourceId parent, ResourceId child) { + if(GetReplay()->GetResourceDesc(parent).derivedResources.contains(child)) + return; + GetReplay()->GetResourceDesc(parent).derivedResources.push_back(child); GetReplay()->GetResourceDesc(child).parentResources.push_back(parent); } diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index a1bc6aef9..a5c43dd99 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -3236,6 +3236,9 @@ void WrappedOpenGL::DerivedResource(GLResource parent, ResourceId child) { ResourceId parentId = GetResourceManager()->GetOriginalID(GetResourceManager()->GetResID(parent)); + if(GetReplay()->GetResourceDesc(parentId).derivedResources.contains(child)) + return; + GetReplay()->GetResourceDesc(parentId).derivedResources.push_back(child); GetReplay()->GetResourceDesc(child).parentResources.push_back(parentId); } diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 1efd4cb2e..4ad103926 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -2395,6 +2395,9 @@ void WrappedVulkan::DerivedResource(ResourceId parentLive, ResourceId child) { ResourceId parentId = GetResourceManager()->GetOriginalID(parentLive); + if(GetReplay()->GetResourceDesc(parentId).derivedResources.contains(child)) + return; + GetReplay()->GetResourceDesc(parentId).derivedResources.push_back(child); GetReplay()->GetResourceDesc(child).parentResources.push_back(parentId); }