From 4966ab565afd1871a388f55b15a53601e5bd06b5 Mon Sep 17 00:00:00 2001 From: vlj Date: Sun, 7 Jun 2015 19:12:34 +0200 Subject: [PATCH] d3d12; Clean resource sooner and fix crash with VS debugger. --- rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp index 237dce0c86..2540a6c547 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp @@ -95,6 +95,10 @@ void D3D12GSRender::ResourceStorage::Reset() std::get<2>(tmp)->Release(); for (auto tmp : m_inUseTexture2D) std::get<2>(tmp)->Release(); + m_inUseConstantsBuffers.clear(); + m_inUseVertexIndexBuffers.clear(); + m_inUseTextureUploadBuffers.clear(); + m_inUseTexture2D.clear(); m_commandAllocator->Reset(); m_textureUploadCommandAllocator->Reset(); @@ -1132,6 +1136,14 @@ void D3D12GSRender::Flip() // Flush m_texturesCache.clear(); m_texturesRTTs.clear(); + getNonCurrentResourceStorage().m_inUseConstantsBuffers = m_constantsData.m_resourceStoredSinceLastSync; + m_constantsData.m_resourceStoredSinceLastSync.clear(); + getNonCurrentResourceStorage().m_inUseVertexIndexBuffers = m_vertexIndexData.m_resourceStoredSinceLastSync; + m_vertexIndexData.m_resourceStoredSinceLastSync.clear(); + getNonCurrentResourceStorage().m_inUseTextureUploadBuffers = m_textureUploadData.m_resourceStoredSinceLastSync; + m_textureUploadData.m_resourceStoredSinceLastSync.clear(); + getNonCurrentResourceStorage().m_inUseTexture2D = m_textureData.m_resourceStoredSinceLastSync; + m_textureData.m_resourceStoredSinceLastSync.clear(); if (getCurrentResourceStorage().m_frameFinishedHandle) { @@ -1150,15 +1162,6 @@ void D3D12GSRender::Flip() getCurrentResourceStorage().Reset(); } - getCurrentResourceStorage().m_inUseConstantsBuffers = m_constantsData.m_resourceStoredSinceLastSync; - m_constantsData.m_resourceStoredSinceLastSync.clear(); - getCurrentResourceStorage().m_inUseVertexIndexBuffers = m_vertexIndexData.m_resourceStoredSinceLastSync; - m_vertexIndexData.m_resourceStoredSinceLastSync.clear(); - getCurrentResourceStorage().m_inUseTextureUploadBuffers = m_textureUploadData.m_resourceStoredSinceLastSync; - m_textureUploadData.m_resourceStoredSinceLastSync.clear(); - getCurrentResourceStorage().m_inUseTexture2D = m_textureData.m_resourceStoredSinceLastSync; - m_textureData.m_resourceStoredSinceLastSync.clear(); - m_frame->Flip(nullptr); }