mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-15 03:08:36 +12:00
d3d12: fix memleak
This commit is contained in:
parent
7db3599648
commit
9e2dfcaba3
1 changed files with 18 additions and 13 deletions
|
@ -85,6 +85,15 @@ void D3D12GSRender::ResourceStorage::Reset()
|
||||||
m_currentScaleOffsetBufferIndex = 0;
|
m_currentScaleOffsetBufferIndex = 0;
|
||||||
m_currentTextureIndex = 0;
|
m_currentTextureIndex = 0;
|
||||||
|
|
||||||
|
for (auto tmp : m_inUseConstantsBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseVertexIndexBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseTextureUploadBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseTexture2D)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
|
||||||
m_commandAllocator->Reset();
|
m_commandAllocator->Reset();
|
||||||
m_textureUploadCommandAllocator->Reset();
|
m_textureUploadCommandAllocator->Reset();
|
||||||
m_downloadCommandAllocator->Reset();
|
m_downloadCommandAllocator->Reset();
|
||||||
|
@ -131,6 +140,14 @@ void D3D12GSRender::ResourceStorage::Init(ID3D12Device *device)
|
||||||
void D3D12GSRender::ResourceStorage::Release()
|
void D3D12GSRender::ResourceStorage::Release()
|
||||||
{
|
{
|
||||||
// NOTE: Should be released only if no command are in flight !
|
// NOTE: Should be released only if no command are in flight !
|
||||||
|
for (auto tmp : m_inUseConstantsBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseVertexIndexBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseTextureUploadBuffers)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
for (auto tmp : m_inUseTexture2D)
|
||||||
|
std::get<2>(tmp)->Release();
|
||||||
|
|
||||||
m_constantsBufferDescriptorsHeap->Release();
|
m_constantsBufferDescriptorsHeap->Release();
|
||||||
m_scaleOffsetDescriptorHeap->Release();
|
m_scaleOffsetDescriptorHeap->Release();
|
||||||
|
@ -896,7 +913,6 @@ void D3D12GSRender::Flip()
|
||||||
m_commandQueueGraphic->Signal(fence.Get(), 1);
|
m_commandQueueGraphic->Signal(fence.Get(), 1);
|
||||||
|
|
||||||
// Flush
|
// Flush
|
||||||
getCurrentResourceStorage().Reset();
|
|
||||||
m_texturesCache.clear();
|
m_texturesCache.clear();
|
||||||
m_texturesRTTs.clear();
|
m_texturesRTTs.clear();
|
||||||
|
|
||||||
|
@ -906,25 +922,14 @@ void D3D12GSRender::Flip()
|
||||||
CloseHandle(getNonCurrentResourceStorage().m_frameFinished);
|
CloseHandle(getNonCurrentResourceStorage().m_frameFinished);
|
||||||
|
|
||||||
for (auto tmp : getNonCurrentResourceStorage().m_inUseConstantsBuffers)
|
for (auto tmp : getNonCurrentResourceStorage().m_inUseConstantsBuffers)
|
||||||
{
|
|
||||||
std::get<2>(tmp)->Release();
|
|
||||||
m_constantsData.m_getPos = std::get<0>(tmp);
|
m_constantsData.m_getPos = std::get<0>(tmp);
|
||||||
}
|
|
||||||
for (auto tmp : getNonCurrentResourceStorage().m_inUseVertexIndexBuffers)
|
for (auto tmp : getNonCurrentResourceStorage().m_inUseVertexIndexBuffers)
|
||||||
{
|
|
||||||
std::get<2>(tmp)->Release();
|
|
||||||
m_vertexIndexData.m_getPos = std::get<0>(tmp);
|
m_vertexIndexData.m_getPos = std::get<0>(tmp);
|
||||||
}
|
|
||||||
for (auto tmp : getNonCurrentResourceStorage().m_inUseTextureUploadBuffers)
|
for (auto tmp : getNonCurrentResourceStorage().m_inUseTextureUploadBuffers)
|
||||||
{
|
|
||||||
std::get<2>(tmp)->Release();
|
|
||||||
m_textureUploadData.m_getPos = std::get<0>(tmp);
|
m_textureUploadData.m_getPos = std::get<0>(tmp);
|
||||||
}
|
|
||||||
for (auto tmp : getNonCurrentResourceStorage().m_inUseTexture2D)
|
for (auto tmp : getNonCurrentResourceStorage().m_inUseTexture2D)
|
||||||
{
|
|
||||||
std::get<2>(tmp)->Release();
|
|
||||||
m_textureData.m_getPos = std::get<0>(tmp);
|
m_textureData.m_getPos = std::get<0>(tmp);
|
||||||
}
|
getNonCurrentResourceStorage().Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
getNonCurrentResourceStorage().m_inUseConstantsBuffers = m_constantsData.m_resourceStoredSinceLastSync;
|
getNonCurrentResourceStorage().m_inUseConstantsBuffers = m_constantsData.m_resourceStoredSinceLastSync;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue