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); }