From b63c77ca7d974fb7ade5c70be2cc476a462e559e Mon Sep 17 00:00:00 2001 From: vlj Date: Wed, 3 Jun 2015 00:25:51 +0200 Subject: [PATCH] d3d12: Swap current/non current right after present has been called --- rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp index 8b3a3434ee..09f193a984 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp @@ -908,37 +908,37 @@ void D3D12GSRender::Flip() // Add an event signaling queue completion Microsoft::WRL::ComPtr fence; m_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&fence)); - getCurrentResourceStorage().m_frameFinished = CreateEvent(0, 0, 0, 0); - fence->SetEventOnCompletion(1, getCurrentResourceStorage().m_frameFinished); + getNonCurrentResourceStorage().m_frameFinished = CreateEvent(0, 0, 0, 0); + fence->SetEventOnCompletion(1, getNonCurrentResourceStorage().m_frameFinished); m_commandQueueGraphic->Signal(fence.Get(), 1); // Flush m_texturesCache.clear(); m_texturesRTTs.clear(); - if (getNonCurrentResourceStorage().m_frameFinished) + if (getCurrentResourceStorage().m_frameFinished) { - WaitForSingleObject(getNonCurrentResourceStorage().m_frameFinished, INFINITE); - CloseHandle(getNonCurrentResourceStorage().m_frameFinished); + WaitForSingleObject(getCurrentResourceStorage().m_frameFinished, INFINITE); + CloseHandle(getCurrentResourceStorage().m_frameFinished); - for (auto tmp : getNonCurrentResourceStorage().m_inUseConstantsBuffers) + for (auto tmp : getCurrentResourceStorage().m_inUseConstantsBuffers) m_constantsData.m_getPos = std::get<0>(tmp); - for (auto tmp : getNonCurrentResourceStorage().m_inUseVertexIndexBuffers) + for (auto tmp : getCurrentResourceStorage().m_inUseVertexIndexBuffers) m_vertexIndexData.m_getPos = std::get<0>(tmp); - for (auto tmp : getNonCurrentResourceStorage().m_inUseTextureUploadBuffers) + for (auto tmp : getCurrentResourceStorage().m_inUseTextureUploadBuffers) m_textureUploadData.m_getPos = std::get<0>(tmp); - for (auto tmp : getNonCurrentResourceStorage().m_inUseTexture2D) + for (auto tmp : getCurrentResourceStorage().m_inUseTexture2D) m_textureData.m_getPos = std::get<0>(tmp); - getNonCurrentResourceStorage().Reset(); + getCurrentResourceStorage().Reset(); } - getNonCurrentResourceStorage().m_inUseConstantsBuffers = m_constantsData.m_resourceStoredSinceLastSync; + getCurrentResourceStorage().m_inUseConstantsBuffers = m_constantsData.m_resourceStoredSinceLastSync; m_constantsData.m_resourceStoredSinceLastSync.clear(); - getNonCurrentResourceStorage().m_inUseVertexIndexBuffers = m_vertexIndexData.m_resourceStoredSinceLastSync; + getCurrentResourceStorage().m_inUseVertexIndexBuffers = m_vertexIndexData.m_resourceStoredSinceLastSync; m_vertexIndexData.m_resourceStoredSinceLastSync.clear(); - getNonCurrentResourceStorage().m_inUseTextureUploadBuffers = m_textureUploadData.m_resourceStoredSinceLastSync; + getCurrentResourceStorage().m_inUseTextureUploadBuffers = m_textureUploadData.m_resourceStoredSinceLastSync; m_textureUploadData.m_resourceStoredSinceLastSync.clear(); - getNonCurrentResourceStorage().m_inUseTexture2D = m_textureData.m_resourceStoredSinceLastSync; + getCurrentResourceStorage().m_inUseTexture2D = m_textureData.m_resourceStoredSinceLastSync; m_textureData.m_resourceStoredSinceLastSync.clear(); m_frame->Flip(nullptr);