From 8e988f90453941448e99c17f7e537b3608ef4c22 Mon Sep 17 00:00:00 2001 From: Steve Karolewics Date: Mon, 27 Apr 2020 10:58:07 -0700 Subject: [PATCH] Eliminate removeIf from barriers that slowed down opening captures --- renderdoc/driver/d3d12/d3d12_manager.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_manager.cpp b/renderdoc/driver/d3d12/d3d12_manager.cpp index 2149bfcde..c34eb46a0 100644 --- a/renderdoc/driver/d3d12/d3d12_manager.cpp +++ b/renderdoc/driver/d3d12/d3d12_manager.cpp @@ -703,15 +703,18 @@ void D3D12ResourceManager::SerialiseResourceStates(SerialiserType &ser, { for(size_t m = 0; m < States.size(); m++) { - D3D12_RESOURCE_BARRIER b; - b.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; - b.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE; - b.Transition.pResource = (ID3D12Resource *)GetCurrentResource(liveid); - b.Transition.Subresource = (UINT)m; - b.Transition.StateBefore = states[liveid][m]; - b.Transition.StateAfter = States[m]; + if(states[liveid][m] != States[m]) + { + D3D12_RESOURCE_BARRIER b; + b.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + b.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE; + b.Transition.pResource = (ID3D12Resource *)GetCurrentResource(liveid); + b.Transition.Subresource = (UINT)m; + b.Transition.StateBefore = states[liveid][m]; + b.Transition.StateAfter = States[m]; - barriers.push_back(b); + barriers.push_back(b); + } } } @@ -719,11 +722,6 @@ void D3D12ResourceManager::SerialiseResourceStates(SerialiserType &ser, srcit++; } - // erase any do-nothing barriers - barriers.removeIf([](const D3D12_RESOURCE_BARRIER &barrier) { - return barrier.Transition.StateBefore == barrier.Transition.StateAfter; - }); - ApplyBarriers(barriers, states); }