From 072b1fe74ad1b9aebc02fa532c2c5d1850292ba0 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sat, 23 Aug 2014 19:07:01 +0100 Subject: [PATCH] Copy post mod colour/depth immediately, not after intervening events --- renderdoc/driver/d3d11/d3d11_analyse.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/renderdoc/driver/d3d11/d3d11_analyse.cpp b/renderdoc/driver/d3d11/d3d11_analyse.cpp index e0754bece..9b0f3f8a7 100644 --- a/renderdoc/driver/d3d11/d3d11_analyse.cpp +++ b/renderdoc/driver/d3d11/d3d11_analyse.cpp @@ -3601,19 +3601,18 @@ vector D3D11DebugManager::PixelHistory(uint32_t frameID, vect SAFE_RELEASE(curBS); SAFE_RELEASE(curDS); - // deliberately include drawcall in this range so that it gets replayed with correct - // state (otherwise this draw e.g. wouldn't write depth when it should) - if(ev < events.size()-1) - m_WrappedDevice->ReplayLog(frameID, events[ev], events[ev+1], eReplay_WithoutDraw); - else - m_WrappedDevice->ReplayLog(frameID, events[ev], events[ev], eReplay_OnlyDraw); + // replay only draw to get immediately post-modification values + m_WrappedDevice->ReplayLog(frameID, events[ev], events[ev], eReplay_OnlyDraw); m_pImmediateContext->CopySubresourceRegion(pixstore, 0, storex*pixstoreStride + 1, storey, 0, targetres, 0, &srcbox); PixelHistoryDepthCopySubresource(depthBound, copyTex ? *copyTex : NULL, pixstoreDepthUAV, depthRes, - copyDepthSRV, copyStencilSRV, srcxyCBuf, storexyCBuf, - storex*pixstoreStride + 1, storey); + copyDepthSRV, copyStencilSRV, srcxyCBuf, storexyCBuf, + storex*pixstoreStride + 1, storey); + if(ev < events.size()-1) + m_WrappedDevice->ReplayLog(frameID, events[ev]+1, events[ev+1], eReplay_WithoutDraw); + SAFE_RELEASE(depthRes); }