From 10f83298beafe4b0390ddbd9ec749ea47b9b7977 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 28 Jun 2019 23:55:42 +0100 Subject: [PATCH] Restore D3D11 context bindings before fetching global state * Otherwise the UAV data fetched is from our internal UAVs used for snooping and fetching interpolated data. --- renderdoc/driver/d3d11/d3d11_renderstate.cpp | 2 +- renderdoc/driver/d3d11/d3d11_renderstate.h | 2 +- renderdoc/driver/d3d11/d3d11_shaderdebug.cpp | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/d3d11/d3d11_renderstate.cpp b/renderdoc/driver/d3d11/d3d11_renderstate.cpp index 6118a8c13..3b15ba800 100644 --- a/renderdoc/driver/d3d11/d3d11_renderstate.cpp +++ b/renderdoc/driver/d3d11/d3d11_renderstate.cpp @@ -466,7 +466,7 @@ bool D3D11RenderState::PredicationWouldPass() return PredicateValue != data; } -void D3D11RenderState::ApplyState(WrappedID3D11DeviceContext *context) +void D3D11RenderState::ApplyState(WrappedID3D11DeviceContext *context) const { context->ClearState(); diff --git a/renderdoc/driver/d3d11/d3d11_renderstate.h b/renderdoc/driver/d3d11/d3d11_renderstate.h index b17fb88b1..12b7959c6 100644 --- a/renderdoc/driver/d3d11/d3d11_renderstate.h +++ b/renderdoc/driver/d3d11/d3d11_renderstate.h @@ -51,7 +51,7 @@ struct D3D11RenderState void CopyState(const D3D11RenderState &other); - void ApplyState(WrappedID3D11DeviceContext *context); + void ApplyState(WrappedID3D11DeviceContext *context) const; void Clear(); /////////////////////////////////////////////////////////////////////////////// diff --git a/renderdoc/driver/d3d11/d3d11_shaderdebug.cpp b/renderdoc/driver/d3d11/d3d11_shaderdebug.cpp index 6f93f9b86..587e75105 100644 --- a/renderdoc/driver/d3d11/d3d11_shaderdebug.cpp +++ b/renderdoc/driver/d3d11/d3d11_shaderdebug.cpp @@ -2028,6 +2028,8 @@ void ExtractInputsPS(PSInput IN, float4 debug_pixelPos : SV_Position, uint prim ShaderDebugTrace traces[4]; + tracker.State().ApplyState(m_pImmediateContext); + GlobalState global; GetDebugManager()->CreateShaderGlobalState(global, dxbc, rs->OM.UAVStartSlot, rs->OM.UAVs, rs->PS.SRVs);